In [ ]:
. ./nbs_header.ps1
. ./core.ps1
In [ ]:
{ pwsh ../apps/builder/build.ps1 } | Invoke-Block
── markdown ────────────────────────────────────────────────────────────────────
│ # DibParser (Polyglot)

── fsharp ──────────────────────────────────────────────────────────────────────
#r 
@"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan
dard2.1/FSharp.Control.AsyncSeq.dll"
#r 
@"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6.
0/System.Reactive.dll"
#r 
@"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/
netstandard2.0/System.Reactive.Linq.dll"
#r 
@"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll"
#r 
@"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP
arsec.dll"
#r 
@"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP
arsecCS.dll"

── pwsh ────────────────────────────────────────────────────────────────────────
ls ~/.nuget/packages/argu

── [ 235.76ms - stdout ] ───────────────────────────────────────────────────────
│ 6.2.4
│ 

── fsharp ──────────────────────────────────────────────────────────────────────
#if !INTERACTIVE
open Lib
#endif

── fsharp ──────────────────────────────────────────────────────────────────────
open Common
open FParsec
open SpiralFileSystem.Operators

── markdown ────────────────────────────────────────────────────────────────────
│ ## escapeCell (test)

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let inline escapeCell input =
    input
    |> SpiralSm.split "\n"
    |> Array.map (function
        | line when line |> SpiralSm.starts_with "\\#!" || line |> 
SpiralSm.starts_with "\\#r" ->
            System.Text.RegularExpressions.Regex.Replace (line, "^\\\\#", "#")
        | line -> line
    )
    |> SpiralSm.concat "\n"

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

$"a{nl}\\#!magic{nl}b{nl}"
|> escapeCell
|> _assertEqual (
    $"a{nl}#!magic{nl}b{nl}"
)

── [ 52.45ms - stdout ] ────────────────────────────────────────────────────────
│ "a
│ #!magic
│ b
│ "
│ 
│ 

── markdown ────────────────────────────────────────────────────────────────────
│ ## magicMarker

── fsharp ──────────────────────────────────────────────────────────────────────
let magicMarker : Parser<string, unit> = pstring "#!"

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"#!magic"
|> run magicMarker
|> _assertEqual (
    Success ("#!", (), Position ("", 2, 1, 3))
)

── [ 28.66ms - stdout ] ────────────────────────────────────────────────────────
│ Success: "#!"
│ 
│ 

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"##!magic"
|> run magicMarker
|> _assertEqual (
    Failure (
        $"Error in Ln: 1 Col: 1{nl}##!magic{nl}^{nl}Expecting: '#!'{nl}",
        ParserError (
            Position ("", 0, 1, 1),
            (),
            ErrorMessageList (ExpectedString "#!")
        ),
        ()
    )
)

── [ 27.15ms - stdout ] ────────────────────────────────────────────────────────
│ Failure:
│ Error in Ln: 1 Col: 1
│ ##!magic
│ ^
│ Expecting: '#!'
│ 
│ 
│ 

── markdown ────────────────────────────────────────────────────────────────────
│ ## magicCommand

── fsharp ──────────────────────────────────────────────────────────────────────
let magicCommand =
    magicMarker
    >>. manyTill anyChar newline
    |>> (System.String.Concat >> SpiralSm.trim)

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"#!magic

a"
|> run magicCommand
|> _assertEqual (
    Success ("magic", (), Position ("", 8, 2, 1))
)

── [ 17.55ms - stdout ] ────────────────────────────────────────────────────────
│ Success: "magic"
│ 
│ 

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

" #!magic

a"
|> run magicCommand
|> _assertEqual (
    Failure (
        $"Error in Ln: 1 Col: 1{nl} #!magic{nl}^{nl}Expecting: '#!'{nl}",
        ParserError (
            Position ("", 0, 1, 1),
            (),
            ErrorMessageList (ExpectedString "#!")
        ),
        ()
    )
)

── [ 18.43ms - stdout ] ────────────────────────────────────────────────────────
│ Failure:
│ Error in Ln: 1 Col: 1
│  #!magic
│ ^
│ Expecting: '#!'
│ 
│ 
│ 

── markdown ────────────────────────────────────────────────────────────────────
│ ## content

── fsharp ──────────────────────────────────────────────────────────────────────
let content =
    (newline >>. magicMarker) <|> (eof >>. preturn "")
    |> attempt
    |> lookAhead
    |> manyTill anyChar
    |>> (System.String.Concat >> SpiralSm.trim)

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"#!magic


a


"
|> run content
|> _assertEqual (
    Success ("#!magic


a", (), Position ("", 14, 7, 1))
)

── [ 17.80ms - stdout ] ────────────────────────────────────────────────────────
│ Success: "#!magic
│ 
│ 
│ a"
│ 
│ 

── markdown ────────────────────────────────────────────────────────────────────
│ ## Output

── fsharp ──────────────────────────────────────────────────────────────────────
type Output =
    | Fs
    | Md
    | Spi
    | Spir

── markdown ────────────────────────────────────────────────────────────────────
│ ## Magic

── fsharp ──────────────────────────────────────────────────────────────────────
type Magic =
    | Fsharp
    | Markdown
    | Spiral of Output
    | Magic of string

── markdown ────────────────────────────────────────────────────────────────────
│ ## kernelOutputs

── fsharp ──────────────────────────────────────────────────────────────────────
let inline kernelOutputs magic =
    match magic with
    | Fsharp -> [[ Fs ]]
    | Markdown -> [[ Md ]]
    | Spiral output -> [[ output ]]
    | _ -> [[]]

── markdown ────────────────────────────────────────────────────────────────────
│ ## Block

── fsharp ──────────────────────────────────────────────────────────────────────
type Block =
    {
        magic : Magic
        content : string
    }

── markdown ────────────────────────────────────────────────────────────────────
│ ## block

── fsharp ──────────────────────────────────────────────────────────────────────
let block =
    pipe2
        magicCommand
        content
        (fun magic content ->
            let magic, content =
                match magic with
                | "fsharp" -> Fsharp, content
                | "markdown" -> Markdown, content
                | "spiral" ->
                    let output = if content |> SpiralSm.contains "//// real\n" 
then Spir else Spi
                    let content =
                        if output = Spi
                        then content
                        else
                            content
                            |> SpiralSm.replace "//// real\n\n" ""
                            |> SpiralSm.replace "//// real\n" ""
                    Spiral output, content
                | magic -> magic |> Magic, content
            {
                magic = magic
                content = content
            })

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"#!magic


a


"
|> run block
|> _assertEqual (
    Success (
        { magic = Magic "magic"; content = "a" },
        (),
        Position ("", 14, 7, 1)
    )
)

── [ 26.59ms - stdout ] ────────────────────────────────────────────────────────
│ Success: { magic = Magic "magic"
│   content = "a" }
│ 
│ 

── markdown ────────────────────────────────────────────────────────────────────
│ ## blocks

── fsharp ──────────────────────────────────────────────────────────────────────
let blocks =
    skipMany newline
    >>. sepEndBy block (skipMany1 newline)

── fsharp ──────────────────────────────────────────────────────────────────────
//// test


"#!magic1

a

\#!magic2

b

"
|> escapeCell
|> run blocks
|> _assertEqual (
    Success (
        [[
            { magic = Magic "magic1"; content = "a" }
            { magic = Magic "magic2"; content = "b" }
        ]],
        (),
        Position ("", 26, 9, 1)
    )
)

── [ 27.37ms - stdout ] ────────────────────────────────────────────────────────
│ Success: [{ magic = Magic "magic1"
│    content = "a" }; { magic = Magic "magic2"
│                       content = "b" }]
│ 
│ 

── markdown ────────────────────────────────────────────────────────────────────
│ ## formatBlock

── fsharp ──────────────────────────────────────────────────────────────────────
let inline formatBlock output (block : Block) =
    match output, block with
    | output, { magic = Markdown; content = content } ->
        let markdownComment =
            match output with
            | Spi | Spir -> "/// "
            | Fs -> "/// "
            | _ -> ""
        content
        |> SpiralSm.split "\n"
        |> Array.map (SpiralSm.trim_end [[||]])
        |> Array.filter (SpiralSm.ends_with " (test)" >> not)
        |> Array.map (function
            | "" -> markdownComment
            | line -> System.Text.RegularExpressions.Regex.Replace (line, 
"^\\s*", $"$&{markdownComment}")
        )
        |> SpiralSm.concat "\n"
    | Fs, { magic = Fsharp; content = content } ->
        let trimmedContent = content |> SpiralSm.trim
        if trimmedContent |> SpiralSm.contains "//// test\n"
            || trimmedContent |> SpiralSm.contains "//// ignore\n"
        then ""
        else
            content
            |> SpiralSm.split "\n"
            |> Array.filter (SpiralSm.trim_start [[||]] >> SpiralSm.starts_with 
"#r" >> not)
            |> SpiralSm.concat "\n"
    | (Spi | Spir), { magic = Spiral output'; content = content } when output' =
output ->
        let trimmedContent = content |> SpiralSm.trim
        if trimmedContent |> SpiralSm.contains "//// test\n"
            || trimmedContent |> SpiralSm.contains "//// ignore\n"
        then ""
        else content
    | _ -> ""

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"#!markdown


a

    b

c


\#!markdown


c


\#!fsharp


let a = 1"
|> escapeCell
|> run block
|> function
    | Success (block, _, _) -> formatBlock Fs block
    | Failure (msg, _, _) -> failwith msg
|> _assertEqual "/// a
/// 
    /// b
/// 
/// c"

── [ 37.10ms - stdout ] ────────────────────────────────────────────────────────
│ "/// a
│ /// 
│     /// b
│ /// 
│ /// c"
│ 
│ 

── markdown ────────────────────────────────────────────────────────────────────
│ ## formatBlocks

── fsharp ──────────────────────────────────────────────────────────────────────
let inline formatBlocks output blocks =
    blocks
    |> List.map (fun block ->
        block, formatBlock output block
    )
    |> List.filter (snd >> (<>) "")
    |> fun list ->
        (list, (None, [[]]))
        ||> List.foldBack (fun (block, content) (lastMagic, acc) ->
            let lineBreak =
                if block.magic = Markdown && lastMagic <> Some Markdown && 
lastMagic <> None
                then ""
                else "\n"
            Some block.magic, $"{content}{lineBreak}" :: acc
        )
    |> snd
    |> SpiralSm.concat "\n"

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"#!markdown


a

b


\#!markdown


c


\#!fsharp


let a = 1

\#!markdown

d (test)

\#!fsharp

//// test

let a = 2

\#!markdown

e

\#!fsharp

let a = 3"
|> escapeCell
|> run blocks
|> function
    | Success (blocks, _, _) -> formatBlocks Fs blocks
    | Failure (msg, _, _) -> failwith msg
|> _assertEqual "/// a
/// 
/// b

/// c
let a = 1

/// e
let a = 3
"

── [ 52.05ms - stdout ] ────────────────────────────────────────────────────────
│ "/// a
│ /// 
│ /// b
│ 
│ /// c
│ let a = 1
│ 
│ /// e
│ let a = 3
│ "
│ 
│ 

── markdown ────────────────────────────────────────────────────────────────────
│ ## parse

── fsharp ──────────────────────────────────────────────────────────────────────
let inline parse output input =
    match run blocks input with
    | Success (blocks, _, _) ->
        let blocks =
            blocks
            |> List.filter (fun block ->
                block.magic |> kernelOutputs |> List.contains output || 
block.magic = Markdown
            )

        match blocks with
        | { magic = Markdown; content = content } :: _
            when output = Fs
            && content |> SpiralSm.starts_with "# "
            && content |> SpiralSm.ends_with ")"
            ->
            let inline indentBlock (block : Block) =
                { block with
                    content =
                        block.content
                        |> SpiralSm.split "\n"
                        |> Array.fold
                            (fun (lines, isMultiline) line ->
                                let trimmedLine = line |> SpiralSm.trim
                                if trimmedLine = ""
                                then "" :: lines, isMultiline
                                else
                                    let inline singleQuoteLine () =
                                        trimmedLine |> Seq.sumBy ((=) '"' >> 
System.Convert.ToInt32) = 1
                                        && trimmedLine |> SpiralSm.contains 
@"'""'" |> not
                                        && trimmedLine |> SpiralSm.ends_with "{"
|> not
                                        && trimmedLine |> SpiralSm.ends_with 
"{|" |> not
                                        && trimmedLine |> SpiralSm.starts_with 
"}" |> not
                                        && trimmedLine |> SpiralSm.starts_with 
"|}" |> not

                                    match isMultiline, trimmedLine |> 
SpiralSm.split_string [[| $"{q}{q}{q}" |]] with
                                    | false, [[| _; _ |]] ->
                                        $"    {line}" :: lines, true

                                    | true, [[| _; _ |]] ->
                                        line :: lines, false

                                    | false, _ when singleQuoteLine () ->
                                        $"    {line}" :: lines, true

                                    | false, _ when line |> SpiralSm.starts_with
"#" && block.magic = Fsharp ->
                                        line :: lines, false

                                    | false, _ ->
                                        $"    {line}" :: lines, false

                                    | true, _ when singleQuoteLine () && line |>
SpiralSm.starts_with "    " ->
                                        $"    {line}" :: lines, false

                                    | true, _ when singleQuoteLine () ->
                                        line :: lines, false

                                    | true, _ ->
                                        line :: lines, true
                            )
                            ([[]], false)
                        |> fst
                        |> List.rev
                        |> SpiralSm.concat "\n"
                }

            let moduleName, namespaceName =
                System.Text.RegularExpressions.Regex.Match (content, @"# (.*) 
\((.*)\)$")
                |> fun m -> m.Groups.[[1]].Value, m.Groups.[[2]].Value

            let moduleBlock =
                {
                    magic = Fsharp
                    content =
                        $"#if !INTERACTIVE
namespace {namespaceName}
#endif

module {moduleName} ="
                }

            blocks
            |> List.indexed
            |> List.fold
                (fun blocks (index, block) ->
                    match index with
                    | 0 -> blocks
                    | 1 -> indentBlock block :: moduleBlock :: blocks
                    | _ -> indentBlock block :: blocks
                )
                [[]]
            |> List.rev
        | _ -> blocks
        |> Result.Ok
    | Failure (errorMsg, _, _) -> Result.Error errorMsg

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let example1 =
    $"""#!meta

{{"kernelInfo":{{"defaultKernelName":"fsharp","items":[[{{"aliases":[[]],"name":
"fsharp"}},{{"aliases":[[]],"name":"fsharp"}}]]}}}}

\#!markdown

# TestModule (TestNamespace)

\#!fsharp

\#!import file.dib

\#!fsharp

\#r "nuget:Expecto"

\#!markdown

## ParserLibrary

\#!fsharp

open System

\#!markdown

## x (test)

\#!fsharp

//// ignore

let x = 1

\#!spiral

//// test

inl x = 1i32

\#!spiral

//// real

inl x = 2i32

\#!spiral

inl x = 3i32

\#!markdown

### TextInput

\#!fsharp

let str1 = "abc
def"

let str2 =
    "abc\
def"

let str3 =
    $"1{{
        1
    }}1"

let str4 =
    $"1{{({{|
        a = 1
    |}}).a}}1"

let str5 =
    "abc \
        def"

let x =
    match '"' with
    | '"' -> true
    | _ -> false

let long1 = {q}{q}{q}a{q}{q}{q}

let long2 =
    {q}{q}{q}
a
{q}{q}{q}

\#!fsharp

type Position =
    {{
#if INTERACTIVE
        line : string
#else
        line : int
#endif
        column : int
    }}"""
    |> escapeCell

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

example1
|> parse Fs
|> Result.toOption
|> Option.get
|> (formatBlocks Fs)
|> _assertEqual $"""#if !INTERACTIVE
namespace TestNamespace
#endif

module TestModule =

    /// ## ParserLibrary
    open System

    /// ### TextInput
    let str1 = "abc
def"

    let str2 =
        "abc\
def"

    let str3 =
        $"1{{
            1
        }}1"

    let str4 =
        $"1{{({{|
            a = 1
        |}}).a}}1"

    let str5 =
        "abc \
            def"

    let x =
        match '"' with
        | '"' -> true
        | _ -> false

    let long1 = {q}{q}{q}a{q}{q}{q}

    let long2 =
        {q}{q}{q}
a
{q}{q}{q}

    type Position =
        {{
#if INTERACTIVE
            line : string
#else
            line : int
#endif
            column : int
        }}
"""

── [ 135.33ms - stdout ] ───────────────────────────────────────────────────────
│ "#if !INTERACTIVE
│ namespace TestNamespace
│ #endif
│ 
│ module TestModule =
│ 
│     /// ## ParserLibrary
│     open System
│ 
│     /// ### TextInput
│     let str1 = "abc
│ def"
│ 
│     let str2 =
│         "abc\
│ def"
│ 
│     let str3 =
│         $"1{
│             1
│         }1"
│ 
│     let str4 =
│         $"1{({|
│             a = 1
│         |}).a}1"
│ 
│     let str5 =
│         "abc \
│             def"
│ 
│     let x =
│         match '"' with
│         | '"' -> true
│         | _ -> false
│ 
│     let long1 = """a"""
│ 
│     let long2 =
│         """
│ a
│ """
│ 
│     type Position =
│         {
│ #if INTERACTIVE
│             line : string
│ #else
│             line : int
│ #endif
│             column : int
│         }
│ "
│ 
│ 

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

example1
|> parse Md
|> Result.toOption
|> Option.get
|> (formatBlocks Md)
|> _assertEqual "# TestModule (TestNamespace)

## ParserLibrary

### TextInput
"

── [ 114.39ms - stdout ] ───────────────────────────────────────────────────────
│ "# TestModule (TestNamespace)
│ 
│ ## ParserLibrary
│ 
│ ### TextInput
│ "
│ 
│ 

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

example1
|> parse Spi
|> Result.toOption
|> Option.get
|> (formatBlocks Spi)
|> _assertEqual "/// # TestModule (TestNamespace)

/// ## ParserLibrary
inl x = 3i32

/// ### TextInput
"

── [ 117.79ms - stdout ] ───────────────────────────────────────────────────────
│ "/// # TestModule (TestNamespace)
│ 
│ /// ## ParserLibrary
│ inl x = 3i32
│ 
│ /// ### TextInput
│ "
│ 
│ 

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

example1
|> parse Spir
|> Result.toOption
|> Option.get
|> (formatBlocks Spir)
|> _assertEqual "/// # TestModule (TestNamespace)

/// ## ParserLibrary
inl x = 2i32

/// ### TextInput
"

── [ 113.42ms - stdout ] ───────────────────────────────────────────────────────
│ "/// # TestModule (TestNamespace)
│ 
│ /// ## ParserLibrary
│ inl x = 2i32
│ 
│ /// ### TextInput
│ "
│ 
│ 

── markdown ────────────────────────────────────────────────────────────────────
│ ## parseDibCode

── fsharp ──────────────────────────────────────────────────────────────────────
let inline parseDibCode output file = async {
    trace Debug
        (fun () -> "parseDibCode")
        (fun () -> $"output: {output} / file: {file} / {_locals ()}")
    let! input = file |> SpiralFileSystem.read_all_text_async
    match parse output input with
    | Result.Ok blocks -> return blocks |> formatBlocks output
    | Result.Error msg -> return failwith msg
}

── markdown ────────────────────────────────────────────────────────────────────
│ ## writeDibCode

── fsharp ──────────────────────────────────────────────────────────────────────
let inline writeDibCode output path = async {
    trace Debug
        (fun () -> "writeDibCode")
        (fun () -> $"output: {output} / path: {path} / {_locals ()}")
    let! result = parseDibCode output path
    let pathDir = path |> System.IO.Path.GetDirectoryName
    let fileNameWithoutExt =
        match output, path |> System.IO.Path.GetFileNameWithoutExtension with
        | Spir, fileNameWithoutExt -> $"{fileNameWithoutExt}_real"
        | _, fileNameWithoutExt -> fileNameWithoutExt
    let outputPath = pathDir </> $"{fileNameWithoutExt}.{output |> string |> 
SpiralSm.to_lower}"
    do! result |> SpiralFileSystem.write_all_text_async outputPath
}

── markdown ────────────────────────────────────────────────────────────────────
│ ## Arguments

── fsharp ──────────────────────────────────────────────────────────────────────
[[<RequireQualifiedAccess>]]
type Arguments =
    | [[<Argu.ArguAttributes.MainCommand; Argu.ArguAttributes.Mandatory>]]
        File of file : string * Output

    interface Argu.IArgParserTemplate with
        member s.Usage =
            match s with
            | File _ -> nameof File

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

Argu.ArgumentParser.Create<Arguments>().PrintUsage ()

── [ 62.94ms - return value ] ──────────────────────────────────────────────────
│ "USAGE: dotnet-repl [--help] <file> <fs|md|spi|spir>
│ 
│ FILE:
│ 
│     <file> <fs|md|spi|spir>
│                           File
│ 
│ OPTIONS:
│ 
│     --help                display this list of options.
│ "
│ 

── markdown ────────────────────────────────────────────────────────────────────
│ ## main

── fsharp ──────────────────────────────────────────────────────────────────────
let main args =
    let argsMap = args |> Runtime.parseArgsMap<Arguments>

    let files =
        argsMap.[[nameof Arguments.File]]
        |> List.map (function
            | Arguments.File (path, output) -> path, output
        )

    files
    |> List.map (fun (path, output) -> path |> writeDibCode output)
    |> Async.Parallel
    |> Async.Ignore
    |> Async.runWithTimeout 30000
    |> function
        | Some () -> 0
        | None -> 1

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let args =
    System.Environment.GetEnvironmentVariable "ARGS"
    |> SpiralRuntime.split_args
    |> Result.toArray
    |> Array.collect id

match args with
| [[||]] -> 0
| args -> if main args = 0 then 0 else failwith "main failed"

── [ 129.21ms - return value ] ─────────────────────────────────────────────────
│ <div class="dni-plaintext"><pre>0
│ </pre></div><style>
│ .dni-code-hint {
│     font-style: italic;
│     overflow: hidden;
│     white-space: nowrap;
│ }
│ .dni-treeview {
│     white-space: nowrap;
│ }
│ .dni-treeview td {
│     vertical-align: top;
│     text-align: start;
│ }
│ details.dni-treeview {
│     padding-left: 1em;
│ }
│ table td {
│     text-align: start;
│ }
│ table tr { 
│     vertical-align: top; 
│     margin: 0em 0px;
│ }
│ table tr td pre 
│ { 
│     vertical-align: top !important; 
│     margin: 0em 0px !important;
│ } 
│ table th {
│     text-align: start;
│ }
│ </style>

── [ 129.98ms - stdout ] ───────────────────────────────────────────────────────
│ 00:00:03 d #1 writeDibCode / output: Fs / path: 
Builder.dib
│ 00:00:03 d #2 parseDibCode / output: Fs / file: 
Builder.dib
│ 
00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "Builder.dib"])) }
00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/apps/builder/Builder.dib", "--output-path", "/home/runner/work/polyglot/polyglot/apps/builder/Builder.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/builder/Builder.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/builder/Builder.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ # Builder (Polyglot)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> #r 
> @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan
> dard2.1/FSharp.Control.AsyncSeq.dll"
> #r 
> @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6.
> 0/System.Reactive.dll"
> #r 
> @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/
> netstandard2.0/System.Reactive.Linq.dll"
> #r 
> @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> #if !INTERACTIVE
> open Lib
> #endif
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> open Common
> open SpiralFileSystem.Operators
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## buildProject
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline buildProject runtime outputDir path = async {
>     let fullPath = path |> System.IO.Path.GetFullPath
>     let fileDir = fullPath |> System.IO.Path.GetDirectoryName
>     let extension = fullPath |> System.IO.Path.GetExtension
> 
>     trace Debug
>         (fun () -> "buildProject")
>         (fun () -> $"fullPath: {fullPath} / {_locals ()}")
> 
>     match extension with
>     | ".fsproj" -> ()
>     | _ -> failwith "Invalid project file"
> 
>     let runtimes =
>         runtime
>         |> Option.map List.singleton
>         |> Option.defaultValue [[ "linux-x64"; "win-x64" ]]
> 
>     let outputDir = outputDir |> Option.defaultValue "dist"
> 
>     return!
>         runtimes
>         |> List.map (fun runtime -> async {
>             let command = $@"dotnet publish ""{path}"" --configuration Release 
> --output ""{outputDir}"" --runtime {runtime}"
>             let! exitCode, _result =
>                 SpiralRuntime.execution_options (fun x ->
>                     { x with
>                         l0 = command
>                         l6 = Some fileDir
>                     }
>                 )
>                 |> SpiralRuntime.execute_with_options_async
>             return exitCode
>         })
>         |> Async.Sequential
>         |> Async.map Array.sum
> }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## persistCodeProject
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline persistCodeProject packages modules name hash code = async {
>     trace Debug
>         (fun () -> "persistCodeProject")
>         (fun () -> $"packages: {packages} / modules: {modules} / name: {name} / 
> hash: {hash} / code.Length: {code |> String.length} / {_locals ()}")
> 
>     let workspaceRoot = SpiralFileSystem.get_workspace_root ()
> 
>     let targetDir =
>         let targetDir = workspaceRoot </> "target/Builder" </> name
>         match hash with
>         | Some hash -> targetDir </> "packages" </> hash
>         | None -> targetDir
>     targetDir |> System.IO.Directory.CreateDirectory |> ignore
> 
>     let filePath = targetDir </> $"{name}.fs" |> System.IO.Path.GetFullPath
>     do! code |> SpiralFileSystem.write_all_text_exists filePath
> 
>     let modulesCode =
>         modules
>         |> List.map (fun path -> $"""<Compile Include="{workspaceRoot </> path}"
> />""")
>         |> SpiralSm.concat "\n        "
> 
>     let fsprojPath = targetDir </> $"{name}.fsproj"
>     let fsprojCode = $"""<Project Sdk="Microsoft.NET.Sdk">
>     <PropertyGroup>
>         <TargetFramework>net9.0</TargetFramework>
>         <LangVersion>preview</LangVersion>
>         <RollForward>Major</RollForward>
>         <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>
>         <PublishAot>false</PublishAot>
>         <PublishTrimmed>false</PublishTrimmed>
>         <PublishSingleFile>true</PublishSingleFile>
>         <SelfContained>true</SelfContained>
>         <Version>0.0.1-alpha.1</Version>
>         <OutputType>Exe</OutputType>
>     </PropertyGroup>
> 
>     <PropertyGroup Condition="$([[MSBuild]]::IsOSPlatform('FreeBSD'))">
>         <DefineConstants>_FREEBSD</DefineConstants>
>     </PropertyGroup>
> 
>     <PropertyGroup Condition="$([[MSBuild]]::IsOSPlatform('Linux'))">
>         <DefineConstants>_LINUX</DefineConstants>
>     </PropertyGroup>
> 
>     <PropertyGroup Condition="$([[MSBuild]]::IsOSPlatform('OSX'))">
>         <DefineConstants>_OSX</DefineConstants>
>     </PropertyGroup>
> 
>     <PropertyGroup Condition="$([[MSBuild]]::IsOSPlatform('Windows'))">
>         <DefineConstants>_WINDOWS</DefineConstants>
>     </PropertyGroup>
> 
>     <ItemGroup>
>         {modulesCode}
>         <Compile Include="{filePath}" />
>     </ItemGroup>
> 
>     <Import Project="{workspaceRoot}/.paket/Paket.Restore.targets" />
> </Project>
> """
>     do! fsprojCode |> SpiralFileSystem.write_all_text_exists fsprojPath
> 
>     let paketReferencesPath = targetDir </> "paket.references"
>     let paketReferencesCode =
>         "FSharp.Core" :: packages
>         |> SpiralSm.concat "\n"
>     do! paketReferencesCode |> SpiralFileSystem.write_all_text_exists 
> paketReferencesPath
> 
>     return fsprojPath
> }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## buildCode
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline buildCode runtime packages modules outputDir name code = async {
>     let! fsprojPath = code |> persistCodeProject packages modules name None
>     let! exitCode = fsprojPath |> buildProject runtime outputDir
>     if exitCode <> 0 then
>         let! fsprojText = fsprojPath |> SpiralFileSystem.read_all_text_async
>         trace Critical
>             (fun () -> "buildCode")
>             (fun () -> $"code: {code |> SpiralSm.ellipsis_end 400} / fsprojText:
> {fsprojText} / {_locals ()}")
>     return exitCode
> }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> "1 + 1 |> ignore"
> |> buildCode None [[]] [[]] None "test1"
> |> Async.runWithTimeout 180000
> |> _assertEqual (Some 0)
> 
> ── [ 8.78s - stdout ] ──────────────────────────────────────────────────────────
> │ 00:00:01 d #1 persistCodeProject / packages: [] / 
> modules: [] / name: test1 / hash:  / code.Length: 15
> │ 00:00:01 d #2 buildProject / fullPath: 
> /home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj
> │ 00:00:04 d #1 runtime.execute_with_options_async / { 
> file_name = dotnet; arguments = US5_0
> │   "publish 
> "/home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj" 
> --configuration Release --output "dist" --runtime linux-x64"; options = { 
> command = dotnet publish 
> "/home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj" 
> --configuration Release --output "dist" --runtime linux-x64; cancellation_token 
> = None; environment_variables = [||]; on_line = None; stdin = None; trace = 
> true; working_directory = Some 
> "/home/runner/work/polyglot/polyglot/target/Builder/test1" } }
> │ 00:00:05 v #2 >   Determining projects to restore...
> │ 00:00:05 v #3 >   Paket version 
> 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
> │ 00:00:05 v #4 >   The last full restore is still up to 
> date. Nothing left to do.
> │ 00:00:05 v #5 >   Total time taken: 0 milliseconds
> │ 00:00:05 v #6 >   Paket version 
> 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
> │ 00:00:06 v #7 >   Restoring 
> /home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj
> │ 00:00:06 v #8 >   Starting restore process.
> │ 00:00:06 v #9 >   Total time taken: 0 milliseconds
> │ 00:00:06 v #10 >   Restored 
> /home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj (in 298 
> ms).
> │ 00:00:08 v #11 > 
> /home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fs(1,16): warning
> FS0988: Main module of program is empty: nothing will happen when it is run 
> [/home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj]
> │ 00:00:08 v #12 >   test1 -> 
> /home/runner/work/polyglot/polyglot/target/Builder/test1/bin/Release/net9.0/linu
> x-x64/test1.dll
> │ 00:00:09 v #13 >   test1 -> 
> /home/runner/work/polyglot/polyglot/target/Builder/test1/dist
> │ 00:00:09 d #14 runtime.execute_with_options_async / { 
> exit_code = 0; output_length = 911 }
> │ 00:00:09 d #15 runtime.execute_with_options_async / { 
> file_name = dotnet; arguments = US5_0
> │   "publish 
> "/home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj" 
> --configuration Release --output "dist" --runtime win-x64"; options = { command 
> = dotnet publish 
> "/home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj" 
> --configuration Release --output "dist" --runtime win-x64; cancellation_token = 
> None; environment_variables = [||]; on_line = None; stdin = None; trace = true; 
> working_directory = Some 
> "/home/runner/work/polyglot/polyglot/target/Builder/test1" } }
> │ 00:00:09 v #16 >   Determining projects to restore...
> │ 00:00:10 v #17 >   Paket version 
> 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
> │ 00:00:10 v #18 >   The last full restore is still up to 
> date. Nothing left to do.
> │ 00:00:10 v #19 >   Total time taken: 0 milliseconds
> │ 00:00:10 v #20 >   Restored 
> /home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj (in 268 
> ms).
> │ 00:00:12 v #21 > 
> /home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fs(1,16): warning
> FS0988: Main module of program is empty: nothing will happen when it is run 
> [/home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj]
> │ 00:00:12 v #22 >   test1 -> 
> /home/runner/work/polyglot/polyglot/target/Builder/test1/bin/Release/net9.0/win-
> x64/test1.dll
> │ 00:00:13 v #23 >   test1 -> 
> /home/runner/work/polyglot/polyglot/target/Builder/test1/dist
> │ 00:00:13 d #24 runtime.execute_with_options_async / { 
> exit_code = 0; output_length = 701 }
> │ Some 0
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> "1 + a |> ignore"
> |> buildCode None [[]] [[]] None "test2"
> |> Async.runWithTimeout 180000
> |> _assertEqual (Some 2)
> 
> ── [ 6.38s - stdout ] ──────────────────────────────────────────────────────────
> │ 00:00:10 d #3 persistCodeProject / packages: [] / 
> modules: [] / name: test2 / hash:  / code.Length: 15
> │ 00:00:10 d #4 buildProject / fullPath: 
> /home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj
> │ 00:00:13 d #25 runtime.execute_with_options_async / { 
> file_name = dotnet; arguments = US5_0
> │   "publish 
> "/home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj" 
> --configuration Release --output "dist" --runtime linux-x64"; options = { 
> command = dotnet publish 
> "/home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj" 
> --configuration Release --output "dist" --runtime linux-x64; cancellation_token 
> = None; environment_variables = [||]; on_line = None; stdin = None; trace = 
> true; working_directory = Some 
> "/home/runner/work/polyglot/polyglot/target/Builder/test2" } }
> │ 00:00:13 v #26 >   Determining projects to restore...
> │ 00:00:14 v #27 >   Paket version 
> 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
> │ 00:00:14 v #28 >   The last full restore is still up to 
> date. Nothing left to do.
> │ 00:00:14 v #29 >   Total time taken: 0 milliseconds
> │ 00:00:14 v #30 >   Paket version 
> 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
> │ 00:00:14 v #31 >   Restoring 
> /home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj
> │ 00:00:14 v #32 >   Starting restore process.
> │ 00:00:14 v #33 >   Total time taken: 0 milliseconds
> │ 00:00:15 v #34 >   Restored 
> /home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj (in 260 
> ms).
> │ 00:00:16 v #35 > 
> /home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fs(1,5): error 
> FS0039: The value or constructor 'a' is not defined. 
> [/home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj]
> │ 00:00:16 d #36 runtime.execute_with_options_async / { 
> exit_code = 1; output_length = 704 }
> │ 00:00:16 d #37 runtime.execute_with_options_async / { 
> file_name = dotnet; arguments = US5_0
> │   "publish 
> "/home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj" 
> --configuration Release --output "dist" --runtime win-x64"; options = { command 
> = dotnet publish 
> "/home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj" 
> --configuration Release --output "dist" --runtime win-x64; cancellation_token = 
> None; environment_variables = [||]; on_line = None; stdin = None; trace = true; 
> working_directory = Some 
> "/home/runner/work/polyglot/polyglot/target/Builder/test2" } }
> │ 00:00:17 v #38 >   Determining projects to restore...
> │ 00:00:17 v #39 >   Paket version 
> 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
> │ 00:00:17 v #40 >   The last full restore is still up to 
> date. Nothing left to do.
> │ 00:00:17 v #41 >   Total time taken: 0 milliseconds
> │ 00:00:18 v #42 >   Restored 
> /home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj (in 289 
> ms).
> │ 00:00:19 v #43 > 
> /home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fs(1,5): error 
> FS0039: The value or constructor 'a' is not defined. 
> [/home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj]
> │ 00:00:19 d #44 runtime.execute_with_options_async / { 
> exit_code = 1; output_length = 496 }
> │ 00:00:16 c #5 buildCode / code: 1 + a |> ignore / 
> fsprojText: <Project Sdk="Microsoft.NET.Sdk">
> │     <PropertyGroup>
> │         <TargetFramework>net9.0</TargetFramework>
> │         <LangVersion>preview</LangVersion>
> │         <RollForward>Major</RollForward>
> │         
> <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>
> │         <PublishAot>false</PublishAot>
> │         <PublishTrimmed>false</PublishTrimmed>
> │         <PublishSingleFile>true</PublishSingleFile>
> │         <SelfContained>true</SelfContained>
> │         <Version>0.0.1-alpha.1</Version>
> │         <OutputType>Exe</OutputType>
> │     </PropertyGroup>
> │ 
> │     <PropertyGroup 
> Condition="$([MSBuild]::IsOSPlatform('FreeBSD'))">
> │         <DefineConstants>_FREEBSD</DefineConstants>
> │     </PropertyGroup>
> │ 
> │     <PropertyGroup 
> Condition="$([MSBuild]::IsOSPlatform('Linux'))">
> │         <DefineConstants>_LINUX</DefineConstants>
> │     </PropertyGroup>
> │ 
> │     <PropertyGroup 
> Condition="$([MSBuild]::IsOSPlatform('OSX'))">
> │         <DefineConstants>_OSX</DefineConstants>
> │     </PropertyGroup>
> │ 
> │     <PropertyGroup 
> Condition="$([MSBuild]::IsOSPlatform('Windows'))">
> │         <DefineConstants>_WINDOWS</DefineConstants>
> │     </PropertyGroup>
> │ 
> │     <ItemGroup>
> │         
> │         <Compile 
> Include="/home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fs" />
> │     </ItemGroup>
> │ 
> │     <Import 
> Project="/home/runner/work/polyglot/polyglot/.paket/Paket.Restore.targets" />
> │ </Project>
> │ 
> │ Some 2
> │ 
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## readFile
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline readFile path = async {
>     let! code = path |> SpiralFileSystem.read_all_text_async
> 
>     let code = System.Text.RegularExpressions.Regex.Replace (
>         code,
>         @"( *)(let\s+main\s+.*?\s*=)",
>         fun m -> m.Groups.[[1]].Value + "[[<EntryPoint>]]\n" + 
> m.Groups.[[1]].Value + m.Groups.[[2]].Value
>     )
> 
>     let codeTrim = code |> SpiralSm.trim_end [[||]]
>     return
>         if codeTrim |> SpiralSm.ends_with "\n()"
>         then codeTrim |> SpiralSm.slice 0 ((codeTrim |> String.length) - 3)
>         else code
> }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## buildFile
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline buildFile runtime packages modules path = async {
>     let fullPath = path |> System.IO.Path.GetFullPath
>     let dir = fullPath |> System.IO.Path.GetDirectoryName
>     let name = fullPath |> System.IO.Path.GetFileNameWithoutExtension
>     let! code = fullPath |> readFile
>     return! code |> buildCode runtime packages modules (dir </> "dist" |> Some) 
> name
> }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## persistFile
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline persistFile packages modules path = async {
>     let fullPath = path |> System.IO.Path.GetFullPath
>     let name = fullPath |> System.IO.Path.GetFileNameWithoutExtension
>     let! code = fullPath |> readFile
>     return! code |> persistCodeProject packages modules name None
> }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## Arguments
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> [[<RequireQualifiedAccess>]]
> type Arguments =
>     | [[<Argu.ArguAttributes.MainCommand; Argu.ArguAttributes.ExactlyOnce>]] 
> Path of path : string
>     | [[<Argu.ArguAttributes.Unique>]] Packages of packages : string list
>     | [[<Argu.ArguAttributes.Unique>]] Modules of modules : string list
>     | [[<Argu.ArguAttributes.Unique>]] Runtime of runtime : string
>     | [[<Argu.ArguAttributes.Unique>]] Persist_Only
> 
>     interface Argu.IArgParserTemplate with
>         member s.Usage =
>             match s with
>             | Path _ -> nameof Path
>             | Packages _ -> nameof Packages
>             | Modules _ -> nameof Modules
>             | Runtime _ -> nameof Runtime
>             | Persist_Only -> nameof Persist_Only
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> Argu.ArgumentParser.Create<Arguments>().PrintUsage ()
> 
> ── [ 82.82ms - return value ] ──────────────────────────────────────────────────
> │ "USAGE: dotnet-repl [--help] [--packages [<packages>...]]
> │                    [--modules [<modules>...]] [--runtime 
> <runtime>]
> │                    [--persist-only] <path>
> │ 
> │ PATH:
> │ 
> │     <path>                Path
> │ 
> │ OPTIONS:
> │ 
> │     --packages [<packages>...]
> │                           Packages
> │     --modules [<modules>...]
> │                           Modules
> │     --runtime <runtime>   Runtime
> │     --persist-only        Persist_Only
> │     --help                display this list of options.
> │ "
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## main
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let main args =
>     let argsMap = args |> Runtime.parseArgsMap<Arguments>
> 
>     let path =
>         match argsMap.[[nameof Arguments.Path]] with
>         | [[ Arguments.Path path ]] -> Some path
>         | _ -> None
>         |> Option.get
> 
>     let packages =
>         match argsMap |> Map.tryFind (nameof Arguments.Packages) with
>         | Some [[ Arguments.Packages packages ]] -> packages
>         | _ -> [[]]
> 
>     let modules =
>         match argsMap |> Map.tryFind (nameof Arguments.Modules) with
>         | Some [[ Arguments.Modules modules ]] -> modules
>         | _ -> [[]]
> 
>     let runtime =
>         match argsMap |> Map.tryFind (nameof Arguments.Runtime) with
>         | Some [[ Arguments.Runtime runtime ]] -> Some runtime
>         | _ -> None
> 
>     let persistOnly = argsMap |> Map.containsKey (nameof Arguments.Persist_Only)
> 
>     if persistOnly
>     then path |> persistFile packages modules |> Async.map (fun _ -> 0)
>     else path |> buildFile runtime packages modules
>     |> Async.runWithTimeout (60000 * 60)
>     |> function
>         | Some exitCode -> exitCode
>         | None -> 1
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let args =
>     System.Environment.GetEnvironmentVariable "ARGS"
>     |> SpiralRuntime.split_args
>     |> Result.toArray
>     |> Array.collect id
> 
> match args with
> | [[||]] -> 0
> | args -> if main args = 0 then 0 else failwith "main failed"
> 
> ── [ 12.06s - return value ] ───────────────────────────────────────────────────
> │ <div class="dni-plaintext"><pre>0
> │ </pre></div><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 12.06s - stdout ] ─────────────────────────────────────────────────────────
> │ 00:00:17 d #6 persistCodeProject / packages: [Argu; 
> FSharp.Control.AsyncSeq; System.Reactive.Linq] / modules: 
> [lib/spiral/common.fsx; lib/spiral/sm.fsx; lib/spiral/crypto.fsx; ... ] / name: 
> Builder / hash:  / code.Length: 8210
> │ 00:00:17 d #7 buildProject / fullPath: 
> /home/runner/work/polyglot/polyglot/target/Builder/Builder/Builder.fsproj
> │ 00:00:20 d #45 runtime.execute_with_options_async / { 
> file_name = dotnet; arguments = US5_0
> │   "publish 
> "/home/runner/work/polyglot/polyglot/target/Builder/Builder/Builder.fsproj" 
> --configuration Release --output 
> "/home/runner/work/polyglot/polyglot/apps/builder/dist" --runtime linux-x64"; 
> options = { command = dotnet publish 
> "/home/runner/work/polyglot/polyglot/target/Builder/Builder/Builder.fsproj" 
> --configuration Release --output 
> "/home/runner/work/polyglot/polyglot/apps/builder/dist" --runtime linux-x64; 
> cancellation_token = None; environment_variables = [||]; on_line = None; stdin =
> None; trace = true; working_directory = Some 
> "/home/runner/work/polyglot/polyglot/target/Builder/Builder" } }
> │ 00:00:20 v #46 >   Determining projects to restore...
> │ 00:00:20 v #47 >   Paket version 
> 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
> │ 00:00:20 v #48 >   The last full restore is still up to 
> date. Nothing left to do.
> │ 00:00:20 v #49 >   Total time taken: 0 milliseconds
> │ 00:00:21 v #50 >   Paket version 
> 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
> │ 00:00:21 v #51 >   Restoring 
> /home/runner/work/polyglot/polyglot/target/Builder/Builder/Builder.fsproj
> │ 00:00:21 v #52 >   Starting restore process.
> │ 00:00:21 v #53 >   Total time taken: 0 milliseconds
> │ 00:00:22 v #54 >   Restored 
> /home/runner/work/polyglot/polyglot/target/Builder/Builder/Builder.fsproj (in 
> 280 ms).
> │ 00:00:31 v #55 >   Builder -> 
> /home/runner/work/polyglot/polyglot/target/Builder/Builder/bin/Release/net9.0/li
> nux-x64/Builder.dll
> │ 00:00:32 v #56 >   Builder -> 
> /home/runner/work/polyglot/polyglot/apps/builder/dist
> │ 00:00:32 d #57 runtime.execute_with_options_async / { 
> exit_code = 0; output_length = 690 }
> │ 
00:00:42 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 27115 }
00:00:42 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/apps/builder/Builder.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/builder/Builder.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:42 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/builder/Builder.dib.ipynb to html
00:00:42 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:42 v #7 !   validate(nb)
00:00:43 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:43 v #9 !   return _pygments_highlight(
00:00:43 v #10 ! [NbConvertApp] Writing 335317 bytes to /home/runner/work/polyglot/polyglot/apps/builder/Builder.dib.html
00:00:43 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 902 }
00:00:43 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 902 }
00:00:43 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/builder/Builder.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/builder/Builder.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:43 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:00:43 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:00:43 d #16 spiral.run / dib / { exit_code = 0; result_length = 28076 }
In [ ]:
{ pwsh ../deps/spiral/apps/spiral/build.ps1 -SkipFsx 1 } | Invoke-Block
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/spiral/apps/spiral
spiral/apps/spiral/build.ps1 / ScriptDir: /home/runner/work/polyglot/polyglot/deps/spiral/apps/spiral / ResolvedScriptDir: /home/runner/work/polyglot/spiral/apps/spiral
00:00:00 d #1 persistCodeProject / packages: [Fable.Core] / modules: [lib/spiral/common.fsx; lib/spiral/sm.fsx; lib/spiral/crypto.fsx; ... ] / name: spiral / hash:  / code.Length: 1412988
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/target/Builder/spiral
polyglot/lib/spiral/lib.ps1/GetTargetDir / targetDir: /home/runner/work/polyglot/polyglot/target/Builder/spiral
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot
polyglot/lib/spiral/lib.ps1/BuildFable / TargetDir: /home/runner/work/polyglot/polyglot/target/Builder/spiral / ProjectName: spiral / Language: rs / Runtime:  / root: /home/runner/work/polyglot/polyglot
Fable 5.0.0-alpha.2: F# to Rust compiler (status: alpha)

Thanks to the contributor! @oopbase
Stand with Ukraine! https://standwithukraine.com.ua/

Parsing target/Builder/spiral/spiral.fsproj...
Project and references (14 source files) parsed in 3055ms

Started Fable compilation...

Fable compilation finished in 12710ms

./lib/spiral/common.fsx(2117,0): (2117,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/sm.fsx(556,0): (556,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/async_.fsx(250,0): (250,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/threading.fsx(139,0): (139,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/date_time.fsx(2527,0): (2527,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/crypto.fsx(2344,0): (2344,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/platform.fsx(120,0): (120,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/networking.fsx(4935,0): (4935,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/trace.fsx(2150,0): (2150,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/runtime.fsx(7101,0): (7101,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/file_system.fsx(17438,0): (17438,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/fsharp/Common.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/target/Builder/spiral/target/rs/lib/fsharp/Common.rs / to: /home/runner/work/polyglot/polyglot/lib/fsharp/Common.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/common.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/target/Builder/spiral/target/rs/lib/spiral/common.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/common.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/date_time.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/target/Builder/spiral/target/rs/lib/spiral/date_time.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/date_time.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/async_.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/target/Builder/spiral/target/rs/lib/spiral/async_.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/async_.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/platform.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/target/Builder/spiral/target/rs/lib/spiral/platform.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/platform.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/runtime.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/target/Builder/spiral/target/rs/lib/spiral/runtime.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/runtime.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/threading.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/target/Builder/spiral/target/rs/lib/spiral/threading.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/threading.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/networking.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/target/Builder/spiral/target/rs/lib/spiral/networking.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/networking.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/file_system.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/target/Builder/spiral/target/rs/lib/spiral/file_system.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/file_system.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/sm.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/target/Builder/spiral/target/rs/lib/spiral/sm.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/sm.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/crypto.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/target/Builder/spiral/target/rs/lib/spiral/crypto.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/crypto.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/trace.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/target/Builder/spiral/target/rs/lib/spiral/trace.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/trace.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/lib.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/target/Builder/spiral/target/rs/lib/spiral/lib.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/lib.rs
spiral/apps/spiral/build.ps1 / path: /home/runner/work/polyglot/polyglot/target/Builder/spiral/target/rs/spiral.rs
   Compiling spiral v0.0.1 (/home/runner/work/polyglot/spiral/apps/spiral)
    Finished `release` profile [optimized] target(s) in 8.65s
     Running unittests spiral.rs (/home/runner/work/polyglot/spiral/workspace/target/release/deps/spiral-403ff7088a51856d)

running 1 test
test module_6ff740fe::Spiral::verify_app ... ok

successes:

successes:
    module_6ff740fe::Spiral::verify_app

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Compiling spiral v0.0.1 (/home/runner/work/polyglot/spiral/apps/spiral)
    Finished `release` profile [optimized] target(s) in 17.57s
In [ ]:
{ pwsh ../apps/parser/build.ps1 } | Invoke-Block
00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "DibParser.dib"])) }
00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/apps/parser/DibParser.dib", "--output-path", "/home/runner/work/polyglot/polyglot/apps/parser/DibParser.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/parser/DibParser.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/parser/DibParser.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ # DibParser (Polyglot)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> #r 
> @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan
> dard2.1/FSharp.Control.AsyncSeq.dll"
> #r 
> @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6.
> 0/System.Reactive.dll"
> #r 
> @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/
> netstandard2.0/System.Reactive.Linq.dll"
> #r 
> @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll"
> #r 
> @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP
> arsec.dll"
> #r 
> @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP
> arsecCS.dll"
> 
> ── pwsh ────────────────────────────────────────────────────────────────────────
> ls ~/.nuget/packages/argu
> 
> ── [ 225.35ms - stdout ] ───────────────────────────────────────────────────────
> │ 6.2.4
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> #if !INTERACTIVE
> open Lib
> #endif
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> open Common
> open FParsec
> open SpiralFileSystem.Operators
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## escapeCell (test)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let inline escapeCell input =
>     input
>     |> SpiralSm.split "\n"
>     |> Array.map (function
>         | line when line |> SpiralSm.starts_with "\\#!" || line |> 
> SpiralSm.starts_with "\\#r" ->
>             System.Text.RegularExpressions.Regex.Replace (line, "^\\\\#", "#")
>         | line -> line
>     )
>     |> SpiralSm.concat "\n"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> $"a{nl}\\#!magic{nl}b{nl}"
> |> escapeCell
> |> _assertEqual (
>     $"a{nl}#!magic{nl}b{nl}"
> )
> 
> ── [ 50.91ms - stdout ] ────────────────────────────────────────────────────────
> │ "a
> │ #!magic
> │ b
> │ "
> │ 
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## magicMarker
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let magicMarker : Parser<string, unit> = pstring "#!"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> "#!magic"
> |> run magicMarker
> |> _assertEqual (
>     Success ("#!", (), Position ("", 2, 1, 3))
> )
> 
> ── [ 27.50ms - stdout ] ────────────────────────────────────────────────────────
> │ Success: "#!"
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> "##!magic"
> |> run magicMarker
> |> _assertEqual (
>     Failure (
>         $"Error in Ln: 1 Col: 1{nl}##!magic{nl}^{nl}Expecting: '#!'{nl}",
>         ParserError (
>             Position ("", 0, 1, 1),
>             (),
>             ErrorMessageList (ExpectedString "#!")
>         ),
>         ()
>     )
> )
> 
> ── [ 25.69ms - stdout ] ────────────────────────────────────────────────────────
> │ Failure:
> │ Error in Ln: 1 Col: 1
> │ ##!magic
> │ ^
> │ Expecting: '#!'
> │ 
> │ 
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## magicCommand
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let magicCommand =
>     magicMarker
>     >>. manyTill anyChar newline
>     |>> (System.String.Concat >> SpiralSm.trim)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> "#!magic
> 
> a"
> |> run magicCommand
> |> _assertEqual (
>     Success ("magic", (), Position ("", 8, 2, 1))
> )
> 
> ── [ 16.58ms - stdout ] ────────────────────────────────────────────────────────
> │ Success: "magic"
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> " #!magic
> 
> a"
> |> run magicCommand
> |> _assertEqual (
>     Failure (
>         $"Error in Ln: 1 Col: 1{nl} #!magic{nl}^{nl}Expecting: '#!'{nl}",
>         ParserError (
>             Position ("", 0, 1, 1),
>             (),
>             ErrorMessageList (ExpectedString "#!")
>         ),
>         ()
>     )
> )
> 
> ── [ 17.68ms - stdout ] ────────────────────────────────────────────────────────
> │ Failure:
> │ Error in Ln: 1 Col: 1
> │  #!magic
> │ ^
> │ Expecting: '#!'
> │ 
> │ 
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## content
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let content =
>     (newline >>. magicMarker) <|> (eof >>. preturn "")
>     |> attempt
>     |> lookAhead
>     |> manyTill anyChar
>     |>> (System.String.Concat >> SpiralSm.trim)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> "#!magic
> 
> 
> a
> 
> 
> "
> |> run content
> |> _assertEqual (
>     Success ("#!magic
> 
> 
> a", (), Position ("", 14, 7, 1))
> )
> 
> ── [ 15.74ms - stdout ] ────────────────────────────────────────────────────────
> │ Success: "#!magic
> │ 
> │ 
> │ a"
> │ 
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## Output
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type Output =
>     | Fs
>     | Md
>     | Spi
>     | Spir
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## Magic
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type Magic =
>     | Fsharp
>     | Markdown
>     | Spiral of Output
>     | Magic of string
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## kernelOutputs
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline kernelOutputs magic =
>     match magic with
>     | Fsharp -> [[ Fs ]]
>     | Markdown -> [[ Md ]]
>     | Spiral output -> [[ output ]]
>     | _ -> [[]]
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## Block
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type Block =
>     {
>         magic : Magic
>         content : string
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## block
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let block =
>     pipe2
>         magicCommand
>         content
>         (fun magic content ->
>             let magic, content =
>                 match magic with
>                 | "fsharp" -> Fsharp, content
>                 | "markdown" -> Markdown, content
>                 | "spiral" ->
>                     let output = if content |> SpiralSm.contains "//// real\n" 
> then Spir else Spi
>                     let content =
>                         if output = Spi
>                         then content
>                         else
>                             content
>                             |> SpiralSm.replace "//// real\n\n" ""
>                             |> SpiralSm.replace "//// real\n" ""
>                     Spiral output, content
>                 | magic -> magic |> Magic, content
>             {
>                 magic = magic
>                 content = content
>             })
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> "#!magic
> 
> 
> a
> 
> 
> "
> |> run block
> |> _assertEqual (
>     Success (
>         { magic = Magic "magic"; content = "a" },
>         (),
>         Position ("", 14, 7, 1)
>     )
> )
> 
> ── [ 25.71ms - stdout ] ────────────────────────────────────────────────────────
> │ Success: { magic = Magic "magic"
> │   content = "a" }
> │ 
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## blocks
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let blocks =
>     skipMany newline
>     >>. sepEndBy block (skipMany1 newline)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> 
> "#!magic1
> 
> a
> 
> \#!magic2
> 
> b
> 
> "
> |> escapeCell
> |> run blocks
> |> _assertEqual (
>     Success (
>         [[
>             { magic = Magic "magic1"; content = "a" }
>             { magic = Magic "magic2"; content = "b" }
>         ]],
>         (),
>         Position ("", 26, 9, 1)
>     )
> )
> 
> ── [ 26.50ms - stdout ] ────────────────────────────────────────────────────────
> │ Success: [{ magic = Magic "magic1"
> │    content = "a" }; { magic = Magic "magic2"
> │                       content = "b" }]
> │ 
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## formatBlock
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline formatBlock output (block : Block) =
>     match output, block with
>     | output, { magic = Markdown; content = content } ->
>         let markdownComment =
>             match output with
>             | Spi | Spir -> "/// "
>             | Fs -> "/// "
>             | _ -> ""
>         content
>         |> SpiralSm.split "\n"
>         |> Array.map (SpiralSm.trim_end [[||]])
>         |> Array.filter (SpiralSm.ends_with " (test)" >> not)
>         |> Array.map (function
>             | "" -> markdownComment
>             | line -> System.Text.RegularExpressions.Regex.Replace (line, 
> "^\\s*", $"$&{markdownComment}")
>         )
>         |> SpiralSm.concat "\n"
>     | Fs, { magic = Fsharp; content = content } ->
>         let trimmedContent = content |> SpiralSm.trim
>         if trimmedContent |> SpiralSm.contains "//// test\n"
>             || trimmedContent |> SpiralSm.contains "//// ignore\n"
>         then ""
>         else
>             content
>             |> SpiralSm.split "\n"
>             |> Array.filter (SpiralSm.trim_start [[||]] >> SpiralSm.starts_with 
> "#r" >> not)
>             |> SpiralSm.concat "\n"
>     | (Spi | Spir), { magic = Spiral output'; content = content } when output' =
> output ->
>         let trimmedContent = content |> SpiralSm.trim
>         if trimmedContent |> SpiralSm.contains "//// test\n"
>             || trimmedContent |> SpiralSm.contains "//// ignore\n"
>         then ""
>         else content
>     | _ -> ""
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> "#!markdown
> 
> 
> a
> 
>     b
> 
> c
> 
> 
> \#!markdown
> 
> 
> c
> 
> 
> \#!fsharp
> 
> 
> let a = 1"
> |> escapeCell
> |> run block
> |> function
>     | Success (block, _, _) -> formatBlock Fs block
>     | Failure (msg, _, _) -> failwith msg
> |> _assertEqual "/// a
> /// 
>     /// b
> /// 
> /// c"
> 
> ── [ 35.52ms - stdout ] ────────────────────────────────────────────────────────
> │ "/// a
> │ /// 
> │     /// b
> │ /// 
> │ /// c"
> │ 
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## formatBlocks
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline formatBlocks output blocks =
>     blocks
>     |> List.map (fun block ->
>         block, formatBlock output block
>     )
>     |> List.filter (snd >> (<>) "")
>     |> fun list ->
>         (list, (None, [[]]))
>         ||> List.foldBack (fun (block, content) (lastMagic, acc) ->
>             let lineBreak =
>                 if block.magic = Markdown && lastMagic <> Some Markdown && 
> lastMagic <> None
>                 then ""
>                 else "\n"
>             Some block.magic, $"{content}{lineBreak}" :: acc
>         )
>     |> snd
>     |> SpiralSm.concat "\n"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> "#!markdown
> 
> 
> a
> 
> b
> 
> 
> \#!markdown
> 
> 
> c
> 
> 
> \#!fsharp
> 
> 
> let a = 1
> 
> \#!markdown
> 
> d (test)
> 
> \#!fsharp
> 
> //// test
> 
> let a = 2
> 
> \#!markdown
> 
> e
> 
> \#!fsharp
> 
> let a = 3"
> |> escapeCell
> |> run blocks
> |> function
>     | Success (blocks, _, _) -> formatBlocks Fs blocks
>     | Failure (msg, _, _) -> failwith msg
> |> _assertEqual "/// a
> /// 
> /// b
> 
> /// c
> let a = 1
> 
> /// e
> let a = 3
> "
> 
> ── [ 53.36ms - stdout ] ────────────────────────────────────────────────────────
> │ "/// a
> │ /// 
> │ /// b
> │ 
> │ /// c
> │ let a = 1
> │ 
> │ /// e
> │ let a = 3
> │ "
> │ 
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## parse
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline parse output input =
>     match run blocks input with
>     | Success (blocks, _, _) ->
>         let blocks =
>             blocks
>             |> List.filter (fun block ->
>                 block.magic |> kernelOutputs |> List.contains output || 
> block.magic = Markdown
>             )
> 
>         match blocks with
>         | { magic = Markdown; content = content } :: _
>             when output = Fs
>             && content |> SpiralSm.starts_with "# "
>             && content |> SpiralSm.ends_with ")"
>             ->
>             let inline indentBlock (block : Block) =
>                 { block with
>                     content =
>                         block.content
>                         |> SpiralSm.split "\n"
>                         |> Array.fold
>                             (fun (lines, isMultiline) line ->
>                                 let trimmedLine = line |> SpiralSm.trim
>                                 if trimmedLine = ""
>                                 then "" :: lines, isMultiline
>                                 else
>                                     let inline singleQuoteLine () =
>                                         trimmedLine |> Seq.sumBy ((=) '"' >> 
> System.Convert.ToInt32) = 1
>                                         && trimmedLine |> SpiralSm.contains 
> @"'""'" |> not
>                                         && trimmedLine |> SpiralSm.ends_with "{"
> |> not
>                                         && trimmedLine |> SpiralSm.ends_with 
> "{|" |> not
>                                         && trimmedLine |> SpiralSm.starts_with 
> "}" |> not
>                                         && trimmedLine |> SpiralSm.starts_with 
> "|}" |> not
> 
>                                     match isMultiline, trimmedLine |> 
> SpiralSm.split_string [[| $"{q}{q}{q}" |]] with
>                                     | false, [[| _; _ |]] ->
>                                         $"    {line}" :: lines, true
> 
>                                     | true, [[| _; _ |]] ->
>                                         line :: lines, false
> 
>                                     | false, _ when singleQuoteLine () ->
>                                         $"    {line}" :: lines, true
> 
>                                     | false, _ when line |> SpiralSm.starts_with
> "#" && block.magic = Fsharp ->
>                                         line :: lines, false
> 
>                                     | false, _ ->
>                                         $"    {line}" :: lines, false
> 
>                                     | true, _ when singleQuoteLine () && line |>
> SpiralSm.starts_with "    " ->
>                                         $"    {line}" :: lines, false
> 
>                                     | true, _ when singleQuoteLine () ->
>                                         line :: lines, false
> 
>                                     | true, _ ->
>                                         line :: lines, true
>                             )
>                             ([[]], false)
>                         |> fst
>                         |> List.rev
>                         |> SpiralSm.concat "\n"
>                 }
> 
>             let moduleName, namespaceName =
>                 System.Text.RegularExpressions.Regex.Match (content, @"# (.*) 
> \((.*)\)$")
>                 |> fun m -> m.Groups.[[1]].Value, m.Groups.[[2]].Value
> 
>             let moduleBlock =
>                 {
>                     magic = Fsharp
>                     content =
>                         $"#if !INTERACTIVE
> namespace {namespaceName}
> #endif
> 
> module {moduleName} ="
>                 }
> 
>             blocks
>             |> List.indexed
>             |> List.fold
>                 (fun blocks (index, block) ->
>                     match index with
>                     | 0 -> blocks
>                     | 1 -> indentBlock block :: moduleBlock :: blocks
>                     | _ -> indentBlock block :: blocks
>                 )
>                 [[]]
>             |> List.rev
>         | _ -> blocks
>         |> Result.Ok
>     | Failure (errorMsg, _, _) -> Result.Error errorMsg
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let example1 =
>     $"""#!meta
> 
> {{"kernelInfo":{{"defaultKernelName":"fsharp","items":[[{{"aliases":[[]],"name":
> "fsharp"}},{{"aliases":[[]],"name":"fsharp"}}]]}}}}
> 
> \#!markdown
> 
> # TestModule (TestNamespace)
> 
> \#!fsharp
> 
> \#!import file.dib
> 
> \#!fsharp
> 
> \#r "nuget:Expecto"
> 
> \#!markdown
> 
> ## ParserLibrary
> 
> \#!fsharp
> 
> open System
> 
> \#!markdown
> 
> ## x (test)
> 
> \#!fsharp
> 
> //// ignore
> 
> let x = 1
> 
> \#!spiral
> 
> //// test
> 
> inl x = 1i32
> 
> \#!spiral
> 
> //// real
> 
> inl x = 2i32
> 
> \#!spiral
> 
> inl x = 3i32
> 
> \#!markdown
> 
> ### TextInput
> 
> \#!fsharp
> 
> let str1 = "abc
> def"
> 
> let str2 =
>     "abc\
> def"
> 
> let str3 =
>     $"1{{
>         1
>     }}1"
> 
> let str4 =
>     $"1{{({{|
>         a = 1
>     |}}).a}}1"
> 
> let str5 =
>     "abc \
>         def"
> 
> let x =
>     match '"' with
>     | '"' -> true
>     | _ -> false
> 
> let long1 = {q}{q}{q}a{q}{q}{q}
> 
> let long2 =
>     {q}{q}{q}
> a
> {q}{q}{q}
> 
> \#!fsharp
> 
> type Position =
>     {{
> #if INTERACTIVE
>         line : string
> #else
>         line : int
> #endif
>         column : int
>     }}"""
>     |> escapeCell
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> example1
> |> parse Fs
> |> Result.toOption
> |> Option.get
> |> (formatBlocks Fs)
> |> _assertEqual $"""#if !INTERACTIVE
> namespace TestNamespace
> #endif
> 
> module TestModule =
> 
>     /// ## ParserLibrary
>     open System
> 
>     /// ### TextInput
>     let str1 = "abc
> def"
> 
>     let str2 =
>         "abc\
> def"
> 
>     let str3 =
>         $"1{{
>             1
>         }}1"
> 
>     let str4 =
>         $"1{{({{|
>             a = 1
>         |}}).a}}1"
> 
>     let str5 =
>         "abc \
>             def"
> 
>     let x =
>         match '"' with
>         | '"' -> true
>         | _ -> false
> 
>     let long1 = {q}{q}{q}a{q}{q}{q}
> 
>     let long2 =
>         {q}{q}{q}
> a
> {q}{q}{q}
> 
>     type Position =
>         {{
> #if INTERACTIVE
>             line : string
> #else
>             line : int
> #endif
>             column : int
>         }}
> """
> 
> ── [ 141.63ms - stdout ] ───────────────────────────────────────────────────────
> │ "#if !INTERACTIVE
> │ namespace TestNamespace
> │ #endif
> │ 
> │ module TestModule =
> │ 
> │     /// ## ParserLibrary
> │     open System
> │ 
> │     /// ### TextInput
> │     let str1 = "abc
> │ def"
> │ 
> │     let str2 =
> │         "abc\
> │ def"
> │ 
> │     let str3 =
> │         $"1{
> │             1
> │         }1"
> │ 
> │     let str4 =
> │         $"1{({|
> │             a = 1
> │         |}).a}1"
> │ 
> │     let str5 =
> │         "abc \
> │             def"
> │ 
> │     let x =
> │         match '"' with
> │         | '"' -> true
> │         | _ -> false
> │ 
> │     let long1 = """a"""
> │ 
> │     let long2 =
> │         """
> │ a
> │ """
> │ 
> │     type Position =
> │         {
> │ #if INTERACTIVE
> │             line : string
> │ #else
> │             line : int
> │ #endif
> │             column : int
> │         }
> │ "
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> example1
> |> parse Md
> |> Result.toOption
> |> Option.get
> |> (formatBlocks Md)
> |> _assertEqual "# TestModule (TestNamespace)
> 
> ## ParserLibrary
> 
> ### TextInput
> "
> 
> ── [ 121.02ms - stdout ] ───────────────────────────────────────────────────────
> │ "# TestModule (TestNamespace)
> │ 
> │ ## ParserLibrary
> │ 
> │ ### TextInput
> │ "
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> example1
> |> parse Spi
> |> Result.toOption
> |> Option.get
> |> (formatBlocks Spi)
> |> _assertEqual "/// # TestModule (TestNamespace)
> 
> /// ## ParserLibrary
> inl x = 3i32
> 
> /// ### TextInput
> "
> 
> ── [ 120.71ms - stdout ] ───────────────────────────────────────────────────────
> │ "/// # TestModule (TestNamespace)
> │ 
> │ /// ## ParserLibrary
> │ inl x = 3i32
> │ 
> │ /// ### TextInput
> │ "
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> example1
> |> parse Spir
> |> Result.toOption
> |> Option.get
> |> (formatBlocks Spir)
> |> _assertEqual "/// # TestModule (TestNamespace)
> 
> /// ## ParserLibrary
> inl x = 2i32
> 
> /// ### TextInput
> "
> 
> ── [ 117.90ms - stdout ] ───────────────────────────────────────────────────────
> │ "/// # TestModule (TestNamespace)
> │ 
> │ /// ## ParserLibrary
> │ inl x = 2i32
> │ 
> │ /// ### TextInput
> │ "
> │ 
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## parseDibCode
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline parseDibCode output file = async {
>     trace Debug
>         (fun () -> "parseDibCode")
>         (fun () -> $"output: {output} / file: {file} / {_locals ()}")
>     let! input = file |> SpiralFileSystem.read_all_text_async
>     match parse output input with
>     | Result.Ok blocks -> return blocks |> formatBlocks output
>     | Result.Error msg -> return failwith msg
> }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## writeDibCode
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline writeDibCode output path = async {
>     trace Debug
>         (fun () -> "writeDibCode")
>         (fun () -> $"output: {output} / path: {path} / {_locals ()}")
>     let! result = parseDibCode output path
>     let pathDir = path |> System.IO.Path.GetDirectoryName
>     let fileNameWithoutExt =
>         match output, path |> System.IO.Path.GetFileNameWithoutExtension with
>         | Spir, fileNameWithoutExt -> $"{fileNameWithoutExt}_real"
>         | _, fileNameWithoutExt -> fileNameWithoutExt
>     let outputPath = pathDir </> $"{fileNameWithoutExt}.{output |> string |> 
> SpiralSm.to_lower}"
>     do! result |> SpiralFileSystem.write_all_text_async outputPath
> }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## Arguments
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> [[<RequireQualifiedAccess>]]
> type Arguments =
>     | [[<Argu.ArguAttributes.MainCommand; Argu.ArguAttributes.Mandatory>]]
>         File of file : string * Output
> 
>     interface Argu.IArgParserTemplate with
>         member s.Usage =
>             match s with
>             | File _ -> nameof File
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> Argu.ArgumentParser.Create<Arguments>().PrintUsage ()
> 
> ── [ 63.06ms - return value ] ──────────────────────────────────────────────────
> │ "USAGE: dotnet-repl [--help] <file> <fs|md|spi|spir>
> │ 
> │ FILE:
> │ 
> │     <file> <fs|md|spi|spir>
> │                           File
> │ 
> │ OPTIONS:
> │ 
> │     --help                display this list of options.
> │ "
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## main
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let main args =
>     let argsMap = args |> Runtime.parseArgsMap<Arguments>
> 
>     let files =
>         argsMap.[[nameof Arguments.File]]
>         |> List.map (function
>             | Arguments.File (path, output) -> path, output
>         )
> 
>     files
>     |> List.map (fun (path, output) -> path |> writeDibCode output)
>     |> Async.Parallel
>     |> Async.Ignore
>     |> Async.runWithTimeout 30000
>     |> function
>         | Some () -> 0
>         | None -> 1
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let args =
>     System.Environment.GetEnvironmentVariable "ARGS"
>     |> SpiralRuntime.split_args
>     |> Result.toArray
>     |> Array.collect id
> 
> match args with
> | [[||]] -> 0
> | args -> if main args = 0 then 0 else failwith "main failed"
> 
> ── [ 132.92ms - return value ] ─────────────────────────────────────────────────
> │ <div class="dni-plaintext"><pre>0
> │ </pre></div><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 133.70ms - stdout ] ───────────────────────────────────────────────────────
> │ 00:00:03 d #1 writeDibCode / output: Fs / path: 
> DibParser.dib
> │ 00:00:03 d #2 parseDibCode / output: Fs / file: 
> DibParser.dib
> │ 
00:00:16 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 29860 }
00:00:16 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/apps/parser/DibParser.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/parser/DibParser.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:16 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/parser/DibParser.dib.ipynb to html
00:00:16 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:16 v #7 !   validate(nb)
00:00:17 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:17 v #9 !   return _pygments_highlight(
00:00:17 v #10 ! [NbConvertApp] Writing 377352 bytes to /home/runner/work/polyglot/polyglot/apps/parser/DibParser.dib.html
00:00:17 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 904 }
00:00:17 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 904 }
00:00:17 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/parser/DibParser.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/parser/DibParser.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:18 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:00:18 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:00:18 d #16 spiral.run / dib / { exit_code = 0; result_length = 30823 }
00:00:00 d #1 persistCodeProject / packages: [Argu; FParsec; FSharp.Control.AsyncSeq; ... ] / modules: [lib/spiral/common.fsx; lib/spiral/sm.fsx; lib/spiral/crypto.fsx; ... ] / name: DibParser / hash:  / code.Length: 10861
00:00:00 d #2 buildProject / fullPath: /home/runner/work/polyglot/polyglot/target/Builder/DibParser/DibParser.fsproj
00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  "publish "/home/runner/work/polyglot/polyglot/target/Builder/DibParser/DibParser.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/apps/parser/dist" --runtime linux-x64"; options = { command = dotnet publish "/home/runner/work/polyglot/polyglot/target/Builder/DibParser/DibParser.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/apps/parser/dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot/target/Builder/DibParser" } }
00:00:00 v #2 >   Determining projects to restore...
00:00:01 v #3 >   Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
00:00:01 v #4 >   The last full restore is still up to date. Nothing left to do.
00:00:01 v #5 >   Total time taken: 0 milliseconds
00:00:01 v #6 >   Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
00:00:01 v #7 >   Restoring /home/runner/work/polyglot/polyglot/target/Builder/DibParser/DibParser.fsproj
00:00:01 v #8 >   Starting restore process.
00:00:01 v #9 >   Total time taken: 0 milliseconds
00:00:02 v #10 >   Restored /home/runner/work/polyglot/polyglot/target/Builder/DibParser/DibParser.fsproj (in 304 ms).
00:00:12 v #11 >   DibParser -> /home/runner/work/polyglot/polyglot/target/Builder/DibParser/bin/Release/net9.0/linux-x64/DibParser.dll
00:00:12 v #12 >   DibParser -> /home/runner/work/polyglot/polyglot/apps/parser/dist
00:00:12 d #13 runtime.execute_with_options_async / { exit_code = 0; output_length = 705 }
00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "JsonParser.dib"])) }
00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/apps/parser/JsonParser.dib", "--output-path", "/home/runner/work/polyglot/polyglot/apps/parser/JsonParser.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/parser/JsonParser.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/parser/JsonParser.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ # JsonParser (Polyglot)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> open Common
> open Parser
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## JsonParser
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> (*
> // --------------------------------
> JSON spec from http://www.json.org/
> // --------------------------------
> 
> The JSON spec is available at [[json.org]](http://www.json.org/). I'll paraphase
> it here:
> 
> * A `value` can be a `string` or a `number` or a `bool` or `null` or an `object`
> or an `array`.
>   * These structures can be nested.
> * A `string` is a sequence of zero or more Unicode characters, wrapped in double
> quotes, using backslash escapes.
> * A `number` is very much like a C or Java number, except that the octal and 
> hexadecimal formats are not used.
> * A `boolean` is the literal `true` or `false`
> * A `null` is the literal `null`
> * An `object` is an unordered set of name/value pairs.
>   * An object begins with { (left brace) and ends with } (right brace).
>   * Each name is followed by : (colon) and the name/value pairs are separated by
> , (comma).
> * An `array` is an ordered collection of values.
>   * An array begins with [[ (left bracket) and ends with ]] (right bracket).
>   * Values are separated by , (comma).
> * Whitespace can be inserted between any pair of tokens.
> *)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let inline parserEqual (expected : ParseResult<'a>) (actual : ParseResult<'a * 
> Input>) =
>     match actual, expected with
>     | Success (_actual, _), Success _expected ->
>         printResult actual
>         _actual |> _assertEqual _expected
>     | Failure (l1, e1, p1), Failure (l2, e2, p2) when l1 = l2 && e1 = e2 && p1 =
> p2 ->
>         printResult actual
>     | _ ->
>         printfn $"Actual: {actual}"
>         printfn $"Expected: {expected}"
>         failwith "Parse failed"
>     actual
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### JValue
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type JValue =
>     | JString of string
>     | JNumber of float
>     | JBool   of bool
>     | JNull
>     | JObject of Map<string, JValue>
>     | JArray  of JValue list
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let jValue, jValueRef = createParserForwardedToRef<JValue> ()
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### jNull
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let jNull =
>     pstring "null"
>     >>% JNull
>     <?> "null"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> jValueRef <|
>     choice
>         [[
>             jNull
>         ]]
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jValue "null"
> |> parserEqual (Success JNull)
> 
> ── [ 174.98ms - return value ] ─────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Success (JNull, { lines = [|&quot;null&quot;|]<br />
> position = { line = 0<br />                               column = 4 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(JNull, { lines = [|&quot;null&quot;|]<br />  
> position = { line = 0<br />               column = 4 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>JNull</code></span></summary><div><table><thead><tr>
> </tr></thead><tbody><tr><td>IsJString</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJBool</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJNull</td><td><div 
> class="dni-plaintext"><pre>true
> │ </pre></div></td></tr><tr><td>IsJObject</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJArray</td><td><div 
> class="dni-plaintext"><pre>false
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t
> d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{
> lines = [|&quot;null&quot;|]<br />  position = { line = 0<br />               
> column = 4 } 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> s</td><td><div class="dni-plaintext"><pre>[ null 
> ]</pre></div></td></tr><tr><td>position</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br />
> column = 4 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> </td><td><div class="dni-plaintext"><pre>0
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>4
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu
> ccess</td><td><div class="dni-plaintext"><pre>true
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr></tbody></table></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 184.45ms - stdout ] ───────────────────────────────────────────────────────
> │ JNull
> │ JNull
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNull "nulp"
> |> parserEqual (
>     Failure (
>         "null",
>         "Unexpected 'p'",
>         { currentLine = "nulp"; line = 0; column = 3 }
>     )
> )
> 
> ── [ 35.41ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Failure (&quot;null&quot;, &quot;Unexpected 
> &#39;p&#39;&quot;, { currentLine = &quot;nulp&quot;<br />
> line = 0<br />                                     column = 3 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><div class="dni-plaintext"><pre>&quot;null&quot;
> │ </pre></div></td></tr><tr><td>Item2</td><td><div 
> class="dni-plaintext"><pre>&quot;Unexpected &#39;p&#39;&quot;
> │ </pre></div></td></tr><tr><td>Item3</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ currentLine = 
> &quot;nulp&quot;<br />  line = 0<br />  column = 3 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>curr
> entLine</td><td><div class="dni-plaintext"><pre>&quot;nulp&quot;
> │ </pre></div></td></tr><tr><td>line</td><td><div 
> class="dni-plaintext"><pre>0
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>3
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>IsSucces
> s</td><td><div class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div 
> class="dni-plaintext"><pre>true
> │ </pre></div></td></tr></tbody></table></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 36.71ms - stdout ] ────────────────────────────────────────────────────────
> │ Line:0 Col:3 Error parsing null
> │ nulp
> │    ^Unexpected 'p'
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### jBool
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let jBool =
>     let jtrue =
>         pstring "true"
>         >>% JBool true
>     let jfalse =
>         pstring "false"
>         >>% JBool false
> 
>     jtrue <|> jfalse
>     <?> "bool"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> jValueRef <|
>     choice
>         [[
>             jNull
>             jBool
>         ]]
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jBool "true"
> |> parserEqual (Success (JBool true))
> 
> ── [ 35.10ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Success (JBool true, { lines = 
> [|&quot;true&quot;|]<br />                       position = { line = 0<br />
> column = 4 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(JBool true, { lines = [|&quot;true&quot;|]<br />  
> position = { line = 0<br />               column = 4 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>JBool 
> true</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>I
> tem</td><td><div class="dni-plaintext"><pre>true
> │ </pre></div></td></tr><tr><td>IsJString</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJBool</td><td><div 
> class="dni-plaintext"><pre>true
> │ </pre></div></td></tr><tr><td>IsJNull</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJObject</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJArray</td><td><div 
> class="dni-plaintext"><pre>false
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t
> d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{
> lines = [|&quot;true&quot;|]<br />  position = { line = 0<br />               
> column = 4 } 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> s</td><td><div class="dni-plaintext"><pre>[ true 
> ]</pre></div></td></tr><tr><td>position</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br />
> column = 4 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> </td><td><div class="dni-plaintext"><pre>0
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>4
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu
> ccess</td><td><div class="dni-plaintext"><pre>true
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr></tbody></table></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 37.04ms - stdout ] ────────────────────────────────────────────────────────
> │ JBool true
> │ JBool true
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jBool "false"
> |> parserEqual (Success (JBool false))
> 
> ── [ 24.50ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Success (JBool false, { lines = 
> [|&quot;false&quot;|]<br />                        position = { line = 0<br />
> column = 5 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(JBool false, { lines = [|&quot;false&quot;|]<br />
> position = { line = 0<br />               column = 5 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>JBool 
> false</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>
> Item</td><td><div class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJString</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJBool</td><td><div 
> class="dni-plaintext"><pre>true
> │ </pre></div></td></tr><tr><td>IsJNull</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJObject</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJArray</td><td><div 
> class="dni-plaintext"><pre>false
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t
> d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{
> lines = [|&quot;false&quot;|]<br />  position = { line = 0<br />               
> column = 5 } 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> s</td><td><div class="dni-plaintext"><pre>[ false 
> ]</pre></div></td></tr><tr><td>position</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br />
> column = 5 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> </td><td><div class="dni-plaintext"><pre>0
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>5
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu
> ccess</td><td><div class="dni-plaintext"><pre>true
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr></tbody></table></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 26.51ms - stdout ] ────────────────────────────────────────────────────────
> │ JBool false
> │ JBool false
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jBool "truX"
> |> parserEqual (
>     Failure (
>         "bool",
>         "Unexpected 't'",
>         { currentLine = "truX"; line = 0; column = 0 }
>     )
> )
> 
> ── [ 21.48ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Failure (&quot;bool&quot;, &quot;Unexpected 
> &#39;t&#39;&quot;, { currentLine = &quot;truX&quot;<br />
> line = 0<br />                                     column = 0 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><div class="dni-plaintext"><pre>&quot;bool&quot;
> │ </pre></div></td></tr><tr><td>Item2</td><td><div 
> class="dni-plaintext"><pre>&quot;Unexpected &#39;t&#39;&quot;
> │ </pre></div></td></tr><tr><td>Item3</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ currentLine = 
> &quot;truX&quot;<br />  line = 0<br />  column = 0 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>curr
> entLine</td><td><div class="dni-plaintext"><pre>&quot;truX&quot;
> │ </pre></div></td></tr><tr><td>line</td><td><div 
> class="dni-plaintext"><pre>0
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>0
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>IsSucces
> s</td><td><div class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div 
> class="dni-plaintext"><pre>true
> │ </pre></div></td></tr></tbody></table></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 22.93ms - stdout ] ────────────────────────────────────────────────────────
> │ Line:0 Col:0 Error parsing bool
> │ truX
> │ ^Unexpected 't'
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### jUnescapedChar
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let jUnescapedChar =
>     satisfy (fun ch -> ch <> '\\' && ch <> '\"') "char"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jUnescapedChar "a"
> |> parserEqual (Success 'a')
> 
> ── [ 36.00ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Success (&#39;a&#39;, { lines = [|&quot;a&quot;|]<br
> />                position = { line = 0<br />                             column
> = 1 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(a, { lines = [|&quot;a&quot;|]<br />  position = { 
> line = 0<br />               column = 1 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><div class="dni-plaintext"><pre>&#39;a&#39;
> │ </pre></div></td></tr><tr><td>Item2</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines = 
> [|&quot;a&quot;|]<br />  position = { line = 0<br />               column = 1 } 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> s</td><td><div class="dni-plaintext"><pre>[ a 
> ]</pre></div></td></tr><tr><td>position</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br />
> column = 1 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> </td><td><div class="dni-plaintext"><pre>0
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>1
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu
> ccess</td><td><div class="dni-plaintext"><pre>true
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr></tbody></table></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 40.96ms - stdout ] ────────────────────────────────────────────────────────
> │ 'a'
> │ 'a'
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jUnescapedChar "\\"
> |> parserEqual (
>     Failure (
>         "char",
>         "Unexpected '\\'",
>         { currentLine = "\\"; line = 0; column = 0 }
>     )
> )
> 
> ── [ 27.26ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Failure (&quot;char&quot;, &quot;Unexpected 
> &#39;\&#39;&quot;, { currentLine = &quot;\&quot;<br />
> line = 0<br />                                     column = 0 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><div class="dni-plaintext"><pre>&quot;char&quot;
> │ </pre></div></td></tr><tr><td>Item2</td><td><div 
> class="dni-plaintext"><pre>&quot;Unexpected &#39;\&#39;&quot;
> │ </pre></div></td></tr><tr><td>Item3</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ currentLine = 
> &quot;\&quot;<br />  line = 0<br />  column = 0 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>curr
> entLine</td><td><div class="dni-plaintext"><pre>&quot;\&quot;
> │ </pre></div></td></tr><tr><td>line</td><td><div 
> class="dni-plaintext"><pre>0
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>0
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>IsSucces
> s</td><td><div class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div 
> class="dni-plaintext"><pre>true
> │ </pre></div></td></tr></tbody></table></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 28.61ms - stdout ] ────────────────────────────────────────────────────────
> │ Line:0 Col:0 Error parsing char
> │ \
> │ ^Unexpected '\'
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### jEscapedChar
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let jEscapedChar =
>     [[
>         ("\\\"",'\"')
>         ("\\\\",'\\')
>         ("\\/",'/')
>         ("\\b",'\b')
>         ("\\f",'\f')
>         ("\\n",'\n')
>         ("\\r",'\r')
>         ("\\t",'\t')
>     ]]
>     |> List.map (fun (toMatch, result) ->
>         pstring toMatch >>% result
>     )
>     |> choice
>     <?> "escaped char"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jEscapedChar "\\\\"
> |> parserEqual (Success '\\')
> 
> ── [ 22.76ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Success (&#39;\\&#39;, { lines = 
> [|&quot;\\&quot;|]<br />                 position = { line = 0<br />
> column = 2 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(\, { lines = [|&quot;\\&quot;|]<br />  position = {
> line = 0<br />               column = 2 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><div class="dni-plaintext"><pre>&#39;\\&#39;
> │ </pre></div></td></tr><tr><td>Item2</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines = 
> [|&quot;\\&quot;|]<br />  position = { line = 0<br />               column = 2 }
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> s</td><td><div class="dni-plaintext"><pre>[ \\ 
> ]</pre></div></td></tr><tr><td>position</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br />
> column = 2 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> </td><td><div class="dni-plaintext"><pre>0
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>2
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu
> ccess</td><td><div class="dni-plaintext"><pre>true
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr></tbody></table></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 24.96ms - stdout ] ────────────────────────────────────────────────────────
> │ '\\'
> │ '\\'
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jEscapedChar "\\t"
> |> parserEqual (Success '\t')
> 
> ── [ 25.95ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Success (&#39;\009&#39;, { lines = 
> [|&quot;\t&quot;|]<br />                   position = { line = 0<br />
> column = 2 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(	, { lines = [|&quot;\t&quot;|]<br />  position = { 
> line = 0<br />               column = 2 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><div class="dni-plaintext"><pre>&#39;\009&#39;
> │ </pre></div></td></tr><tr><td>Item2</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines = 
> [|&quot;\t&quot;|]<br />  position = { line = 0<br />               column = 2 }
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> s</td><td><div class="dni-plaintext"><pre>[ \t 
> ]</pre></div></td></tr><tr><td>position</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br />
> column = 2 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> </td><td><div class="dni-plaintext"><pre>0
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>2
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu
> ccess</td><td><div class="dni-plaintext"><pre>true
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr></tbody></table></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 27.62ms - stdout ] ────────────────────────────────────────────────────────
> │ '\009'
> │ '\009'
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jEscapedChar @"\\"
> |> parserEqual (Success '\\')
> 
> ── [ 20.67ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Success (&#39;\\&#39;, { lines = 
> [|&quot;\\&quot;|]<br />                 position = { line = 0<br />
> column = 2 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(\, { lines = [|&quot;\\&quot;|]<br />  position = {
> line = 0<br />               column = 2 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><div class="dni-plaintext"><pre>&#39;\\&#39;
> │ </pre></div></td></tr><tr><td>Item2</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines = 
> [|&quot;\\&quot;|]<br />  position = { line = 0<br />               column = 2 }
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> s</td><td><div class="dni-plaintext"><pre>[ \\ 
> ]</pre></div></td></tr><tr><td>position</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br />
> column = 2 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> </td><td><div class="dni-plaintext"><pre>0
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>2
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu
> ccess</td><td><div class="dni-plaintext"><pre>true
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr></tbody></table></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 22.28ms - stdout ] ────────────────────────────────────────────────────────
> │ '\\'
> │ '\\'
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jEscapedChar @"\n"
> |> parserEqual (Success '\n')
> 
> ── [ 20.34ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Success (&#39;\010&#39;, { lines = [|&quot;<br 
> />&quot;|]<br />                   position = { line = 0<br />
> column = 2 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(<br />, { lines = [|&quot;<br />&quot;|]<br />  
> position = { line = 0<br />               column = 2 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><div class="dni-plaintext"><pre>&#39;\010&#39;
> │ </pre></div></td></tr><tr><td>Item2</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines = 
> [|&quot;<br />&quot;|]<br />  position = { line = 0<br />               column =
> 2 } 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> s</td><td><div class="dni-plaintext"><pre>[ <br /> 
> ]</pre></div></td></tr><tr><td>position</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br />
> column = 2 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> </td><td><div class="dni-plaintext"><pre>0
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>2
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu
> ccess</td><td><div class="dni-plaintext"><pre>true
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr></tbody></table></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 22.00ms - stdout ] ────────────────────────────────────────────────────────
> │ '\010'
> │ '\010'
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jEscapedChar "a"
> |> parserEqual (
>     Failure (
>         "escaped char",
>         "Unexpected 'a'",
>         { currentLine = "a"; line = 0; column = 0 }
>     )
> )
> 
> ── [ 18.91ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Failure (&quot;escaped char&quot;, &quot;Unexpected 
> &#39;a&#39;&quot;, { currentLine = &quot;a&quot;<br />
> line = 0<br />                                             column = 0 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><div class="dni-plaintext"><pre>&quot;escaped char&quot;
> │ </pre></div></td></tr><tr><td>Item2</td><td><div 
> class="dni-plaintext"><pre>&quot;Unexpected &#39;a&#39;&quot;
> │ </pre></div></td></tr><tr><td>Item3</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ currentLine = 
> &quot;a&quot;<br />  line = 0<br />  column = 0 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>curr
> entLine</td><td><div class="dni-plaintext"><pre>&quot;a&quot;
> │ </pre></div></td></tr><tr><td>line</td><td><div 
> class="dni-plaintext"><pre>0
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>0
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>IsSucces
> s</td><td><div class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div 
> class="dni-plaintext"><pre>true
> │ </pre></div></td></tr></tbody></table></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 20.21ms - stdout ] ────────────────────────────────────────────────────────
> │ Line:0 Col:0 Error parsing escaped char
> │ a
> │ ^Unexpected 'a'
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### jUnicodeChar
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let jUnicodeChar =
>     let backslash = pchar '\\'
>     let uChar = pchar 'u'
>     let hexdigit = anyOf ([[ '0' .. '9' ]] @ [[ 'A' .. 'F' ]] @ [[ 'a' .. 'f' 
> ]])
>     let fourHexDigits = hexdigit .>>. hexdigit .>>. hexdigit .>>. hexdigit
> 
>     let inline convertToChar (((h1, h2), h3), h4) =
>         let str = $"%c{h1}%c{h2}%c{h3}%c{h4}"
>         Int32.Parse (str, Globalization.NumberStyles.HexNumber) |> char
> 
>     backslash >>. uChar >>. fourHexDigits
>     |>> convertToChar
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jUnicodeChar "\\u263A"
> |> parserEqual (Success '☺')
> 
> ── [ 29.14ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Success (&#39;☺&#39;, { lines = 
> [|&quot;\u263A&quot;|]<br />                position = { line = 0<br />
> column = 6 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(☺, { lines = [|&quot;\u263A&quot;|]<br />  position
> = { line = 0<br />               column = 6 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><div class="dni-plaintext"><pre>&#39;☺&#39;
> │ </pre></div></td></tr><tr><td>Item2</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines = 
> [|&quot;\u263A&quot;|]<br />  position = { line = 0<br />               column =
> 6 } 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> s</td><td><div class="dni-plaintext"><pre>[ \u263A 
> ]</pre></div></td></tr><tr><td>position</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br />
> column = 6 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> </td><td><div class="dni-plaintext"><pre>0
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>6
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu
> ccess</td><td><div class="dni-plaintext"><pre>true
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr></tbody></table></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 30.75ms - stdout ] ────────────────────────────────────────────────────────
> │ '☺'
> │ '☺'
> │ 
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### jString
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let quotedString =
>     let quote = pchar '\"' <?> "quote"
>     let jchar = jUnescapedChar <|> jEscapedChar <|> jUnicodeChar
> 
>     quote >>. manyChars jchar .>> quote
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let jString =
>     quotedString
>     |>> JString
>     <?> "quoted string"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> jValueRef <|
>     choice
>         [[
>             jNull
>             jBool
>             jString
>         ]]
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jString "\"\""
> |> parserEqual (Success (JString ""))
> 
> ── [ 32.64ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Success (JString &quot;&quot;, { lines = 
> [|&quot;&quot;&quot;&quot;|]<br />                       position = { line = 
> 0<br />                                    column = 2 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(JString &quot;&quot;, { lines = 
> [|&quot;&quot;&quot;&quot;|]<br />  position = { line = 0<br />               
> column = 2 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>JString 
> &quot;&quot;</code></span></summary><div><table><thead><tr></tr></thead><tbody><
> tr><td>Item</td><td><div class="dni-plaintext"><pre>&quot;&quot;
> │ </pre></div></td></tr><tr><td>IsJString</td><td><div 
> class="dni-plaintext"><pre>true
> │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJBool</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJNull</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJObject</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJArray</td><td><div 
> class="dni-plaintext"><pre>false
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t
> d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{
> lines = [|&quot;&quot;&quot;&quot;|]<br />  position = { line = 0<br />
> column = 2 } 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> s</td><td><div class="dni-plaintext"><pre>[ &quot;&quot; 
> ]</pre></div></td></tr><tr><td>position</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br />
> column = 2 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> </td><td><div class="dni-plaintext"><pre>0
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>2
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu
> ccess</td><td><div class="dni-plaintext"><pre>true
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr></tbody></table></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 34.56ms - stdout ] ────────────────────────────────────────────────────────
> │ JString ""
> │ JString ""
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jString "\"a\""
> |> parserEqual (Success (JString "a"))
> 
> ── [ 23.08ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Success (JString &quot;a&quot;, { lines = 
> [|&quot;&quot;a&quot;&quot;|]<br />                        position = { line = 
> 0<br />                                     column = 3 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(JString &quot;a&quot;, { lines = 
> [|&quot;&quot;a&quot;&quot;|]<br />  position = { line = 0<br />               
> column = 3 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>JString 
> &quot;a&quot;</code></span></summary><div><table><thead><tr></tr></thead><tbody>
> <tr><td>Item</td><td><div class="dni-plaintext"><pre>&quot;a&quot;
> │ </pre></div></td></tr><tr><td>IsJString</td><td><div 
> class="dni-plaintext"><pre>true
> │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJBool</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJNull</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJObject</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJArray</td><td><div 
> class="dni-plaintext"><pre>false
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t
> d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{
> lines = [|&quot;&quot;a&quot;&quot;|]<br />  position = { line = 0<br />
> column = 3 } 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> s</td><td><div class="dni-plaintext"><pre>[ &quot;a&quot; 
> ]</pre></div></td></tr><tr><td>position</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br />
> column = 3 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> </td><td><div class="dni-plaintext"><pre>0
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>3
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu
> ccess</td><td><div class="dni-plaintext"><pre>true
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr></tbody></table></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 24.99ms - stdout ] ────────────────────────────────────────────────────────
> │ JString "a"
> │ JString "a"
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jString "\"ab\""
> |> parserEqual (Success (JString "ab"))
> 
> ── [ 22.05ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Success (JString &quot;ab&quot;, { lines = 
> [|&quot;&quot;ab&quot;&quot;|]<br />                         position = { line =
> 0<br />                                      column = 4 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(JString &quot;ab&quot;, { lines = 
> [|&quot;&quot;ab&quot;&quot;|]<br />  position = { line = 0<br />               
> column = 4 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>JString 
> &quot;ab&quot;</code></span></summary><div><table><thead><tr></tr></thead><tbody
> ><tr><td>Item</td><td><div class="dni-plaintext"><pre>&quot;ab&quot;
> │ </pre></div></td></tr><tr><td>IsJString</td><td><div 
> class="dni-plaintext"><pre>true
> │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJBool</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJNull</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJObject</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJArray</td><td><div 
> class="dni-plaintext"><pre>false
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t
> d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{
> lines = [|&quot;&quot;ab&quot;&quot;|]<br />  position = { line = 0<br />
> column = 4 } 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> s</td><td><div class="dni-plaintext"><pre>[ &quot;ab&quot; 
> ]</pre></div></td></tr><tr><td>position</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br />
> column = 4 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> </td><td><div class="dni-plaintext"><pre>0
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>4
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu
> ccess</td><td><div class="dni-plaintext"><pre>true
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr></tbody></table></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 23.97ms - stdout ] ────────────────────────────────────────────────────────
> │ JString "ab"
> │ JString "ab"
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jString "\"ab\\tde\""
> |> parserEqual (Success (JString "ab\tde"))
> 
> ── [ 27.67ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Success (JString &quot;ab	de&quot;, { lines = 
> [|&quot;&quot;ab\tde&quot;&quot;|]<br />                            position = {
> line = 0<br />                                         column = 8 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(JString &quot;ab	de&quot;, { lines = 
> [|&quot;&quot;ab\tde&quot;&quot;|]<br />  position = { line = 0<br />
> column = 8 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>JString &quot;ab	
> de&quot;</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><
> td>Item</td><td><div class="dni-plaintext"><pre>&quot;ab	de&quot;
> │ </pre></div></td></tr><tr><td>IsJString</td><td><div 
> class="dni-plaintext"><pre>true
> │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJBool</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJNull</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJObject</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJArray</td><td><div 
> class="dni-plaintext"><pre>false
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t
> d><t...ni-treeview"><summary><span class="dni-code-hint"><code>{ lines = 
> [|&quot;&quot;ab\tde&quot;&quot;|]<br />  position = { line = 0<br />
> column = 8 } 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> s</td><td><div class="dni-plaintext"><pre>[ &quot;ab\tde&quot; 
> ]</pre></div></td></tr><tr><td>position</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br />
> column = 8 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> </td><td><div class="dni-plaintext"><pre>0
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>8
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu
> ccess</td><td><div class="dni-plaintext"><pre>true
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr></tbody></table></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 29.60ms - stdout ] ────────────────────────────────────────────────────────
> │ JString "ab	de"
> │ JString "ab	de"
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jString "\"ab\\u263Ade\""
> |> parserEqual (Success (JString "ab☺de"))
> 
> ── [ 23.52ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Success (JString &quot;ab☺de&quot;, { lines = 
> [|&quot;&quot;ab\u263Ade&quot;&quot;|]<br />                            position
> = { line = 0<br />                                         column = 12 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(JString &quot;ab☺de&quot;, { lines = 
> [|&quot;&quot;ab\u263Ade&quot;&quot;|]<br />  position = { line = 0<br />
> column = 12 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>JString 
> &quot;ab☺de&quot;</code></span></summary><div><table><thead><tr></tr></thead><tb
> ody><tr><td>Item</td><td><div class="dni-plaintext"><pre>&quot;ab☺de&quot;
> │ </pre></div></td></tr><tr><td>IsJString</td><td><div 
> class="dni-plaintext"><pre>true
> │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJBool</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJNull</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJObject</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJArray</td><td><div 
> class="dni-plaintext"><pre>false
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>It..."><
> summary><span class="dni-code-hint"><code>{ lines = 
> [|&quot;&quot;ab\u263Ade&quot;&quot;|]<br />  position = { line = 0<br />
> column = 12 } 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> s</td><td><div class="dni-plaintext"><pre>[ &quot;ab\u263Ade&quot; 
> ]</pre></div></td></tr><tr><td>position</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br />
> column = 12 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> </td><td><div class="dni-plaintext"><pre>0
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>12
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu
> ccess</td><td><div class="dni-plaintext"><pre>true
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr></tbody></table></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 25.36ms - stdout ] ────────────────────────────────────────────────────────
> │ JString "ab☺de"
> │ JString "ab☺de"
> │ 
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### jNumber
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let jNumber =
>     let optSign = opt (pchar '-')
> 
>     let zero = pstring "0"
> 
>     let digitOneNine =
>         satisfy (fun ch -> Char.IsDigit ch && ch <> '0') "1-9"
> 
>     let digit =
>         satisfy Char.IsDigit "digit"
> 
>     let point = pchar '.'
> 
>     let e = pchar 'e' <|> pchar 'E'
> 
>     let optPlusMinus = opt (pchar '-' <|> pchar '+')
> 
>     let nonZeroInt =
>         digitOneNine .>>. manyChars digit
>         |>> fun (first, rest) -> string first + rest
> 
>     let intPart = zero <|> nonZeroInt
> 
>     let fractionPart = point >>. manyChars1 digit
> 
>     let exponentPart = e >>. optPlusMinus .>>. manyChars1 digit
> 
>     let inline (|>?) opt f =
>         match opt with
>         | None -> ""
>         | Some x -> f x
> 
>     let inline convertToJNumber (((optSign, intPart), fractionPart), expPart) =
>         let signStr =
>             optSign
>             |>? string
> 
>         let fractionPartStr =
>             fractionPart
>             |>? (fun digits -> "." + digits)
> 
>         let expPartStr =
>             expPart
>             |>? fun (optSign, digits) ->
>                 let sign = optSign |>? string
>                 "e" + sign + digits
> 
>         (signStr + intPart + fractionPartStr + expPartStr)
>         |> float
>         |> JNumber
> 
>     optSign .>>. intPart .>>. opt fractionPart .>>. opt exponentPart
>     |>> convertToJNumber
>     <?> "number"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> jValueRef <|
>     choice
>         [[
>             jNull
>             jBool
>             jString
>             jNumber
>         ]]
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber "123"
> |> parserEqual (Success (JNumber 123.0))
> 
> ── [ 42.48ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Success (JNumber 123.0, { lines = 
> [|&quot;123&quot;|]<br />                          position = { line = 0<br />
> column = 3 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(JNumber 123.0, { lines = [|&quot;123&quot;|]<br />
> position = { line = 0<br />               column = 3 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>JNumber 
> 123.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>
> Item</td><td><div class="dni-plaintext"><pre>123.0
> │ </pre></div></td></tr><tr><td>IsJString</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div 
> class="dni-plaintext"><pre>true
> │ </pre></div></td></tr><tr><td>IsJBool</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJNull</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJObject</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJArray</td><td><div 
> class="dni-plaintext"><pre>false
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t
> d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{
> lines = [|&quot;123&quot;|]<br />  position = { line = 0<br />               
> column = 3 } 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> s</td><td><div class="dni-plaintext"><pre>[ 123 
> ]</pre></div></td></tr><tr><td>position</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br />
> column = 3 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> </td><td><div class="dni-plaintext"><pre>0
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>3
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu
> ccess</td><td><div class="dni-plaintext"><pre>true
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr></tbody></table></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 44.49ms - stdout ] ────────────────────────────────────────────────────────
> │ JNumber 123.0
> │ JNumber 123.0
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber "-123"
> |> parserEqual (Success (JNumber -123.0))
> 
> ── [ 38.53ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Success (JNumber -123.0, { lines = 
> [|&quot;-123&quot;|]<br />                           position = { line = 0<br />
> column = 4 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(JNumber -123.0, { lines = [|&quot;-123&quot;|]<br 
> />  position = { line = 0<br />               column = 4 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>JNumber 
> -123.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td
> >Item</td><td><div class="dni-plaintext"><pre>-123.0
> │ </pre></div></td></tr><tr><td>IsJString</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div 
> class="dni-plaintext"><pre>true
> │ </pre></div></td></tr><tr><td>IsJBool</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJNull</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJObject</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJArray</td><td><div 
> class="dni-plaintext"><pre>false
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t
> d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{
> lines = [|&quot;-123&quot;|]<br />  position = { line = 0<br />               
> column = 4 } 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> s</td><td><div class="dni-plaintext"><pre>[ -123 
> ]</pre></div></td></tr><tr><td>position</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br />
> column = 4 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> </td><td><div class="dni-plaintext"><pre>0
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>4
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu
> ccess</td><td><div class="dni-plaintext"><pre>true
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr></tbody></table></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 40.65ms - stdout ] ────────────────────────────────────────────────────────
> │ JNumber -123.0
> │ JNumber -123.0
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber "123.4"
> |> parserEqual (Success (JNumber 123.4))
> 
> ── [ 25.84ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Success (JNumber 123.4, { lines = 
> [|&quot;123.4&quot;|]<br />                          position = { line = 0<br />
> column = 5 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(JNumber 123.4, { lines = [|&quot;123.4&quot;|]<br 
> />  position = { line = 0<br />               column = 5 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>JNumber 
> 123.4</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>
> Item</td><td><div class="dni-plaintext"><pre>123.4
> │ </pre></div></td></tr><tr><td>IsJString</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div 
> class="dni-plaintext"><pre>true
> │ </pre></div></td></tr><tr><td>IsJBool</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJNull</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJObject</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJArray</td><td><div 
> class="dni-plaintext"><pre>false
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t
> d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{
> lines = [|&quot;123.4&quot;|]<br />  position = { line = 0<br />               
> column = 5 } 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> s</td><td><div class="dni-plaintext"><pre>[ 123.4 
> ]</pre></div></td></tr><tr><td>position</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br />
> column = 5 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> </td><td><div class="dni-plaintext"><pre>0
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>5
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu
> ccess</td><td><div class="dni-plaintext"><pre>true
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr></tbody></table></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 27.77ms - stdout ] ────────────────────────────────────────────────────────
> │ JNumber 123.4
> │ JNumber 123.4
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber "-123."
> |> parserEqual (Success (JNumber -123.0))
> 
> ── [ 22.57ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Success (JNumber -123.0, { lines = 
> [|&quot;-123.&quot;|]<br />                           position = { line = 0<br 
> />                                        column = 4 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(JNumber -123.0, { lines = [|&quot;-123.&quot;|]<br 
> />  position = { line = 0<br />               column = 4 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>JNumber 
> -123.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td
> >Item</td><td><div class="dni-plaintext"><pre>-123.0
> │ </pre></div></td></tr><tr><td>IsJString</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div 
> class="dni-plaintext"><pre>true
> │ </pre></div></td></tr><tr><td>IsJBool</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJNull</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJObject</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJArray</td><td><div 
> class="dni-plaintext"><pre>false
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t
> d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{
> lines = [|&quot;-123.&quot;|]<br />  position = { line = 0<br />               
> column = 4 } 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> s</td><td><div class="dni-plaintext"><pre>[ -123. 
> ]</pre></div></td></tr><tr><td>position</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br />
> column = 4 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> </td><td><div class="dni-plaintext"><pre>0
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>4
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu
> ccess</td><td><div class="dni-plaintext"><pre>true
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr></tbody></table></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 24.37ms - stdout ] ────────────────────────────────────────────────────────
> │ JNumber -123.0
> │ JNumber -123.0
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber "00.1"
> |> parserEqual (Success (JNumber 0.0))
> 
> ── [ 22.46ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Success (JNumber 0.0, { lines = 
> [|&quot;00.1&quot;|]<br />                        position = { line = 0<br />
> column = 1 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(JNumber 0.0, { lines = [|&quot;00.1&quot;|]<br />  
> position = { line = 0<br />               column = 1 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>JNumber 
> 0.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>It
> em</td><td><div class="dni-plaintext"><pre>0.0
> │ </pre></div></td></tr><tr><td>IsJString</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div 
> class="dni-plaintext"><pre>true
> │ </pre></div></td></tr><tr><td>IsJBool</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJNull</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJObject</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJArray</td><td><div 
> class="dni-plaintext"><pre>false
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t
> d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{
> lines = [|&quot;00.1&quot;|]<br />  position = { line = 0<br />               
> column = 1 } 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> s</td><td><div class="dni-plaintext"><pre>[ 00.1 
> ]</pre></div></td></tr><tr><td>position</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br />
> column = 1 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> </td><td><div class="dni-plaintext"><pre>0
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>1
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu
> ccess</td><td><div class="dni-plaintext"><pre>true
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr></tbody></table></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 24.34ms - stdout ] ────────────────────────────────────────────────────────
> │ JNumber 0.0
> │ JNumber 0.0
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let jNumber_ = jNumber .>> spaces1
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber_ "123"
> |> parserEqual (Success (JNumber 123.0))
> 
> ── [ 27.77ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Success (JNumber 123.0, { lines = 
> [|&quot;123&quot;|]<br />                          position = { line = 1<br />
> column = 0 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(JNumber 123.0, { lines = [|&quot;123&quot;|]<br />
> position = { line = 1<br />               column = 0 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>JNumber 
> 123.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>
> Item</td><td><div class="dni-plaintext"><pre>123.0
> │ </pre></div></td></tr><tr><td>IsJString</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div 
> class="dni-plaintext"><pre>true
> │ </pre></div></td></tr><tr><td>IsJBool</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJNull</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJObject</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJArray</td><td><div 
> class="dni-plaintext"><pre>false
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t
> d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{
> lines = [|&quot;123&quot;|]<br />  position = { line = 1<br />               
> column = 0 } 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> s</td><td><div class="dni-plaintext"><pre>[ 123 
> ]</pre></div></td></tr><tr><td>position</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 1<br />
> column = 0 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> </td><td><div class="dni-plaintext"><pre>1
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>0
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu
> ccess</td><td><div class="dni-plaintext"><pre>true
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr></tbody></table></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 29.55ms - stdout ] ────────────────────────────────────────────────────────
> │ JNumber 123.0
> │ JNumber 123.0
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber_ "-123"
> |> parserEqual (Success (JNumber -123.0))
> 
> ── [ 23.80ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Success (JNumber -123.0, { lines = 
> [|&quot;-123&quot;|]<br />                           position = { line = 1<br />
> column = 0 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(JNumber -123.0, { lines = [|&quot;-123&quot;|]<br 
> />  position = { line = 1<br />               column = 0 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>JNumber 
> -123.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td
> >Item</td><td><div class="dni-plaintext"><pre>-123.0
> │ </pre></div></td></tr><tr><td>IsJString</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div 
> class="dni-plaintext"><pre>true
> │ </pre></div></td></tr><tr><td>IsJBool</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJNull</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJObject</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJArray</td><td><div 
> class="dni-plaintext"><pre>false
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t
> d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{
> lines = [|&quot;-123&quot;|]<br />  position = { line = 1<br />               
> column = 0 } 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> s</td><td><div class="dni-plaintext"><pre>[ -123 
> ]</pre></div></td></tr><tr><td>position</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 1<br />
> column = 0 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> </td><td><div class="dni-plaintext"><pre>1
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>0
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu
> ccess</td><td><div class="dni-plaintext"><pre>true
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr></tbody></table></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 26.01ms - stdout ] ────────────────────────────────────────────────────────
> │ JNumber -123.0
> │ JNumber -123.0
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber_ "-123."
> |> parserEqual (
>     Failure (
>         "number andThen many1 whitespace",
>         "Unexpected '.'",
>         { currentLine = "-123."; line = 0; column = 4 }
>     )
> )
> 
> ── [ 20.14ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Failure<br />  (&quot;number andThen many1 
> whitespace&quot;, &quot;Unexpected &#39;.&#39;&quot;, { currentLine = 
> &quot;-123.&quot;<br />
> line = 0<br />                                                          column =
> 4 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><div class="dni-plaintext"><pre>&quot;number andThen many1 
> whitespace&quot;
> │ </pre></div></td></tr><tr><td>Item2</td><td><div 
> class="dni-plaintext"><pre>&quot;Unexpected &#39;.&#39;&quot;
> │ </pre></div></td></tr><tr><td>Item3</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ currentLine = 
> &quot;-123.&quot;<br />  line = 0<br />  column = 4 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>curr
> entLine</td><td><div class="dni-plaintext"><pre>&quot;-123.&quot;
> │ </pre></div></td></tr><tr><td>line</td><td><div 
> class="dni-plaintext"><pre>0
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>4
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>IsSucces
> s</td><td><div class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div 
> class="dni-plaintext"><pre>true
> │ </pre></div></td></tr></tbody></table></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 21.45ms - stdout ] ────────────────────────────────────────────────────────
> │ Line:0 Col:4 Error parsing number andThen many1 whitespace
> │ -123.
> │     ^Unexpected '.'
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber_ "123.4"
> |> parserEqual (Success (JNumber 123.4))
> 
> ── [ 27.14ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Success (JNumber 123.4, { lines = 
> [|&quot;123.4&quot;|]<br />                          position = { line = 1<br />
> column = 0 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(JNumber 123.4, { lines = [|&quot;123.4&quot;|]<br 
> />  position = { line = 1<br />               column = 0 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>JNumber 
> 123.4</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>
> Item</td><td><div class="dni-plaintext"><pre>123.4
> │ </pre></div></td></tr><tr><td>IsJString</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div 
> class="dni-plaintext"><pre>true
> │ </pre></div></td></tr><tr><td>IsJBool</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJNull</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJObject</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJArray</td><td><div 
> class="dni-plaintext"><pre>false
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t
> d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{
> lines = [|&quot;123.4&quot;|]<br />  position = { line = 1<br />               
> column = 0 } 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> s</td><td><div class="dni-plaintext"><pre>[ 123.4 
> ]</pre></div></td></tr><tr><td>position</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 1<br />
> column = 0 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> </td><td><div class="dni-plaintext"><pre>1
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>0
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu
> ccess</td><td><div class="dni-plaintext"><pre>true
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr></tbody></table></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 29.20ms - stdout ] ────────────────────────────────────────────────────────
> │ JNumber 123.4
> │ JNumber 123.4
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber_ "00.4"
> |> parserEqual (
>     Failure (
>         "number andThen many1 whitespace",
>         "Unexpected '0'",
>         { currentLine = "00.4"; line = 0; column = 1 }
>     )
> )
> 
> ── [ 21.13ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Failure<br />  (&quot;number andThen many1 
> whitespace&quot;, &quot;Unexpected &#39;0&#39;&quot;, { currentLine = 
> &quot;00.4&quot;<br />                                                          
> line = 0<br />                                                          column =
> 1 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><div class="dni-plaintext"><pre>&quot;number andThen many1 
> whitespace&quot;
> │ </pre></div></td></tr><tr><td>Item2</td><td><div 
> class="dni-plaintext"><pre>&quot;Unexpected &#39;0&#39;&quot;
> │ </pre></div></td></tr><tr><td>Item3</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ currentLine = 
> &quot;00.4&quot;<br />  line = 0<br />  column = 1 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>curr
> entLine</td><td><div class="dni-plaintext"><pre>&quot;00.4&quot;
> │ </pre></div></td></tr><tr><td>line</td><td><div 
> class="dni-plaintext"><pre>0
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>1
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>IsSucces
> s</td><td><div class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div 
> class="dni-plaintext"><pre>true
> │ </pre></div></td></tr></tbody></table></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 22.39ms - stdout ] ────────────────────────────────────────────────────────
> │ Line:0 Col:1 Error parsing number andThen many1 whitespace
> │ 00.4
> │  ^Unexpected '0'
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber_ "123e4"
> |> parserEqual (Success (JNumber 1230000.0))
> 
> ── [ 26.23ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Success (JNumber 1230000.0, { lines = 
> [|&quot;123e4&quot;|]<br />                              position = { line = 
> 1<br />                                           column = 0 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(JNumber 1230000.0, { lines = 
> [|&quot;123e4&quot;|]<br />  position = { line = 1<br />               column = 
> 0 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>JNumber 
> 1230000.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr>
> <td>Item</td><td><div class="dni-plaintext"><pre>1230000.0
> │ </pre></div></td></tr><tr><td>IsJString</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div 
> class="dni-plaintext"><pre>true
> │ </pre></div></td></tr><tr><td>IsJBool</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJNull</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJObject</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJArray</td><td><div 
> class="dni-plaintext"><pre>false
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t
> d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{
> lines = [|&quot;123e4&quot;|]<br />  position = { line = 1<br />               
> column = 0 } 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> s</td><td><div class="dni-plaintext"><pre>[ 123e4 
> ]</pre></div></td></tr><tr><td>position</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 1<br />
> column = 0 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> </td><td><div class="dni-plaintext"><pre>1
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>0
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu
> ccess</td><td><div class="dni-plaintext"><pre>true
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr></tbody></table></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 28.00ms - stdout ] ────────────────────────────────────────────────────────
> │ JNumber 1230000.0
> │ JNumber 1230000.0
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber_ "123.4e5"
> |> parserEqual (Success (JNumber 12340000.0))
> 
> ── [ 24.38ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Success (JNumber 12340000.0, { lines = 
> [|&quot;123.4e5&quot;|]<br />                               position = { line = 
> 1<br />                                            column = 0 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(JNumber 12340000.0, { lines = 
> [|&quot;123.4e5&quot;|]<br />  position = { line = 1<br />               column 
> = 0 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>JNumber 
> 12340000.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr
> ><td>Item</td><td><div class="dni-plaintext"><pre>12340000.0
> │ </pre></div></td></tr><tr><td>IsJString</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div 
> class="dni-plaintext"><pre>true
> │ </pre></div></td></tr><tr><td>IsJBool</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJNull</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJObject</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJArray</td><td><div 
> class="dni-plaintext"><pre>false
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t
> d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{
> lines = [|&quot;123.4e5&quot;|]<br />  position = { line = 1<br />
> column = 0 } 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> s</td><td><div class="dni-plaintext"><pre>[ 123.4e5 
> ]</pre></div></td></tr><tr><td>position</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 1<br />
> column = 0 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> </td><td><div class="dni-plaintext"><pre>1
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>0
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu
> ccess</td><td><div class="dni-plaintext"><pre>true
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr></tbody></table></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 26.21ms - stdout ] ────────────────────────────────────────────────────────
> │ JNumber 12340000.0
> │ JNumber 12340000.0
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber_ "123.4e-5"
> |> parserEqual (Success (JNumber 0.001234))
> 
> ── [ 27.60ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Success (JNumber 0.001234, { lines = 
> [|&quot;123.4e-5&quot;|]<br />                             position = { line = 
> 1<br />                                          column = 0 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(JNumber 0.001234, { lines = 
> [|&quot;123.4e-5&quot;|]<br />  position = { line = 1<br />               column
> = 0 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>JNumber 
> 0.001234</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><
> td>Item</td><td><div class="dni-plaintext"><pre>0.001234
> │ </pre></div></td></tr><tr><td>IsJString</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div 
> class="dni-plaintext"><pre>true
> │ </pre></div></td></tr><tr><td>IsJBool</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJNull</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJObject</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJArray</td><td><div 
> class="dni-plaintext"><pre>false
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t
> d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{
> lines = [|&quot;123.4e-5&quot;|]<br />  position = { line = 1<br />
> column = 0 } 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> s</td><td><div class="dni-plaintext"><pre>[ 123.4e-5 
> ]</pre></div></td></tr><tr><td>position</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 1<br />
> column = 0 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> </td><td><div class="dni-plaintext"><pre>1
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>0
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu
> ccess</td><td><div class="dni-plaintext"><pre>true
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr></tbody></table></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 29.44ms - stdout ] ────────────────────────────────────────────────────────
> │ JNumber 0.001234
> │ JNumber 0.001234
> │ 
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### jArray
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let jArray =
>     let left = pchar '[[' .>> spaces
>     let right = pchar ']]' .>> spaces
>     let comma = pchar ',' .>> spaces
>     let value = jValue .>> spaces
> 
>     let values = sepBy value comma
> 
>     between left values right
>     |>> JArray
>     <?> "array"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> jValueRef <|
>     choice
>         [[
>             jNull
>             jBool
>             jString
>             jNumber
>             jArray
>         ]]
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jArray "[[ 1, 2 ]]"
> |> parserEqual (Success (JArray [[ JNumber 1.0; JNumber 2.0 ]]))
> 
> ── [ 60.88ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Success (JArray [JNumber 1.0; JNumber 2.0], { lines 
> = [|&quot;[ 1, 2 ]&quot;|]<br />                                              
> position = { line = 1<br />
> column = 0 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(JArray [JNumber 1.0; JNumber 2.0], { lines = 
> [|&quot;[ 1, 2 ]&quot;|]<br />  position = { line = 1<br />               column
> = 0 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>JArray [JNumber 1.0; JNumber 
> 2.0]</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>I
> tem</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><t
> body><tr><td>0</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>JNumber 
> 1.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>It
> em</td><td><div class="dni-plaintext"><pre>1.0
> │ </pre></div></td></tr><tr><td>IsJString</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div 
> class="dni-plaintext"><pre>true
> │ </pre></div></td></tr><tr><td>IsJBool</td><td><div 
> class="dni-plaintext"><pre>false
> │ 
> </pre></div></td></tr><tr><td>IsJNull</td><td><div...td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines = 
> [|&quot;[ 1, 2 ]&quot;|]<br />  position = { line = 1<br />               column
> = 0 } 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> s</td><td><div class="dni-plaintext"><pre>[ [ 1, 2 ] 
> ]</pre></div></td></tr><tr><td>position</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 1<br />
> column = 0 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> </td><td><div class="dni-plaintext"><pre>1
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>0
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu
> ccess</td><td><div class="dni-plaintext"><pre>true
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr></tbody></table></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 62.86ms - stdout ] ────────────────────────────────────────────────────────
> │ JArray [JNumber 1.0; JNumber 2.0]
> │ JArray [JNumber 1.0; JNumber 2.0]
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jArray "[[ 1, 2, ]]"
> |> parserEqual (
>     Failure (
>         "array",
>         "Unexpected ','",
>         { currentLine = "[[ 1, 2, ]]"; line = 0; column = 6 }
>     )
> )
> 
> ── [ 25.20ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Failure (&quot;array&quot;, &quot;Unexpected 
> &#39;,&#39;&quot;, { currentLine = &quot;[ 1, 2, ]&quot;<br />
> line = 0<br />                                      column = 6 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><div class="dni-plaintext"><pre>&quot;array&quot;
> │ </pre></div></td></tr><tr><td>Item2</td><td><div 
> class="dni-plaintext"><pre>&quot;Unexpected &#39;,&#39;&quot;
> │ </pre></div></td></tr><tr><td>Item3</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ currentLine = 
> &quot;[ 1, 2, ]&quot;<br />  line = 0<br />  column = 6 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>curr
> entLine</td><td><div class="dni-plaintext"><pre>&quot;[ 1, 2, ]&quot;
> │ </pre></div></td></tr><tr><td>line</td><td><div 
> class="dni-plaintext"><pre>0
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>6
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>IsSucces
> s</td><td><div class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div 
> class="dni-plaintext"><pre>true
> │ </pre></div></td></tr></tbody></table></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 26.44ms - stdout ] ────────────────────────────────────────────────────────
> │ Line:0 Col:6 Error parsing array
> │ [ 1, 2, ]
> │       ^Unexpected ','
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### jObject
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let jObject =
>     let left = spaces >>. pchar '{' .>> spaces
>     let right = pchar '}' .>> spaces
>     let colon = pchar ':' .>> spaces
>     let comma = pchar ',' .>> spaces
>     let key = quotedString .>> spaces
>     let value = jValue .>> spaces
> 
>     let keyValue = (key .>> colon) .>>. value
>     let keyValues = sepBy keyValue comma
> 
>     between left keyValues right
>     |>> Map.ofList
>     |>> JObject
>     <?> "object"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> jValueRef <|
>     choice
>         [[
>             jNull
>             jBool
>             jString
>             jNumber
>             jArray
>             jObject
>         ]]
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jObject """{ "a":1, "b"  :  2 }"""
> |> parserEqual (
>     Success (
>         JObject (
>             Map.ofList [[
>                 "a", JNumber 1.0
>                 "b", JNumber 2.0
>             ]]
>         )
>     )
> )
> 
> ── [ 63.83ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Success<br />  (JObject (map [(&quot;a&quot;, 
> JNumber 1.0); (&quot;b&quot;, JNumber 2.0)]),<br />   { lines = [|&quot;{ 
> &quot;a&quot;:1, &quot;b&quot;  :  2 }&quot;|]<br />     position = { line = 
> 1<br />                  column = 0 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(JObject (map [(&quot;a&quot;, JNumber 1.0); 
> (&quot;b&quot;, JNumber 2.0)]), { lines = [|&quot;{ &quot;a&quot;:1, 
> &quot;b&quot;  :  2 }&quot;|]<br />  position = { line = 1<br />               
> column = 0 } 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>JObject (map [(&quot;a&quot;, JNumber 1.0); 
> (&quot;b&quot;, JNumber 
> 2.0)])</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td
> >Item</td><td><table><thead><tr><th><i>key</i></th><th>value</th></tr></thead><t
> body><tr><td><div class="dni-plaintext"><pre>&quot;a&quot;
> │ </pre></div></td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>JNumber 
> 1.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>It
> em</td><td><div class="dni-plaintext"><pre>1.0
> │ </pre></div></td></tr><tr><td>IsJString</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsJNumber</td>...hint"><code>{ 
> lines = [|&quot;{ &quot;a&quot;:1, &quot;b&quot;  :  2 }&quot;|]<br />  position
> = { line = 1<br />               column = 0 } 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> s</td><td><div class="dni-plaintext"><pre>[ { &quot;a&quot;:1, &quot;b&quot;  :
> 2 } ]</pre></div></td></tr><tr><td>position</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 1<br />
> column = 0 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> </td><td><div class="dni-plaintext"><pre>1
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>0
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu
> ccess</td><td><div class="dni-plaintext"><pre>true
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr></tbody></table></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 65.72ms - stdout ] ────────────────────────────────────────────────────────
> │ JObject (map [("a", JNumber 1.0); ("b", JNumber 2.0)])
> │ JObject (map [("a", JNumber 1.0); ("b", JNumber 2.0)])
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jObject """{ "a":1, "b"  :  2, }"""
> |> parserEqual (
>     Failure (
>         "object",
>         "Unexpected ','",
>         { currentLine = """{ "a":1, "b"  :  2, }"""; line = 0; column = 18 }
>     )
> )
> 
> ── [ 27.28ms - return value ] ──────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Failure (&quot;object&quot;, &quot;Unexpected 
> &#39;,&#39;&quot;, { currentLine = &quot;{ &quot;a&quot;:1, &quot;b&quot;  :  2,
> }&quot;<br />                                       line = 0<br />
> column = 18 
> })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite
> m1</td><td><div class="dni-plaintext"><pre>&quot;object&quot;
> │ </pre></div></td></tr><tr><td>Item2</td><td><div 
> class="dni-plaintext"><pre>&quot;Unexpected &#39;,&#39;&quot;
> │ </pre></div></td></tr><tr><td>Item3</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ currentLine = 
> &quot;{ &quot;a&quot;:1, &quot;b&quot;  :  2, }&quot;<br />  line = 0<br />  
> column = 18 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>curr
> entLine</td><td><div class="dni-plaintext"><pre>&quot;{ &quot;a&quot;:1, 
> &quot;b&quot;  :  2, }&quot;
> │ </pre></div></td></tr><tr><td>line</td><td><div 
> class="dni-plaintext"><pre>0
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>18
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>IsSucces
> s</td><td><div class="dni-plaintext"><pre>false
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div 
> class="dni-plaintext"><pre>true
> │ </pre></div></td></tr></tbody></table></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 28.58ms - stdout ] ────────────────────────────────────────────────────────
> │ Line:0 Col:18 Error parsing object
> │ { "a":1, "b"  :  2, }
> │                   ^Unexpected ','
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### jValue
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let example1 = """{
>     "name" : "Scott",
>     "isMale" : true,
>     "bday" : {"year":2001, "month":12, "day":25 },
>     "favouriteColors" : [["blue", "green"]],
>     "emptyArray" : [[]],
>     "emptyObject" : {}
> }"""
> run jValue example1
> |> parserEqual (
>     Success (
>         JObject (
>             Map.ofList [[
>                 "name", JString "Scott"
>                 "isMale", JBool true
>                 "bday", JObject (
>                     Map.ofList [[
>                         "year", JNumber 2001.0
>                         "month", JNumber 12.0
>                         "day", JNumber 25.0
>                     ]]
>                 )
>                 "favouriteColors", JArray [[ JString "blue"; JString "green" ]]
>                 "emptyArray", JArray [[]]
>                 "emptyObject", JObject Map.empty
>             ]]
>         )
>     )
> )
> 
> ── [ 117.37ms - return value ] ─────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Success<br />  (JObject<br />     (map<br />        
> [(&quot;bday&quot;,<br />          JObject<br />            (map<br />
> [(&quot;day&quot;, JNumber 25.0); (&quot;month&quot;, JNumber 12.0);<br />
> (&quot;year&quot;, JNumber 2001.0)])); (&quot;emptyArray&quot;, JArray []);<br 
> />         (&quot;emptyObject&quot;, JObject (map []));<br />         
> (&quot;favouriteColors&quot;, 
> ...</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>It
> em</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(JObject<br />  (map<br />     
> [(&quot;bday&quot;,<br />       JObject<br />         (map<br />            
> [(&quot;day&quot;, JNumber 25.0); (&quot;month&quot;, JNumber 12.0);<br />
> (&quot;year&quot;, JNumber 2001.0)])); (&quot;emptyArray&quot;, JArray []);<br 
> />      (&quot;emptyObject&quot;, JObject (map []));<br />      
> (&quot;favouriteColors&quot;, JArray [JString &quot;blue&quot;; JString 
> &quot;gr...</code></span></summary><div><table><thead><tr></tr></thead><tbody><t
> r><td>Item1</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>JObject<br />  (map<br />     [(&quot;bday&quot;,<br
> />       JObject<br />         (map<br />            [(&quot;day&quot;, JNumber 
> 25.0); (&quot;month&quot;, JNumber 12.0);<br />             (&quot;year&quot;, 
> JNumber 2001.0)])); (&quot;emptyArray&quot;, JArra...quot;name&quot; : 
> &quot;Scott&quot;,,     &quot;isMale&quot; : true,,     &quot;bday&quot; : 
> {&quot;year&quot;:2001, &quot;month&quot;:12, &quot;day&quot;:25 },,     
> &quot;favouriteColors&quot; : [&quot;blue&quot;, &quot;green&quot;],,     
> &quot;emptyArray&quot; : [],,     &quot;emptyObject&quot; : {}, } 
> ]</pre></div></td></tr><tr><td>position</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 8<br />
> column = 0 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> </td><td><div class="dni-plaintext"><pre>8
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>0
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu
> ccess</td><td><div class="dni-plaintext"><pre>true
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr></tbody></table></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 119.17ms - stdout ] ───────────────────────────────────────────────────────
> │ JObject
> │   (map
> │      [("bday",
> │        JObject
> │          (map
> │             [("day", JNumber 25.0); ("month", JNumber 12.0);
> │              ("year", JNumber 2001.0)])); ("emptyArray", 
> JArray []);
> │       ("emptyObject", JObject (map []));
> │       ("favouriteColors", JArray [JString "blue"; JString 
> "green"]);
> │       ("isMale", JBool true); ("name", JString "Scott")])
> │ JObject
> │   (map
> │      [("bday", JObject (map [("day", JNumber 25.0); ("month",
> JNumber 12.0); ("year", JNumber 2001.0)]));
> │       ("emptyArray", JArray []); ("emptyObject", JObject (map
> []));
> │       ("favouriteColors", JArray [JString "blue"; JString 
> "green"]); ("isMale", JBool true); ("name", JString "Scott")])
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let example2 = """{"widget": {
>     "debug": "on",
>     "window": {
>         "title": "Sample Konfabulator Widget",
>         "name": "main_window",
>         "width": 500,
>         "height": 500
>     },
>     "image": {
>         "src": "Images/Sun.png",
>         "name": "sun1",
>         "hOffset": 250,
>         "vOffset": 250,
>         "alignment": "center"
>     },
>     "text": {
>         "data": "Click Here",
>         "size": 36,
>         "style": "bold",
>         "name": "text1",
>         "hOffset": 250,
>         "vOffset": 100,
>         "alignment": "center",
>         "onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;"
>     }
> }}"""
> 
> run jValue example2
> |> parserEqual (
>     Success (
>         JObject (
>             Map.ofList [[
>                 "widget", JObject (
>                     Map.ofList [[
>                         "debug", JString "on"
>                         "window", JObject (
>                             Map.ofList [[
>                                 "title", JString "Sample Konfabulator Widget"
>                                 "name", JString "main_window"
>                                 "width", JNumber 500.0
>                                 "height", JNumber 500.0
>                             ]]
>                         )
>                         "image", JObject (
>                             Map.ofList [[
>                                 "src", JString "Images/Sun.png"
>                                 "name", JString "sun1"
>                                 "hOffset", JNumber 250.0
>                                 "vOffset", JNumber 250.0
>                                 "alignment", JString "center"
>                             ]]
>                         )
>                         "text", JObject (
>                             Map.ofList [[
>                                 "data", JString "Click Here"
>                                 "size", JNumber 36.0
>                                 "style", JString "bold"
>                                 "name", JString "text1"
>                                 "hOffset", JNumber 250.0
>                                 "vOffset", JNumber 100.0
>                                 "alignment", JString "center"
>                                 "onMouseUp", JString "sun1.opacity = 
> (sun1.opacity / 100) * 90;"
>                             ]]
>                         )
>                     ]]
>                 )
>             ]]
>         )
>     )
> )
> 
> ── [ 251.45ms - return value ] ─────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Success<br />  (JObject<br />     (map<br />        
> [(&quot;widget&quot;,<br />          JObject<br />            (map<br />
> [(&quot;debug&quot;, JString &quot;on&quot;);<br />                
> (&quot;image&quot;,<br />                 JObject<br />                   
> (map<br />                      [(&quot;alignment&quot;, JString 
> &quot;center&quot;);<br />                       
> (&quot;hOffset&quot;...</code></span></summary><div><table><thead><tr></tr></the
> ad><tbody><tr><td>Item</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(JObject<br />  (map<br />     
> [(&quot;widget&quot;,<br />       JObject<br />         (map<br />            
> [(&quot;debug&quot;, JString &quot;on&quot;);<br />             
> (&quot;image&quot;,<br />              JObject<br />                (map<br />
> [(&quot;alignment&quot;, JString &quot;center&quot;); (&quot;hOffset&quot;, 
> JNumber 250.0);<br />                    (&quot;name&quot;, JString 
> &quot;sun1&quot;...</code></span></summary><div><table><thead><tr></tr></thead><
> tbody><tr><td>Item1</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>JObject<br />  (map<br />     
> [(&quot;widget&quot;,<br />       JObject<br />         (map<br />            
> [(&quot;debug&quot;, JString &quot;on&quot;);<br />             
> (&quot;image&quot;,<br />              JObject<br />                (...  
> &quot;style&quot;: &quot;bold&quot;,,         &quot;name&quot;: 
> &quot;text1&quot;,,         &quot;hOffset&quot;: 250,,         
> &quot;vOffset&quot;: 100,,         &quot;alignment&quot;: &quot;center&quot;,,
> &quot;onMouseUp&quot;: &quot;sun1.opacity = (sun1.opacity / 100) * 90;&quot;,
> }, }} ]</pre></div></td></tr><tr><td>position</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 26<br 
> />  column = 0 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> </td><td><div class="dni-plaintext"><pre>26
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>0
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu
> ccess</td><td><div class="dni-plaintext"><pre>true
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr></tbody></table></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 253.18ms - stdout ] ───────────────────────────────────────────────────────
> │ JObject
> │   (map
> │      [("widget",
> │        JObject
> │          (map
> │             [("debug", JString "on");
> │              ("image",
> │               JObject
> │                 (map
> │                    [("alignment", JString "center"); 
> ("hOffset", JNumber 250.0);
> │                     ("name", JString "sun1"); ("src", JString
> "Images/Sun.png");
> │                     ("vOffset", JNumber 250.0)]));
> │              ("text",
> │               JObject
> │                 (map
> │                    [("alignment", JString "center");
> │                     ("data", JString "Click Here"); 
> ("hOffset", JNumber 250.0);
> │                     ("name", JString "text1");
> │                     ("onMouseUp",
> │                      JString "sun1.opacity = (sun1.opacity / 
> 100) * 90;");
> │                     ("size", JNumber 36.0); ("style", JString
> "bold");
> │                     ("vOffset", JNumber 100.0)]));
> │              ("window",
> │               JObject
> │                 (map
> │                    [("height", JNumber 500.0); ("name", 
> JString "main_window");
> │                     ("title", JString "Sample Konfabulator 
> Widget");
> │                     ("width", JNumber 500.0)]))]))])
> │ JObject
> │   (map
> │      [("widget",
> │        JObject
> │          (map
> │             [("debug", JString "on");
> │              ("image",
> │               JObject
> │                 (map
> │                    [("alignment", JString "center"); 
> ("hOffset", JNumber 250.0); ("name", JString "sun1");
> │                     ("src", JString "Images/Sun.png"); 
> ("vOffset", JNumber 250.0)]));
> │              ("text",
> │               JObject
> │                 (map
> │                    [("alignment", JString "center"); ("data",
> JString "Click Here"); ("hOffset", JNumber 250.0);
> │                     ("name", JString "text1"); ("onMouseUp", 
> JString "sun1.opacity = (sun1.opacity / 100) * 90;");
> │                     ("size", JNumber 36.0); ("style", JString
> "bold"); ("vOffset", JNumber 100.0)]));
> │              ("window",
> │               JObject
> │                 (map
> │                    [("height", JNumber 500.0); ("name", 
> JString "main_window");
> │                     ("title", JString "Sample Konfabulator 
> Widget"); ("width", JNumber 500.0)]))]))])
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let example3 = """{
>   "string": "Hello, \"World\"!",
>   "escapedString": "This string contains \\/\\\\\\b\\f\\n\\r\\t\\\"\\'",
>   "number": 42,
>   "scientificNumber": 3.14e-10,
>   "boolean": true,
>   "nullValue": null,
>   "array": [[1, 2, 3, 4, 5]],
>   "unicodeString1": "프리마",
>   "unicodeString2": "\u0048\u0065\u006C\u006C\u006F, 
> \u0022\u0057\u006F\u0072\u006C\u0064\u0022!",
>   "specialCharacters": "!@#$%^&*()",
>   "emptyArray": [[]],
>   "emptyObject": {},
>   "nestedArrays": [[[[1, 2, 3]], [[4, 5, 6]]]],
>   "object": {
>     "nestedString": "Nested Value",
>     "nestedNumber": 3.14,
>     "nestedBoolean": false,
>     "nestedNull": null,
>     "nestedArray": [["a", "b", "c"]],
>     "nestedObject": {
>       "nestedProperty": "Nested Object Value"
>     }
>   },
>   "nestedObjects": [[
>     {"name": "Alice", "age": 25},
>     {"name": "Bob", "age": 30}
>   ]]
> }"""
> run jValue example3
> |> parserEqual (
>     Success (
>         JObject (
>             Map.ofList [[
>                 "string", JString @"Hello, ""World""!"
>                 "escapedString", JString @"This string contains 
> \/\\\b\f\n\r\t\""\'"
>                 "number", JNumber 42.0
>                 "scientificNumber", JNumber 3.14e-10
>                 "boolean", JBool true
>                 "nullValue", JNull
>                 "array", JArray [[
>                     JNumber 1.0; JNumber 2.0; JNumber 3.0; JNumber 4.0; JNumber 
> 5.0
>                 ]]
>                 "unicodeString1", JString "프리마"
>                 "unicodeString2", JString @"Hello, ""World""!"
>                 "specialCharacters", JString "!@#$%^&*()"
>                 "emptyArray", JArray [[]]
>                 "emptyObject", JObject Map.empty
>                 "nestedArrays", JArray [[
>                     JArray [[ JNumber 1.0; JNumber 2.0; JNumber 3.0 ]]
>                     JArray [[ JNumber 4.0; JNumber 5.0; JNumber 6.0 ]]
>                 ]]
>                 "object", JObject (
>                     Map.ofList [[
>                         "nestedString", JString "Nested Value"
>                         "nestedNumber", JNumber 3.14
>                         "nestedBoolean", JBool false
>                         "nestedNull", JNull
>                         "nestedArray", JArray [[JString "a"; JString "b"; 
> JString "c"]]
>                         "nestedObject", JObject (
>                             Map.ofList [[
>                                 "nestedProperty", JString "Nested Object Value"
>                             ]]
>                         )
>                     ]]
>                 )
>                 "nestedObjects", JArray [[
>                   JObject (Map.ofList [[ "name", JString "Alice"; "age", JNumber
> 25.0 ]])
>                   JObject (Map.ofList [[ "name", JString "Bob"; "age", JNumber 
> 30.0 ]])
>                 ]]
>             ]]
>         )
>     )
> )
> 
> ── [ 329.25ms - return value ] ─────────────────────────────────────────────────
> │ <details open="open" class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>Success<br />  (JObject<br />     (map<br />        
> [(&quot;array&quot;,<br />          JArray<br />            [JNumber 1.0; 
> JNumber 2.0; JNumber 3.0; JNumber 4.0; JNumber 5.0]);<br />         
> (&quot;boolean&quot;, JBool true); (&quot;emptyArray&quot;, JArray []);<br />
> (&quot;emptyObject&quot;, JObject (map []));<br />         
> (&quot;escapedString&quot;, JString &quot;This 
> s...</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>I
> tem</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>(JObject<br />  (map<br />     
> [(&quot;array&quot;,<br />       JArray [JNumber 1.0; JNumber 2.0; JNumber 3.0; 
> JNumber 4.0; JNumber 5.0]);<br />      (&quot;boolean&quot;, JBool true); 
> (&quot;emptyArray&quot;, JArray []);<br />      (&quot;emptyObject&quot;, 
> JObject (map []));<br />      (&quot;escapedString&quot;, JString &quot;This 
> string contains \/\\\b\f<br />\r\t\&quot;\&#39;&quot;);<br />    
> ...</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>It
> em1</td><td><details class="dni-treeview"><summary><span 
> class="dni-code-hint"><code>JObject<br />  (map<br />     
> [(&quot;array&quot;,<br />       JArray [JNumber 1.0; JNumber 2.0; JNumber 3.0; 
> JNumber 4.0; JNumber 5.0]);<br />      (&quot;boolean&quot;, JBool true); 
> (&quot;emptyArray&quot;, JArray []);<br />      (&quot;emptyObject&quot;, 
> JObject (map []));<br />      (&quot;es...&quot;, &quot;c&quot;],,     
> &quot;nestedObject&quot;: {,       &quot;nestedProperty&quot;: &quot;Nested 
> Object Value&quot;,     },   },,   &quot;nestedObjects&quot;: [,     
> {&quot;name&quot;: &quot;Alice&quot;, &quot;age&quot;: 25},,     
> {&quot;name&quot;: &quot;Bob&quot;, &quot;age&quot;: 30},   ], } 
> ]</pre></div></td></tr><tr><td>position</td><td><details 
> class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 29<br 
> />  column = 0 
> }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line
> </td><td><div class="dni-plaintext"><pre>29
> │ </pre></div></td></tr><tr><td>column</td><td><div 
> class="dni-plaintext"><pre>0
> │ 
> </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table>
> </div></details></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu
> ccess</td><td><div class="dni-plaintext"><pre>true
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div 
> class="dni-plaintext"><pre>false
> │ </pre></div></td></tr></tbody></table></div></details><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
> 
> ── [ 331.02ms - stdout ] ───────────────────────────────────────────────────────
> │ JObject
> │   (map
> │      [("array",
> │        JArray [JNumber 1.0; JNumber 2.0; JNumber 3.0; JNumber
> 4.0; JNumber 5.0]);
> │       ("boolean", JBool true); ("emptyArray", JArray []);
> │       ("emptyObject", JObject (map []));
> │       ("escapedString", JString "This string contains 
> \/\\\b\f\n\r\t\"\'");
> │       ("nestedArrays",
> │        JArray
> │          [JArray [JNumber 1.0; JNumber 2.0; JNumber 3.0];
> │           JArray [JNumber 4.0; JNumber 5.0; JNumber 6.0]]);
> │       ("nestedObjects",
> │        JArray
> │          [JObject (map [("age", JNumber 25.0); ("name", 
> JString "Alice")]);
> │           JObject (map [("age", JNumber 30.0); ("name", 
> JString "Bob")])]);
> │       ("nullValue", JNull); ("number", JNumber 42.0); ...])
> │ JObject
> │   (map
> │      [("array", JArray [JNumber 1.0; JNumber 2.0; JNumber 
> 3.0; JNumber 4.0; JNumber 5.0]); ("boolean", JBool true);
> │       ("emptyArray", JArray []); ("emptyObject", JObject (map
> []));
> │       ("escapedString", JString "This string contains 
> \/\\\b\f\n\r\t\"\'");
> │       ("nestedArrays",
> │        JArray [JArray [JNumber 1.0; JNumber 2.0; JNumber 
> 3.0]; JArray [JNumber 4.0; JNumber 5.0; JNumber 6.0]]);
> │       ("nestedObjects",
> │        JArray
> │          [JObject (map [("age", JNumber 25.0); ("name", 
> JString "Alice")]);
> │           JObject (map [("age", JNumber 30.0); ("name", 
> JString "Bob")])]); ("nullValue", JNull);
> │       ("number", JNumber 42.0); ...])
> │ 
> │ 
00:00:16 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 174814 }
00:00:16 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/apps/parser/JsonParser.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/parser/JsonParser.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:16 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/parser/JsonParser.dib.ipynb to html
00:00:16 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:16 v #7 !   validate(nb)
00:00:17 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:17 v #9 !   return _pygments_highlight(
00:00:17 v #10 ! [NbConvertApp] Writing 532492 bytes to /home/runner/work/polyglot/polyglot/apps/parser/JsonParser.dib.html
00:00:18 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 906 }
00:00:18 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 906 }
00:00:18 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/parser/JsonParser.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/parser/JsonParser.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:18 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:00:18 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:00:18 d #16 spiral.run / dib / { exit_code = 0; result_length = 175779 }
00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "Parser.dib"])) }
00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/apps/parser/Parser.dib", "--output-path", "/home/runner/work/polyglot/polyglot/apps/parser/Parser.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/parser/Parser.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/parser/Parser.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ # Parser (Polyglot)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> open Common
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### TextInput
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type Position =
>     {
>         line : int
>         column : int
>     }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let initialPos = { line = 0; column = 0 }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline incrCol (pos : Position) =
>     { pos with column = pos.column + 1 }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline incrLine pos =
>     { line = pos.line + 1; column = 0 }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type InputState =
>     {
>         lines : string[[]]
>         position : Position
>     }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline fromStr str =
>     {
>         lines =
>             if str |> String.IsNullOrEmpty
>             then [[||]]
>             else str |> SpiralSm.split_string [[| "\r\n"; "\n" |]]
>         position = initialPos
>     }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> fromStr "" |> _assertEqual {
>     lines = [[||]]
>     position = { line = 0; column = 0 }
> }
> 
> ── [ 36.76ms - stdout ] ────────────────────────────────────────────────────────
> │ { lines = [||]
> │   position = { line = 0
> │                column = 0 } }
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> fromStr "Hello \n World" |> _assertEqual {
>     lines = [[| "Hello "; " World" |]]
>     position = { line = 0; column = 0 }
> }
> 
> ── [ 13.49ms - stdout ] ────────────────────────────────────────────────────────
> │ { lines = [|"Hello "; " World"|]
> │   position = { line = 0
> │                column = 0 } }
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline currentLine inputState =
>     let linePos = inputState.position.line
>     if linePos < inputState.lines.Length
>     then inputState.lines.[[linePos]]
>     else "end of file"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline nextChar input =
>     let linePos = input.position.line
>     let colPos = input.position.column
> 
>     if linePos >= input.lines.Length
>     then input, None
>     else
>         let currentLine = currentLine input
>         if colPos < currentLine.Length then
>             let char = currentLine.[[colPos]]
>             let newPos = incrCol input.position
>             let newState = { input with position = newPos }
>             newState, Some char
>         else
>             let char = '\n'
>             let newPos = incrLine input.position
>             let newState = { input with position = newPos }
>             newState, Some char
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let newInput, charOpt = fromStr "Hello World" |> nextChar
> 
> newInput |> _assertEqual {
>     lines = [[| "Hello World" |]]
>     position = { line = 0; column = 1 }
> }
> charOpt |> _assertEqual (Some 'H')
> 
> ── [ 28.48ms - stdout ] ────────────────────────────────────────────────────────
> │ { lines = [|"Hello World"|]
> │   position = { line = 0
> │                column = 1 } }
> │ 
> │ Some 'H'
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let newInput, charOpt = fromStr "Hello\n\nWorld" |> nextChar
> 
> newInput |> _assertEqual {
>     lines = [[| "Hello"; ""; "World" |]]
>     position = { line = 0; column = 1 }
> }
> charOpt |> _assertEqual (Some 'H')
> 
> ── [ 20.86ms - stdout ] ────────────────────────────────────────────────────────
> │ { lines = [|"Hello"; ""; "World"|]
> │   position = { line = 0
> │                column = 1 } }
> │ 
> │ Some 'H'
> │ 
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### Parser
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type Input = InputState
> type ParserLabel = string
> type ParserError = string
> 
> type ParserPosition =
>     {
>         currentLine : string
>         line : int
>         column : int
>     }
> 
> type ParseResult<'a> =
>     | Success of 'a
>     | Failure of ParserLabel * ParserError * ParserPosition
> 
> type Parser<'a> =
>     {
>         label : ParserLabel
>         parseFn : Input -> ParseResult<'a * Input>
>     }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline printResult result =
>     match result with
>     | Success (value, input) ->
>         printfn $"%A{value}"
>     | Failure (label, error, parserPos) ->
>         let errorLine = parserPos.currentLine
>         let colPos = parserPos.column
>         let linePos = parserPos.line
>         let failureCaret = $"{' ' |> string |> String.replicate colPos}^{error}"
>         printfn $"Line:%i{linePos} Col:%i{colPos} Error parsing 
> %s{label}\n%s{errorLine}\n%s{failureCaret}"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline runOnInput parser input =
>     parser.parseFn input
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline run parser inputStr =
>     runOnInput parser (fromStr inputStr)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline parserPositionFromInputState (inputState : Input) =
>     {
>         currentLine = currentLine inputState
>         line = inputState.position.line
>         column = inputState.position.column
>     }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline getLabel parser =
>     parser.label
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline setLabel parser newLabel =
>     {
>         label = newLabel
>         parseFn = fun input ->
>             match parser.parseFn input with
>             | Success s -> Success s
>             | Failure (oldLabel, err, pos) -> Failure (newLabel, err, pos)
>     }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let (<?>) = setLabel
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline satisfy predicate label =
>     {
>         label = label
>         parseFn = fun input ->
>             let remainingInput, charOpt = nextChar input
>             match charOpt with
>             | None ->
>                 let err = "No more input"
>                 let pos = parserPositionFromInputState input
>                 Failure (label, err, pos)
>             | Some first ->
>                 if predicate first
>                 then Success (first, remainingInput)
>                 else
>                     let err = $"Unexpected '%c{first}'"
>                     let pos = parserPositionFromInputState input
>                     Failure (label, err, pos)
>     }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "Hello"
> let parser = satisfy (fun c -> c = 'H') "H"
> runOnInput parser input |> _assertEqual (
>     Success (
>         'H',
>         {
>             lines = [[| "Hello" |]]
>             position = { line = 0; column = 1 }
>         }
>     )
> )
> 
> ── [ 26.26ms - stdout ] ────────────────────────────────────────────────────────
> │ Success ('H', { lines = [|"Hello"|]
> │                 position = { line = 0
> │                              column = 1 } })
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "World"
> let parser = satisfy (fun c -> c = 'H') "H"
> runOnInput parser input |> _assertEqual (
>     Failure (
>         "H",
>         "Unexpected 'W'",
>         {
>             currentLine = "World"
>             line = 0
>             column = 0
>         }
>     )
> )
> 
> ── [ 22.40ms - stdout ] ────────────────────────────────────────────────────────
> │ Failure ("H", "Unexpected 'W'", { currentLine = "World"
> │                                   line = 0
> │                                   column = 0 })
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline bindP f p =
>     {
>         label = "unknown"
>         parseFn = fun input ->
>             match runOnInput p input with
>             | Failure (label, err, pos) -> Failure (label, err, pos)
>             | Success (value1, remainingInput) -> runOnInput (f value1) 
> remainingInput
>     }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline (>>=) p f = bindP f p
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "Hello"
> let parser = satisfy (fun c -> c = 'H') "H"
> let parser2 = parser >>= fun c -> satisfy (fun c -> c = 'e') "e"
> runOnInput parser2 input |> _assertEqual (
>     Success (
>         'e',
>         {
>             lines = [[| "Hello" |]]
>             position = { line = 0; column = 2 }
>         }
>     )
> )
> 
> ── [ 30.23ms - stdout ] ────────────────────────────────────────────────────────
> │ Success ('e', { lines = [|"Hello"|]
> │                 position = { line = 0
> │                              column = 2 } })
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "World"
> let parser = satisfy (fun c -> c = 'W') "W"
> let parser2 = parser >>= fun c -> satisfy (fun c -> c = 'e') "e"
> runOnInput parser2 input |> _assertEqual (
>     Failure (
>         "e",
>         "Unexpected 'o'",
>         {
>             currentLine = "World"
>             line = 0
>             column = 1
>         }
>     )
> )
> 
> ── [ 31.22ms - stdout ] ────────────────────────────────────────────────────────
> │ Failure ("e", "Unexpected 'o'", { currentLine = "World"
> │                                   line = 0
> │                                   column = 1 })
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline returnP x =
>     {
>         label = $"%A{x}"
>         parseFn = fun input -> Success (x, input)
>     }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "Hello"
> let parser = returnP "Hello"
> runOnInput parser input |> _assertEqual (
>     Success (
>         "Hello",
>         {
>             lines = [[| "Hello" |]]
>             position = { line = 0; column = 0 }
>         }
>     )
> )
> 
> ── [ 18.27ms - stdout ] ────────────────────────────────────────────────────────
> │ Success ("Hello", { lines = [|"Hello"|]
> │                     position = { line = 0
> │                                  column = 0 } })
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline mapP f =
>     bindP (f >> returnP)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let (<!>) = mapP
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline (|>>) x f = f <!> x
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "Hello"
> let parser = satisfy (fun c -> c = 'H') "H"
> let parser2 = parser |>> string
> runOnInput parser2 input |> _assertEqual (
>     Success (
>         "H",
>         {
>             lines = [[| "Hello" |]]
>             position = { line = 0; column = 1 }
>         }
>     )
> )
> 
> ── [ 26.17ms - stdout ] ────────────────────────────────────────────────────────
> │ Success ("H", { lines = [|"Hello"|]
> │                 position = { line = 0
> │                              column = 1 } })
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline applyP fP xP =
>     fP >>=
>         fun f ->
>             xP >>=
>                 fun x ->
>                     returnP (f x)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let (<*>) = applyP
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline lift2 f xP yP =
>     returnP f <*> xP <*> yP
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "Hello"
> let parser = satisfy (fun c -> c = 'H') "H"
> let parser2 = satisfy (fun c -> c = 'e') "e"
> let parser3 = lift2 (fun c1 c2 -> string c1 + string c2) parser parser2
> runOnInput parser3 input |> _assertEqual (
>     Success (
>         "He",
>         {
>             lines = [[| "Hello" |]]
>             position = { line = 0; column = 2 }
>         }
>     )
> )
> 
> ── [ 45.30ms - stdout ] ────────────────────────────────────────────────────────
> │ Success ("He", { lines = [|"Hello"|]
> │                  position = { line = 0
> │                               column = 2 } })
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline andThen p1 p2 =
>     p1 >>=
>         fun p1Result ->
>             p2 >>=
>                 fun p2Result ->
>                     returnP (p1Result, p2Result)
>     <?> $"{getLabel p1} andThen {getLabel p2}"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let (.>>.) = andThen
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "Hello"
> let parser = satisfy (fun c -> c = 'H') "H"
> let parser2 = satisfy (fun c -> c = 'e') "e"
> let parser3 = parser .>>. parser2
> runOnInput parser3 input |> _assertEqual (
>     Success (
>         ('H', 'e'),
>         {
>             lines = [[| "Hello" |]]
>             position = { line = 0; column = 2 }
>         }
>     )
> )
> 
> ── [ 33.94ms - stdout ] ────────────────────────────────────────────────────────
> │ Success (('H', 'e'), { lines = [|"Hello"|]
> │                        position = { line = 0
> │                                     column = 2 } })
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline orElse p1 p2 =
>     {
>         label = $"{getLabel p1} orElse {getLabel p2}"
>         parseFn = fun input ->
>             match runOnInput p1 input with
>             | Success _ as result -> result
>             | Failure _ -> runOnInput p2 input
>     }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let (<|>) = orElse
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "hello"
> let parser = satisfy (fun c -> c = 'H') "H"
> let parser2 = satisfy (fun c -> c = 'h') "h"
> let parser3 = parser <|> parser2
> runOnInput parser3 input |> _assertEqual (
>     Success (
>         'h',
>         {
>             lines = [[| "hello" |]]
>             position = { line = 0; column = 1 }
>         }
>     )
> )
> 
> ── [ 27.80ms - stdout ] ────────────────────────────────────────────────────────
> │ Success ('h', { lines = [|"hello"|]
> │                 position = { line = 0
> │                              column = 1 } })
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline choice listOfParsers =
>     listOfParsers |> List.reduce (<|>)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "hello"
> let parser = satisfy (fun c -> c = 'H') "H"
> let parser2 = satisfy (fun c -> c = 'h') "h"
> let parser3 = choice [[ parser; parser2 ]]
> runOnInput parser3 input |> _assertEqual (
>     Success (
>         'h',
>         {
>             lines = [[| "hello" |]]
>             position = { line = 0; column = 1 }
>         }
>     )
> )
> 
> ── [ 28.63ms - stdout ] ────────────────────────────────────────────────────────
> │ Success ('h', { lines = [|"hello"|]
> │                 position = { line = 0
> │                              column = 1 } })
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let rec sequence parserList =
>     match parserList with
>     | [[]] -> returnP [[]]
>     | head :: tail -> (lift2 cons) head (sequence tail)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "Hello"
> let parser = satisfy (fun c -> c = 'H') "H"
> let parser2 = satisfy (fun c -> c = 'e') "e"
> let parser3 = sequence [[ parser; parser2 ]]
> runOnInput parser3 input |> _assertEqual (
>     Success (
>         [[ 'H'; 'e' ]],
>         {
>             lines = [[| "Hello" |]]
>             position = { line = 0; column = 2 }
>         }
>     )
> )
> 
> ── [ 35.25ms - stdout ] ────────────────────────────────────────────────────────
> │ Success (['H'; 'e'], { lines = [|"Hello"|]
> │                        position = { line = 0
> │                                     column = 2 } })
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let rec parseZeroOrMore parser input =
>     match runOnInput parser input with
>     | Failure (_, _, _) ->
>         [[]], input
>     | Success (firstValue, inputAfterFirstParse) ->
>         let subsequentValues, remainingInput = parseZeroOrMore parser 
> inputAfterFirstParse
>         firstValue :: subsequentValues, remainingInput
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline many parser =
>     {
>         label = $"many {getLabel parser}"
>         parseFn = fun input -> Success (parseZeroOrMore parser input)
>     }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "hello"
> let parser = satisfy (fun c -> c = 'H') "H"
> let parser2 = many parser
> runOnInput parser2 input |> _assertEqual (
>     Success (
>         [[]],
>         {
>             lines = [[| "hello" |]]
>             position = { line = 0; column = 0 }
>         }
>     )
> )
> 
> ── [ 28.47ms - stdout ] ────────────────────────────────────────────────────────
> │ Success ([], { lines = [|"hello"|]
> │                position = { line = 0
> │                             column = 0 } })
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline many1 p =
>     p >>=
>         fun head ->
>             many p >>=
>                 fun tail ->
>                     returnP (head :: tail)
>     <?> $"many1 {getLabel p}"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "hello"
> let parser = satisfy (fun c -> c = 'H') "H"
> let parser2 = many1 parser
> runOnInput parser2 input |> _assertEqual (
>     Failure (
>         "many1 H",
>         "Unexpected 'h'",
>         {
>             currentLine = "hello"
>             line = 0
>             column = 0
>         }
>     )
> )
> 
> ── [ 36.24ms - stdout ] ────────────────────────────────────────────────────────
> │ Failure ("many1 H", "Unexpected 'h'", { currentLine = "hello"
> │                                         line = 0
> │                                         column = 0 })
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline opt p =
>     let some = p |>> Some
>     let none = returnP None
>     (some <|> none)
>     <?> $"opt {getLabel p}"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "hello"
> let parser = satisfy (fun c -> c = 'H') "H"
> let parser2 = opt parser
> runOnInput parser2 input |> _assertEqual (
>     Success (
>         None,
>         {
>             lines = [[| "hello" |]]
>             position = { line = 0; column = 0 }
>         }
>     )
> )
> 
> ── [ 30.33ms - stdout ] ────────────────────────────────────────────────────────
> │ Success (None, { lines = [|"hello"|]
> │                  position = { line = 0
> │                               column = 0 } })
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline (.>>) p1 p2 =
>     p1 .>>. p2
>     |> mapP fst
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline (>>.) p1 p2 =
>     p1 .>>. p2
>     |> mapP snd
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline between p1 p2 p3 =
>     p1 >>. p2 .>> p3
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "[[Hello]]"
> let parser =
>     between
>         (satisfy (fun c -> c = '[[') "[[")
>         (many (satisfy (fun c -> [[ 'a' .. 'z' ]] @ [[ 'A' .. 'Z' ]] |> 
> List.contains c) "letter"))
>         (satisfy (fun c -> c = ']]') "]]")
> runOnInput parser input |> _assertEqual (
>     Success (
>         [[ 'H'; 'e'; 'l'; 'l'; 'o' ]],
>         {
>             lines = [[| "[[Hello]]" |]]
>             position = { line = 0; column = 7 }
>         }
>     )
> )
> 
> ── [ 90.02ms - stdout ] ────────────────────────────────────────────────────────
> │ Success (['H'; 'e'; 'l'; 'l'; 'o'], { lines = [|"[Hello]"|]
> │                                       position = { line = 0
> │                                                    column = 7
> } })
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline sepBy1 p sep =
>     let sepThenP = sep >>. p
>     p .>>. many sepThenP
>     |>> fun (p, pList) -> p :: pList
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline sepBy p sep =
>     sepBy1 p sep <|> returnP [[]]
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "Hello,World"
> let parser = sepBy (many (satisfy (fun c -> c <> ',') "not comma")) (satisfy 
> (fun c -> c = ',') "comma")
> runOnInput parser input |> _assertEqual (
>     Success (
>         [[ [[ 'H'; 'e'; 'l'; 'l'; 'o' ]]; [[ 'W'; 'o'; 'r'; 'l'; 'd'; '\n' ]] 
> ]],
>         {
>             lines = [[| "Hello,World" |]]
>             position = { line = 1; column = 0 }
>         }
>     )
> )
> 
> ── [ 60.78ms - stdout ] ────────────────────────────────────────────────────────
> │ Success ([['H'; 'e'; 'l'; 'l'; 'o']; ['W'; 'o'; 'r'; 'l'; 
> 'd'; '\010']], { lines = [|"Hello,World"|]
> │
> position = { line = 1
> │
>                                                                                 
> column = 0 } })
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline pchar charToMatch =
>     satisfy ((=) charToMatch) $"%c{charToMatch}"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline anyOf listOfChars =
>     listOfChars
>     |> List.map pchar
>     |> choice
>     <?> $"anyOf %A{listOfChars}"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "Hello"
> let parser = anyOf [[ 'H'; 'e'; 'l'; 'o' ]] |> many
> runOnInput parser input |> _assertEqual (
>     Success (
>         [[ 'H'; 'e'; 'l'; 'l'; 'o' ]],
>         {
>             lines = [[| "Hello" |]]
>             position = { line = 0; column = 5 }
>         }
>     )
> )
> 
> ── [ 31.84ms - stdout ] ────────────────────────────────────────────────────────
> │ Success (['H'; 'e'; 'l'; 'l'; 'o'], { lines = [|"Hello"|]
> │                                       position = { line = 0
> │                                                    column = 5
> } })
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline charListToStr charList =
>     charList |> List.toArray |> String
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline manyChars cp =
>     many cp
>     |>> charListToStr
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline manyChars1 cp =
>     many1 cp
>     |>> charListToStr
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "Hello"
> let parser = manyChars1 (anyOf [[ 'H'; 'e'; 'l'; 'o' ]])
> runOnInput parser input |> _assertEqual (
>     Success (
>         "Hello",
>         {
>             lines = [[| "Hello" |]]
>             position = { line = 0; column = 5 }
>         }
>     )
> )
> 
> ── [ 43.66ms - stdout ] ────────────────────────────────────────────────────────
> │ Success ("Hello", { lines = [|"Hello"|]
> │                     position = { line = 0
> │                                  column = 5 } })
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline pstring str =
>     str
>     |> List.ofSeq
>     |> List.map pchar
>     |> sequence
>     |> mapP charListToStr
>     <?> str
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "Hello"
> let parser = pstring "Hello"
> runOnInput parser input |> _assertEqual (
>     Success (
>         "Hello",
>         {
>             lines = [[| "Hello" |]]
>             position = { line = 0; column = 5 }
>         }
>     )
> )
> 
> ── [ 35.39ms - stdout ] ────────────────────────────────────────────────────────
> │ Success ("Hello", { lines = [|"Hello"|]
> │                     position = { line = 0
> │                                  column = 5 } })
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let whitespaceChar =
>     satisfy Char.IsWhiteSpace "whitespace"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let spaces = many whitespaceChar
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let spaces1 = many1 whitespaceChar
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "  Hello"
> let parser = spaces1 .>>. pstring "Hello"
> runOnInput parser input |> _assertEqual (
>     Success (
>         ([[ ' '; ' ' ]], "Hello"),
>         {
>             lines = [[| "  Hello" |]]
>             position = { line = 0; column = 7 }
>         }
>     )
> )
> 
> ── [ 43.16ms - stdout ] ────────────────────────────────────────────────────────
> │ Success (([' '; ' '], "Hello"), { lines = [|"  Hello"|]
> │                                   position = { line = 0
> │                                                column = 7 } 
> })
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let digitChar =
>     satisfy Char.IsDigit "digit"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "Hello"
> let parser = digitChar
> runOnInput parser input |> _assertEqual (
>     Failure (
>         "digit",
>         "Unexpected 'H'",
>         {
>             currentLine = "Hello"
>             line = 0
>             column = 0
>         }
>     )
> )
> 
> ── [ 15.31ms - stdout ] ────────────────────────────────────────────────────────
> │ Failure ("digit", "Unexpected 'H'", { currentLine = "Hello"
> │                                       line = 0
> │                                       column = 0 })
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let pint =
>     let inline resultToInt (sign, digits) =
>         let i = int digits
>         match sign with
>         | Some ch -> -i
>         | None -> i
> 
>     let digits = manyChars1 digitChar
> 
>     opt (pchar '-') .>>. digits
>     |> mapP resultToInt
>     <?> "integer"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run pint "-123"
> |> _assertEqual (
>     Success (
>         -123,
>         {
>             lines = [[| "-123" |]]
>             position = { line = 0; column = 4 }
>         }
>     )
> )
> 
> ── [ 20.23ms - stdout ] ────────────────────────────────────────────────────────
> │ Success (-123, { lines = [|"-123"|]
> │                  position = { line = 0
> │                               column = 4 } })
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let pfloat =
>     let inline resultToFloat (((sign, digits1), point), digits2) =
>         let fl = float $"{digits1}.{digits2}"
>         match sign with
>         | Some ch -> -fl
>         | None -> fl
> 
>     let digits = manyChars1 digitChar
> 
>     opt (pchar '-') .>>. digits .>>. pchar '.' .>>. digits
>     |> mapP resultToFloat
>     <?> "float"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run pfloat "-123.45"
> |> _assertEqual (
>     Success (
>         -123.45,
>         {
>             lines = [[| "-123.45" |]]
>             position = { line = 0; column = 7 }
>         }
>     )
> )
> 
> ── [ 25.26ms - stdout ] ────────────────────────────────────────────────────────
> │ Success (-123.45, { lines = [|"-123.45"|]
> │                     position = { line = 0
> │                                  column = 7 } })
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline createParserForwardedToRef<'a> () =
>     let mutable parserRef : Parser<'a> =
>         {
>             label = "unknown"
>             parseFn = fun _ -> failwith "unfixed forwarded parser"
>         }
> 
>     let wrapperParser =
>         { parserRef with
>             parseFn = fun input -> runOnInput parserRef input
>         }
> 
>     wrapperParser, (fun v -> parserRef <- v)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline (>>%) p x =
>     p
>     |>> fun _ -> x
00:00:14 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 33524 }
00:00:14 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/apps/parser/Parser.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/parser/Parser.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:15 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/parser/Parser.dib.ipynb to html
00:00:15 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:15 v #7 !   validate(nb)
00:00:16 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:16 v #9 !   return _pygments_highlight(
00:00:16 v #10 ! [NbConvertApp] Writing 413727 bytes to /home/runner/work/polyglot/polyglot/apps/parser/Parser.dib.html
00:00:16 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 898 }
00:00:16 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 898 }
00:00:16 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/parser/Parser.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/parser/Parser.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:16 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:00:16 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:00:16 d #16 spiral.run / dib / { exit_code = 0; result_length = 34481 }
00:00:00 d #1 writeDibCode / output: Fs / path: JsonParser.dib
00:00:00 d #1 writeDibCode / output: Fs / path: Parser.dib
00:00:00 d #2 parseDibCode / output: Fs / file: JsonParser.dib
00:00:00 d #3 parseDibCode / output: Fs / file: Parser.dib
In [ ]:
{ pwsh ../apps/spiral/build.ps1 } | Invoke-Block
00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "Supervisor.dib", "--retries", "3"])) }
00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib", "--output-path", "/home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ # Supervisor (Polyglot)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> #r 
> @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan
> dard2.1/FSharp.Control.AsyncSeq.dll"
> #r 
> @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6.
> 0/System.Reactive.dll"
> #r 
> @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/
> netstandard2.0/System.Reactive.Linq.dll"
> #r 
> @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll"
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.com
> mon/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Common.dll"
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.cli
> ent/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Client.dll"
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.common/7.0.0
> /lib/net7.0/Microsoft.AspNetCore.SignalR.Common.dll"
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client/7.0.0
> /lib/net7.0/Microsoft.AspNetCore.SignalR.Client.dll"
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client.core/
> 7.0.0/lib/net7.0/Microsoft.AspNetCore.SignalR.Client.Core.dll"
> #r 
> @"../../../../../../../.nuget/packages/fsharp.json/0.4.1/lib/netstandard2.0/FSha
> rp.Json.dll"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> #if !INTERACTIVE
> open Lib
> #endif
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> open Common
> open SpiralFileSystem.Operators
> open Microsoft.AspNetCore.SignalR.Client
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### sendJson
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let sendJson (port : int) (json : string) = async {
>     let host = "127.0.0.1"
>     let! portOpen = SpiralNetworking.test_port_open host port
>     if portOpen then
>         try
>             let connection = 
> HubConnectionBuilder().WithUrl($"http://{host}:{port}").Build()
>             do! connection.StartAsync () |> Async.AwaitTask
>             let! result = connection.InvokeAsync<string> ("ClientToServerMsg", 
> json) |> Async.AwaitTask
>             do! connection.StopAsync () |> Async.AwaitTask
>             trace Verbose (fun () -> $"Supervisor.sendJson / port: {port} / 
> json: {json |> SpiralSm.ellipsis_end 200} / result: {result |> Option.ofObj |> 
> Option.map (SpiralSm.ellipsis_end 200)}") _locals
>             return Some result
>         with ex ->
>             trace Critical (fun () -> $"Supervisor.sendJson / port: {port} / 
> json: {json |> SpiralSm.ellipsis_end 200} / ex: {ex |> 
> SpiralSm.format_exception}") _locals
>             return None
>     else
>         trace Debug (fun () -> $"Supervisor.sendJson / port: {port} / error: 
> port not open") _locals
>         return None
> }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### sendObj
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let sendObj port obj =
>     obj
>     |> System.Text.Json.JsonSerializer.Serialize
>     |> sendJson port
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### VSCPos
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type VSCPos = {| line : int; character : int |}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### VSCRange
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type VSCRange = VSCPos * VSCPos
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### RString
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type RString = VSCRange * string
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### TracedError
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type TracedError = {| trace : string list; message : string |}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### ClientErrorsRes
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type ClientErrorsRes =
>     | FatalError of string
>     | TracedError of TracedError
>     | PackageErrors of {| uri : string; errors : RString list |}
>     | TokenizerErrors of {| uri : string; errors : RString list |}
>     | ParserErrors of {| uri : string; errors : RString list |}
>     | TypeErrors of {| uri : string; errors : RString list |}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### workspaceRoot
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let workspaceRoot = SpiralFileSystem.get_workspace_root ()
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### awaitCompiler
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let awaitCompiler port cancellationToken = async {
>     let host = "127.0.0.1"
>     let struct (ct, disposable) = cancellationToken |> 
> SpiralThreading.new_disposable_token
>     let! ct = ct |> SpiralAsync.merge_cancellation_token_with_default_async
> 
>     let compiler = MailboxProcessor.Start (fun inbox -> async {
>         let! availablePort = SpiralNetworking.get_available_port (Some 180) host
> port
>         if availablePort <> port then
>             inbox.Post (port, false)
>         else
>             let compilerPath =
>                 workspaceRoot </> "deps/The-Spiral-Language/The Spiral Language 
> 2/artifacts/bin/The Spiral Language 2/release"
>                 |> System.IO.Path.GetFullPath
> 
>             let dllPath = compilerPath </> "Spiral.dll"
> 
>             let! exitCode, result =
>                 SpiralRuntime.execution_options (fun x ->
>                     { x with
>                         l0 = $@"dotnet ""{dllPath}"" --port {availablePort} 
> --default-int i32 --default-float f64"
>                         l1 = Some ct
>                         l3 = Some (fun struct (_, line, _) -> async {
>                             if line |> SpiralSm.contains 
> $"System.IO.IOException: Failed to bind to address http://{host}:{port}: address
> already in use." then
>                                 inbox.Post (port, false)
> 
>                             if line |> SpiralSm.contains $"Server bound to: 
> http://localhost:{availablePort}" then
>                                 let rec loop retry = async {
>                                     do!
>                                         SpiralNetworking.wait_for_port_access 
> (Some 100) true host availablePort
>                                         |> Async.runWithTimeoutAsync 500
>                                         |> Async.Ignore
> 
>                                     let _locals () = $"port: {availablePort} / 
> retry: {retry} / {_locals ()}"
>                                     try
>                                         let pingObj = {| Ping = true |}
>                                         let! pingResult = pingObj |> sendObj 
> availablePort
>                                         trace Verbose (fun () -> 
> $"Supervisor.awaitCompiler / Ping / result: '%A{pingResult}'") _locals
> 
>                                         match pingResult with
>                                         | Some _ -> inbox.Post (availablePort, 
> true)
>                                         | None -> do! loop (retry + 1)
>                                     with ex ->
>                                         trace Verbose (fun () -> 
> $"Supervisor.awaitCompiler / Ping / ex: {ex |> SpiralSm.format_exception}") 
> _locals
>                                         do! loop (retry + 1)
>                                 }
>                                 do! loop 1
>                         })
>                         l6 = Some workspaceRoot
>                     }
>                 )
>                 |> SpiralRuntime.execute_with_options_async
> 
>             trace Debug (fun () -> $"Supervisor.awaitCompiler / exitCode: 
> {exitCode} / result: {result}") _locals
>             disposable.Dispose ()
>     }, ct)
> 
>     let! serverPort, managed = compiler.Receive ()
> 
>     let connection = 
> HubConnectionBuilder().WithUrl($"http://{host}:{serverPort}").Build ()
>     do! connection.StartAsync () |> Async.AwaitTask
> 
>     let event = Event<_> ()
>     let disposable' = connection.On<string> ("ServerToClientMsg", event.Trigger)
>     let stream =
>         FSharp.Control.AsyncSeq.unfoldAsync
>             (fun () -> async {
>                 let! msg = event.Publish |> Async.AwaitEvent
>                 return Some (msg |> 
> FSharp.Json.Json.deserialize<ClientErrorsRes>, ())
>             })
>             ()
> 
>     let disposable' =
>         new_disposable (fun () ->
>             async {
>                 disposable'.Dispose ()
>                 do! connection.StopAsync () |> Async.AwaitTask
>                 disposable.Dispose ()
>                 if managed
>                 then do!
>                     SpiralNetworking.wait_for_port_access (Some 100) false host 
> serverPort
>                     |> Async.runWithTimeoutAsync 1500
>                     |> Async.Ignore
>             }
>             |> Async.RunSynchronously
>         )
> 
>     return
>         serverPort,
>         stream,
>         ct,
>         disposable'
> }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### getFilePathFromUri
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let getFilePathFromUri uri =
>     match System.Uri.TryCreate (uri, System.UriKind.Absolute) with
>     | true, uri -> uri.AbsolutePath |> System.IO.Path.GetFullPath
>     | _ -> failwith "invalid uri"
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### getCompilerPort
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let getCompilerPort () =
>     13805
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### serialize_obj
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
>     let serializeObj obj =
>         try
>             obj
>             |> FSharp.Json.Json.serialize
>             |> SpiralSm.replace "\\\\" "\\"
>             |> SpiralSm.replace "\\r\\n" "\n"
>             |> SpiralSm.replace "\\n" "\n"
>         with ex ->
>             trace Critical (fun () -> "Supervisor.serialize_obj / obj: %A{obj}")
> _locals
>             ""
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### Backend
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type Backend =
>     | Fsharp
>     | Cuda
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### buildFile
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let buildFile backend timeout port cancellationToken path =
>     let rec loop retry = async {
>         let fullPath = path |> System.IO.Path.GetFullPath |> 
> SpiralFileSystem.normalize_path
>         let fileDir = fullPath |> System.IO.Path.GetDirectoryName
>         let fileName = fullPath |> System.IO.Path.GetFileNameWithoutExtension
>         let! code = fullPath |> SpiralFileSystem.read_all_text_async
> 
>         let stream, disposable = fileDir |> FileSystem.watchDirectory (fun _ -> 
> true)
>         use _ = disposable
> 
>         let struct (token, disposable) = SpiralThreading.new_disposable_token 
> cancellationToken
>         use _ = disposable
> 
>         let port = port |> Option.defaultWith getCompilerPort
>         let! serverPort, errors, ct, disposable = awaitCompiler port (Some 
> token)
>         use _ = disposable
> 
>         let outputFileName =
>             match backend with
>             | Fsharp -> $"{fileName}.fsx"
>             | Cuda -> $"{fileName}.py"
> 
>         let outputContentSeq =
>             stream
>             |> FSharp.Control.AsyncSeq.chooseAsync (function
>                 | _, (FileSystem.FileSystemChange.Changed (path, Some text))
>                     when (path |> System.IO.Path.GetFileName) = outputFileName
>                     ->
>                         // fileDir </> path |> 
> SpiralFileSystem.read_all_text_retry_async
>                         text |> Some |> Async.init
>                 | _ -> None |> Async.init
>             )
>             |> FSharp.Control.AsyncSeq.map (fun content ->
>                 Some (content |> SpiralSm.replace "\r\n" "\n"), None
>             )
> 
>         let printErrorData (data : {| uri : string; errors : RString list |}) =
>             let fileName = data.uri |> System.IO.Path.GetFileName
>             let errors =
>                 data.errors
>                 |> List.map snd
>                 |> SpiralSm.concat "\n"
>             $"{fileName}:\n{errors}"
> 
>         let errorsSeq =
>             errors
>             |> FSharp.Control.AsyncSeq.choose (fun error ->
>                 match error with
>                 | FatalError message ->
>                     Some (message, error)
>                 | TracedError data ->
>                     Some (data.message, error)
>                 | PackageErrors data when data.errors |> List.isEmpty |> not ->
>                     Some (data |> printErrorData, error)
>                 | TokenizerErrors data when data.errors |> List.isEmpty |> not 
> ->
>                     Some (data |> printErrorData, error)
>                 | ParserErrors data when data.errors |> List.isEmpty |> not ->
>                     Some (data |> printErrorData, error)
>                 | TypeErrors data when data.errors |> List.isEmpty |> not ->
>                     Some (data |> printErrorData, error)
>                 | _ -> None
>             )
>             |> FSharp.Control.AsyncSeq.map (fun (message, error) ->
>                 None, Some (message, error)
>             )
> 
>         let timerSeq =
>             500
>             |> FSharp.Control.AsyncSeq.intervalMs
>             |> FSharp.Control.AsyncSeq.map (fun _ -> None, None)
> 
>         let outputSeq =
>             [[ outputContentSeq; errorsSeq; timerSeq ]]
>             |> FSharp.Control.AsyncSeq.mergeAll
> 
>         let! outputChild =
>             ((None, [[]], 0), outputSeq)
>             ||> FSharp.Control.AsyncSeq.scan (
>                 fun (outputContentResult, errors, typeErrorCount) 
> (outputContent, error) ->
>                     trace Debug (fun () -> $"Supervisor.buildFile / 
> AsyncSeq.scan / path: {path} / errors: {errors |> serializeObj} / 
> outputContentResult: {outputContentResult} / typeErrorCount: {typeErrorCount} / 
> retry: {retry} / error: {error} / outputContent:\n{outputContent |> 
> Option.defaultValue System.String.Empty |> SpiralSm.ellipsis_end 1500}") _locals
>                     match outputContent, error with
>                     | Some outputContent, None -> Some outputContent, errors, 
> typeErrorCount
>                     | None, Some (_, FatalError "File main has a type error 
> somewhere in its path.") ->
>                         outputContentResult, errors, typeErrorCount + 1
>                     | None, Some error -> outputContentResult, error :: errors, 
> typeErrorCount
>                     | None, None when typeErrorCount >= 1 ->
>                         outputContentResult, errors, typeErrorCount + 1
>                     | _ -> outputContentResult, errors, typeErrorCount
>             )
>             |> FSharp.Control.AsyncSeq.takeWhileInclusive (fun (outputContent, 
> errors, typeErrorCount) ->
>                 trace Debug (fun () -> $"Supervisor.buildFile / 
> takeWhileInclusive / path: {path} / errors: {errors |> serializeObj} / 
> typeErrorCount: {typeErrorCount} / retry: {retry} / 
> outputContent:\n{outputContent |> Option.defaultValue System.String.Empty |> 
> SpiralSm.ellipsis_end 1500}") _locals
>     #if INTERACTIVE
>                 let errorWait = 2
>     #else
>                 let errorWait = 2
>     #endif
>                 match outputContent, errors with
>                 | None, [[]] when typeErrorCount > errorWait -> false
>                 | None, [[]] -> true
>                 | _ -> false
>             )
>             |> FSharp.Control.AsyncSeq.tryLast
>             |> Async.withCancellationToken ct
>             |> Async.catch
>             |> Async.runWithTimeoutAsync timeout
>             |> Async.StartChild
> 
>         // do! Async.Sleep 60
> 
>         let fullPathUri = fullPath |> SpiralFileSystem.normalize_path |> 
> SpiralFileSystem.new_file_uri
> 
>         let fileOpenObj = {| FileOpen = {| uri = fullPathUri; spiText = code |} 
> |}
>         let! _fileOpenResult = fileOpenObj |> sendObj serverPort
> 
>         // do! Async.Sleep 60
> 
>         let backendId =
>             match backend with
>             | Fsharp -> "Fsharp"
>             | Cuda -> "Python + Cuda"
>         let buildFileObj = {| BuildFile = {| uri = fullPathUri; backend = 
> backendId |} |}
>         let! _buildFileResult = buildFileObj |> sendObj serverPort
> 
>         let! result, typeErrorCount =
>             outputChild
>             |> Async.map (function
>                 | Some (Ok (Some (outputCode, errors, typeErrorCount))) ->
>                     (outputCode, errors |> List.distinct |> List.rev), 
> typeErrorCount
>                 | Some (Error ex) ->
>                     trace Critical (fun () -> $"Supervisor.buildFile / error: 
> {ex |> SpiralSm.format_exception} / retry: {retry}") _locals
>                     (None, [[]]), 0
>                 | _ -> (None, [[]]), 0
>             )
> 
>         match result with
>         | None, _ when typeErrorCount > 0 && retry = 0 ->
>             return! loop (retry + 1)
>         | _ ->
>             if fileDir |> SpiralSm.starts_with (workspaceRoot </> "target") then
>                 let fileDirUri = fileDir |> SpiralFileSystem.normalize_path |> 
> SpiralFileSystem.new_file_uri
>                 let fileDeleteObj = {| FileDelete = {| uris = [[| fileDirUri |]]
> |} |}
>                 let! _fileDeleteResult = fileDeleteObj |> sendObj serverPort
>                 ()
> 
>             let outputPath = fileDir </> outputFileName
>             return outputPath, result
>     }
>     loop 0
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### SpiralInput
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type SpiralInput =
>     | Spi of string * string option
>     | Spir of string
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### persistCode
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let persistCode (input: {| backend : Backend option; input: SpiralInput; 
> packages: string [[]] |}) = async {
>     let targetDir = workspaceRoot </> "target/spiral_Eval"
> 
>     let packagesDir = targetDir </> "packages"
> 
>     let hashHex = $"%A{input.backend}%A{input.input}" |> SpiralCrypto.hash_text
> 
>     let packageDir = packagesDir </> hashHex
>     packageDir |> System.IO.Directory.CreateDirectory |> ignore
> 
>     let moduleName = "main"
> 
>     let spirModule, spiModule =
>         match input.input with
>         | Spi (_spi, Some _spir) -> true, true
>         | Spi (_spi, None) -> false, true
>         | Spir _spir -> true, false
>         |> fun (spir, spi) ->
>             (if spir then $"{moduleName}_real*-" else ""),
>             if spi then moduleName else ""
> 
>     let libLinkTargetPath = workspaceRoot </> "lib/spiral"
>     let libLinkPath = packageDir </> "spiral"
> 
>     let packagesModule =
>         input.packages
>         |> Array.map (fun package ->
>             let path = workspaceRoot </> package
>             let packageName = path |> System.IO.Path.GetFileName
>             let libLinkPath = packageDir </> packageName
>             libLinkPath |> SpiralFileSystem.link_directory path
>             $"{packageName}-"
>         )
>         |> String.concat "\n    "
> 
>     let packageDir' =
>         if input.packages |> Array.isEmpty
>         then workspaceRoot </> "lib"
>         else
>             libLinkPath |> SpiralFileSystem.link_directory libLinkTargetPath
>             packageDir
> 
>     let spiprojPath = packageDir </> "package.spiproj"
>     let spiprojCode =
>         $"""packageDir: {packageDir'}
> packages:
>     |core-
>     spiral-
>     {packagesModule}
> modules:
>     {spirModule}
>     {spiModule}
> """
>     do! spiprojCode |> SpiralFileSystem.write_all_text_exists spiprojPath
> 
>     let spirPath = packageDir </> $"{moduleName}_real.spir"
>     let spiPath = packageDir </> $"{moduleName}.spi"
> 
>     let spirCode, spiCode =
>         match input.input with
>         | Spi (spi, Some spir) -> Some spir, Some spi
>         | Spi (spi, None) -> None, Some spi
>         | Spir spir -> Some spir, None
> 
>     match spirCode with
>     | Some spir -> do! spir |> SpiralFileSystem.write_all_text_exists spirPath
>     | None -> ()
>     match spiCode with
>     | Some spi -> do! spi |> SpiralFileSystem.write_all_text_exists spiPath
>     | None -> ()
> 
>     let spiralPath =
>         match input.input with
>         | Spi _ -> spiPath
>         | Spir _ -> spirPath
>     match input.backend with
>     | None -> return spiralPath, None
>     | Some backend ->
>         let outputFileName =
>             let fileName =
>                 match input.input with
>                 | Spi _ -> moduleName
>                 | Spir _ -> $"{moduleName}_real"
>             match backend with
>             | Fsharp -> $"{fileName}.fsx"
>             | Cuda -> $"{fileName}.py"
>         let outputPath = packageDir </> outputFileName
>         if outputPath |> System.IO.File.Exists |> not
>         then return spiralPath, None
>         else
>             let! oldCode = spiralPath |> SpiralFileSystem.read_all_text_async
>             if oldCode <> (spiCode |> Option.defaultValue (spirCode |> 
> Option.defaultValue ""))
>             then return spiralPath, None
>             else
>                 let! outputCode = outputPath |> 
> SpiralFileSystem.read_all_text_async
>                 return spiralPath, Some (outputPath, outputCode |> 
> SpiralSm.replace "\r\n" "\n")
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### buildCode
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let buildCode backend packages isCache timeout cancellationToken input = async {
>     let! mainPath, outputCache =
>         persistCode {| input = input; backend = Some backend; packages = 
> packages |}
>     match outputCache with
>     | Some (outputPath, outputCode) when isCache -> return mainPath, 
> (outputPath, Some outputCode), [[]]
>     | _ ->
>         let! outputPath, (outputCode, errors) = mainPath |> buildFile backend 
> timeout None cancellationToken
>         return mainPath, (outputPath, outputCode), errors
> }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> """inl app () =
>     console.write_line "text"
>     1i32
> 
> inl main () =
>     app
>     |> dyn
>     |> ignore
> """
> |> fun code -> Spi (code, None)
> |> buildCode Fsharp [[||]] false 15000 None
> |> Async.runWithTimeout 15000
> |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> 
> List.map fst)
> |> _assertEqual (
>     Some (
>         Some """let rec closure1 () () : unit =
>     let v0 : (string -> unit) = System.Console.WriteLine
>     let v1 : string = "text"
>     v0 v1
> and closure0 () () : int32 =
>     let v0 : unit = ()
>     let v1 : (unit -> unit) = closure1()
>     let v2 : unit = (fun () -> v1 (); v0) ()
>     1
> let v0 : (unit -> int32) = closure0()
> ()
> """,
>         [[]]
>     )
> )
> 
> ── [ 4.21s - stdout ] ──────────────────────────────────────────────────────────
> │ 00:00:08 v #1 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:05 d #1 runtime.execute_with_options_async / { 
> file_name = dotnet; arguments = US5_0
> │   
> ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral 
> Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 
> --default-int i32 --default-float f64"; options = { command = dotnet 
> "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral 
> Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 
> --default-int i32 --default-float f64; cancellation_token = Some 
> System.Threading.CancellationToken; environment_variables = [||]; on_line = Some
> <fun:compiler@22-4>; stdin = None; trace = true; working_directory = Some 
> "/home/runner/work/polyglot/polyglot" } }
> │ 00:00:08 v #2 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:06 v #2 > 00:00:00 d #1 pwd: 
> /home/runner/work/polyglot/polyglot
> │ 00:00:06 v #3 > 00:00:00 d #2 dllPath: 
> /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language
> 2/artifacts/bin/The Spiral Language 2/release
> │ 00:00:06 v #4 > 00:00:00 d #3 targetDir: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval
> │ 00:00:08 v #3 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:08 v #4 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:08 v #5 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:08 v #6 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:08 v #7 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:08 v #8 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:08 v #9 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:08 v #10 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:08 v #11 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:08 v #12 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:08 v #13 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:08 v #14 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:08 v #15 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:08 v #16 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:08 v #17 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:08 v #18 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:08 v #19 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:08 v #20 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:08 v #21 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:08 v #22 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:08 v #23 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:08 v #24 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:08 v #25 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:08 v #26 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:08 v #27 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:08 v #28 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:08 v #29 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:06 v #5 > Starting the Spiral Server. It is bound 
> to: http://localhost:13805
> │ 00:00:08 v #30 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:08 v #31 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:08 v #32 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:04 v #1 Supervisor.sendJson / port: 13805 / json: 
> {"Ping":true} / result:
> │ 00:00:04 v #2 Supervisor.awaitCompiler / Ping / result: 
> 'Some null' / port: 13805 / retry: 1
> │ 00:00:06 v #6 > Server bound to: http://localhost:13805
> │ 00:00:04 d #3 Supervisor.buildFile / takeWhileInclusive 
> / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5605c
> 65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:04 d #4 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5605c
> 65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:04 d #5 Supervisor.buildFile / takeWhileInclusive 
> / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5605c
> 65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:04 v #6 Supervisor.sendJson / port: 13805 / json: 
> {"FileOpen":{"spiText":"inl app () =\n    console.write_line \u0022text\u0022\n
> 1i32\n\ninl main 
> ...et/spiral_Eval/packages/22ccd04317d5605c65f81c7f777766f357e85dc69f2d6d04b9dc6
> 0aebd08a0d6/main.spi"}} / result:
> │ 00:00:04 v #7 Supervisor.sendJson / port: 13805 / json: 
> {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polygl
> ot/target/spiral_Eval/packages/22ccd04317d5605c65f81c7f777766f357e85dc69f2d6d04b
> 9dc60aebd08a0d6/main.spi"}} / result:
> │ 00:00:04 d #8 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5605c
> 65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:04 d #9 Supervisor.buildFile / takeWhileInclusive 
> / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5605c
> 65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:05 d #10 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5605c
> 65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:05 d #11 Supervisor.buildFile / takeWhileInclusive
> / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5605c
> 65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:05 d #12 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5605c
> 65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:05 d #13 Supervisor.buildFile / takeWhileInclusive
> / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5605c
> 65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:06 d #14 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5605c
> 65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:06 d #15 Supervisor.buildFile / takeWhileInclusive
> / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5605c
> 65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:06 d #16 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5605c
> 65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:06 d #17 Supervisor.buildFile / takeWhileInclusive
> / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5605c
> 65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:07 d #18 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5605c
> 65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ let rec closure1 () () : unit =
> │     let v0 : (string -> unit) = System.Console.WriteLine
> │     let v1 : string = "text"
> │     v0 v1
> │ and closure0 () () : int32 =
> │     let v0 : unit = ()
> │     let v1 : (unit -> unit) = closure1()
> │     let v2 : unit = (fun () -> v1 (); v0) ()
> │     1
> │ let v0 : (unit -> int32) = closure0()
> │ ()
> │ 
> │ 00:00:07 d #19 Supervisor.buildFile / takeWhileInclusive
> / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5605c
> 65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ let rec closure1 () () : unit =
> │     let v0 : (string -> unit) = System.Console.WriteLine
> │     let v1 : string = "text"
> │     v0 v1
> │ and closure0 () () : int32 =
> │     let v0 : unit = ()
> │     let v1 : (unit -> unit) = closure1()
> │     let v2 : unit = (fun () -> v1 (); v0) ()
> │     1
> │ let v0 : (unit -> int32) = closure0()
> │ ()
> │ 
> │ 00:00:07 v #20 Supervisor.sendJson / port: 13805 / json:
> {"FileDelete":{"uris":["file:///home/runner/work/polyglot/polyglot/target/spiral
> _Eval/packages/22ccd04317d5605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6"
> ]}} / result:
> │ 00:00:12 v #33 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:07 d #21 FileSystem.watchWithFilter / Disposing 
> watch stream / filter: FileName, LastWrite
> │ Some
> │   (Some
> │      "let rec closure1 () () : unit =
> │     let v0 : (string -> unit) = System.Console.WriteLine
> │     let v1 : string = "text"
> │     v0 v1
> │ and closure0 () () : int32 =
> │     let v0 : unit = ()
> │     let v1 : (unit -> unit) = closure1()
> │     let v2 : unit = (fun () -> v1 (); v0) ()
> │     1
> │ let v0 : (unit -> int32) = closure0()
> │ ()
> │ ",
> │    [])
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> ""
> |> fun code -> Spi (code, None)
> |> buildCode Fsharp [[||]] false 10000 None
> |> Async.runWithTimeout 10000
> |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> 
> List.map fst)
> |> _assertEqual (
>     Some (
>         None,
>         [[ "Cannot find `main` in file main." ]]
>     )
> )
> 
> ── [ 3.50s - stdout ] ──────────────────────────────────────────────────────────
> │ 00:00:12 v #34 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:09 d #7 runtime.execute_with_options_async / { 
> file_name = dotnet; arguments = US5_0
> │   
> ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral 
> Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 
> --default-int i32 --default-float f64"; options = { command = dotnet 
> "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral 
> Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 
> --default-int i32 --default-float f64; cancellation_token = Some 
> System.Threading.CancellationToken; environment_variables = [||]; on_line = Some
> <fun:compiler@22-4>; stdin = None; trace = true; working_directory = Some 
> "/home/runner/work/polyglot/polyglot" } }
> │ 00:00:12 v #35 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:12 v #36 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:10 v #8 > 00:00:00 d #1 pwd: 
> /home/runner/work/polyglot/polyglot
> │ 00:00:10 v #9 > 00:00:00 d #2 dllPath: 
> /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language
> 2/artifacts/bin/The Spiral Language 2/release
> │ 00:00:10 v #10 > 00:00:00 d #3 targetDir: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval
> │ 00:00:12 v #37 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:12 v #38 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:12 v #39 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:12 v #40 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:12 v #41 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:12 v #42 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:12 v #43 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:12 v #44 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:12 v #45 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:12 v #46 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:12 v #47 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:12 v #48 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:12 v #49 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:12 v #50 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:12 v #51 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:12 v #52 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:12 v #53 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:12 v #54 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:12 v #55 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:12 v #56 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:12 v #57 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:12 v #58 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:12 v #59 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:12 v #60 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:10 v #11 > Starting the Spiral Server. It is bound
> to: http://localhost:13805
> │ 00:00:12 v #61 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:12 v #62 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:12 v #63 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:12 v #64 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:08 v #22 Supervisor.sendJson / port: 13805 / json:
> {"Ping":true} / result:
> │ 00:00:08 v #23 Supervisor.awaitCompiler / Ping / result:
> 'Some null' / port: 13805 / retry: 1
> │ 00:00:10 v #12 > Server bound to: http://localhost:13805
> │ 00:00:08 d #24 Supervisor.buildFile / takeWhileInclusive
> / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da0da9
> 67b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:08 d #25 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da0da9
> 67b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:08 d #26 Supervisor.buildFile / takeWhileInclusive
> / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da0da9
> 67b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:08 v #27 Supervisor.sendJson / port: 13805 / json:
> {"FileOpen":{"spiText":"","uri":"file:///home/runner/work/polyglot/polyglot/targ
> et/spiral_Eval/packages/a65342ccc7da0da967b18d8e705d0260e9a932e5e68c0feb33db55c4
> d28170aa/main.spi"}} / result:
> │ 00:00:08 v #28 Supervisor.sendJson / port: 13805 / json:
> {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polygl
> ot/target/spiral_Eval/packages/a65342ccc7da0da967b18d8e705d0260e9a932e5e68c0feb3
> 3db55c4d28170aa/main.spi"}} / result:
> │ 00:00:08 d #29 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da0da9
> 67b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:08 d #30 Supervisor.buildFile / takeWhileInclusive
> / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da0da9
> 67b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:09 d #31 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da0da9
> 67b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:09 d #32 Supervisor.buildFile / takeWhileInclusive
> / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da0da9
> 67b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:09 d #33 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da0da9
> 67b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:09 d #34 Supervisor.buildFile / takeWhileInclusive
> / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da0da9
> 67b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:10 d #35 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da0da9
> 67b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:10 d #36 Supervisor.buildFile / takeWhileInclusive
> / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da0da9
> 67b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:10 d #37 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da0da9
> 67b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:10 d #38 Supervisor.buildFile / takeWhileInclusive
> / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da0da9
> 67b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:10 d #39 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da0da9
> 67b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error: Some((Cannot find 
> `main` in file main., FatalError "Cannot find `main` in file main.")) / 
> outputContent:
> │ 
> │ 00:00:10 d #40 Supervisor.buildFile / takeWhileInclusive
> / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da0da9
> 67b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi / errors: [
> │   [
> │     "Cannot find `main` in file main.",
> │     {
> │       "FatalError": "Cannot find `main` in file main."
> │     }
> │   ]
> │ ] / typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:10 v #41 Supervisor.sendJson / port: 13805 / json:
> {"FileDelete":{"uris":["file:///home/runner/work/polyglot/polyglot/target/spiral
> _Eval/packages/a65342ccc7da0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa"
> ]}} / result:
> │ 00:00:15 v #65 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:10 d #42 FileSystem.watchWithFilter / Disposing 
> watch stream / filter: FileName, LastWrite
> │ Some (None, ["Cannot find `main` in file main."])
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> """inl main () =
>     1i32 / 0i32
> """
> |> fun code -> Spi (code, None)
> |> buildCode Fsharp [[||]] false 10000 None
> |> Async.runWithTimeout 10000
> |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> 
> List.map fst)
> |> _assertEqual (
>     Some (
>         None,
>         [[ "An attempt to divide by zero has been detected at compile time." ]]
>     )
> )
> 
> ── [ 3.39s - stdout ] ──────────────────────────────────────────────────────────
> │ 00:00:15 v #66 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:13 d #13 runtime.execute_with_options_async / { 
> file_name = dotnet; arguments = US5_0
> │   
> ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral 
> Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 
> --default-int i32 --default-float f64"; options = { command = dotnet 
> "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral 
> Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 
> --default-int i32 --default-float f64; cancellation_token = Some 
> System.Threading.CancellationToken; environment_variables = [||]; on_line = Some
> <fun:compiler@22-4>; stdin = None; trace = true; working_directory = Some 
> "/home/runner/work/polyglot/polyglot" } }
> │ 00:00:15 v #67 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:15 v #68 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:15 v #69 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:13 v #14 > 00:00:00 d #1 pwd: 
> /home/runner/work/polyglot/polyglot
> │ 00:00:13 v #15 > 00:00:00 d #2 dllPath: 
> /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language
> 2/artifacts/bin/The Spiral Language 2/release
> │ 00:00:13 v #16 > 00:00:00 d #3 targetDir: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval
> │ 00:00:15 v #70 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:15 v #71 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:15 v #72 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:15 v #73 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:15 v #74 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:15 v #75 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:15 v #76 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:15 v #77 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:15 v #78 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:16 v #79 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:16 v #80 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:16 v #81 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:16 v #82 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:16 v #83 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:16 v #84 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:16 v #85 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:16 v #86 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:16 v #87 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:16 v #88 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:16 v #89 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:16 v #90 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:16 v #91 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:16 v #92 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:13 v #17 > Starting the Spiral Server. It is bound
> to: http://localhost:13805
> │ 00:00:16 v #93 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:16 v #94 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:16 v #95 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:11 v #43 Supervisor.sendJson / port: 13805 / json:
> {"Ping":true} / result:
> │ 00:00:11 v #44 Supervisor.awaitCompiler / Ping / result:
> 'Some null' / port: 13805 / retry: 1
> │ 00:00:14 v #18 > Server bound to: http://localhost:13805
> │ 00:00:11 d #45 Supervisor.buildFile / takeWhileInclusive
> / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b
> 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:11 d #46 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b
> 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:11 d #47 Supervisor.buildFile / takeWhileInclusive
> / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b
> 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:11 v #48 Supervisor.sendJson / port: 13805 / json:
> {"FileOpen":{"spiText":"inl main () =\n    1i32 / 
> 0i32\n","uri":"file:///home/runner/work/polyglot/p...et/spiral_Eval/packages/fef
> 9812d9b06b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi"}} / 
> result:
> │ 00:00:11 v #49 Supervisor.sendJson / port: 13805 / json:
> {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polygl
> ot/target/spiral_Eval/packages/fef9812d9b06b75b1ab26589e52c6d6ff05910b73ead9e8c4
> f27f88d2a5cdfb2/main.spi"}} / result:
> │ 00:00:12 d #50 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b
> 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:12 d #51 Supervisor.buildFile / takeWhileInclusive
> / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b
> 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:12 d #52 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b
> 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:12 d #53 Supervisor.buildFile / takeWhileInclusive
> / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b
> 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:13 d #54 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b
> 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:13 d #55 Supervisor.buildFile / takeWhileInclusive
> / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b
> 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:13 d #56 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b
> 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:13 d #57 Supervisor.buildFile / takeWhileInclusive
> / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b
> 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:14 d #58 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b
> 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:14 d #59 Supervisor.buildFile / takeWhileInclusive
> / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b
> 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:14 d #60 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b
> 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error: Some((An attempt 
> to divide by zero has been detected at compile time., TracedError
> │   { message = "An attempt to divide by zero has been detected
> at compile time."
> │     trace =
> │      ["Error trace on line: 1, column: 10 in module: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b
> 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi.
> │ inl main () =
> │          ^
> │ ";
> │       "Error trace on line: 2, column: 5 in module: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b
> 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi.
> │     1i32 / 0i32
> │     ^
> │ "] })) / outputContent:
> │ 
> │ 00:00:14 d #61 Supervisor.buildFile / takeWhileInclusive
> / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b
> 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi / errors: [
> │   [
> │     "An attempt to divide by zero has been detected at 
> compile time.",
> │     {
> │       "TracedError": {
> │         "message": "An attempt to divide by zero has been 
> detected at compile time.",
> │         "trace": [
> │           "Error trace on line: 1, column: 10 in module: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b
> 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi.
> │ inl main () =
> │          ^
> │ ",
> │           "Error trace on line: 2, column: 5 in module: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b
> 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi.
> │     1i32 / 0i32
> │     ^
> │ "
> │         ]
> │       }
> │     }
> │   ]
> │ ] / typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:14 v #62 Supervisor.sendJson / port: 13805 / json:
> {"FileDelete":{"uris":["file:///home/runner/work/polyglot/polyglot/target/spiral
> _Eval/packages/fef9812d9b06b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2"
> ]}} / result:
> │ 00:00:18 v #96 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:14 d #63 FileSystem.watchWithFilter / Disposing 
> watch stream / filter: FileName, LastWrite
> │ Some (None, ["An attempt to divide by zero has been detected 
> at compile time."])
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> """inl main () =
>     1 + ""
> """
> |> fun code -> Spi (code, None)
> |> buildCode Fsharp [[||]] false 10000 None
> |> Async.runWithTimeout 10000
> |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> 
> List.map fst)
> |> _assertEqual (
>     Some (
>         None,
>         [[
>             "main.spi:
> Constraint satisfaction error.
> Got: string
> Fails to satisfy: number"
>         ]]
>     )
> )
> 
> ── [ 3.06s - stdout ] ──────────────────────────────────────────────────────────
> │ 00:00:19 v #97 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:16 d #19 runtime.execute_with_options_async / { 
> file_name = dotnet; arguments = US5_0
> │   
> ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral 
> Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 
> --default-int i32 --default-float f64"; options = { command = dotnet 
> "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral 
> Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 
> --default-int i32 --default-float f64; cancellation_token = Some 
> System.Threading.CancellationToken; environment_variables = [||]; on_line = Some
> <fun:compiler@22-4>; stdin = None; trace = true; working_directory = Some 
> "/home/runner/work/polyglot/polyglot" } }
> │ 00:00:19 v #98 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:19 v #99 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:17 v #20 > 00:00:00 d #1 pwd: 
> /home/runner/work/polyglot/polyglot
> │ 00:00:17 v #21 > 00:00:00 d #2 dllPath: 
> /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language
> 2/artifacts/bin/The Spiral Language 2/release
> │ 00:00:17 v #22 > 00:00:00 d #3 targetDir: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval
> │ 00:00:19 v #100 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:19 v #101 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:19 v #102 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:19 v #103 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:19 v #104 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:19 v #105 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:19 v #106 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:19 v #107 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:19 v #108 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:19 v #109 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:19 v #110 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:19 v #111 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:19 v #112 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:19 v #113 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:19 v #114 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:19 v #115 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:19 v #116 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:19 v #117 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:19 v #118 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:19 v #119 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:19 v #120 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:19 v #121 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:19 v #122 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:17 v #23 > Starting the Spiral Server. It is bound
> to: http://localhost:13805
> │ 00:00:19 v #123 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:19 v #124 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:19 v #125 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:14 v #64 Supervisor.sendJson / port: 13805 / json:
> {"Ping":true} / result:
> │ 00:00:14 v #65 Supervisor.awaitCompiler / Ping / result:
> 'Some null' / port: 13805 / retry: 1
> │ 00:00:17 v #24 > Server bound to: http://localhost:13805
> │ 00:00:14 d #66 Supervisor.buildFile / takeWhileInclusive
> / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e553bef
> cbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:14 d #67 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e553bef
> cbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:14 d #68 Supervisor.buildFile / takeWhileInclusive
> / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e553bef
> cbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:14 v #69 Supervisor.sendJson / port: 13805 / json:
> {"FileOpen":{"spiText":"inl main () =\n    1 \u002B 
> \u0022\u0022\n","uri":"file:///home/runner/work/...et/spiral_Eval/packages/c030f
> 84f8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi"}} / 
> result:
> │ 00:00:14 v #70 Supervisor.sendJson / port: 13805 / json:
> {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polygl
> ot/target/spiral_Eval/packages/c030f84f8e553befcbdd9aabeace67685221d91a46e365519
> 9e42df713504aa0/main.spi"}} / result:
> │ 00:00:15 d #71 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e553bef
> cbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:15 d #72 Supervisor.buildFile / takeWhileInclusive
> / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e553bef
> cbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:15 d #73 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e553bef
> cbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:15 d #74 Supervisor.buildFile / takeWhileInclusive
> / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e553bef
> cbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:16 d #75 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e553bef
> cbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:16 d #76 Supervisor.buildFile / takeWhileInclusive
> / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e553bef
> cbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:16 d #77 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e553bef
> cbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:16 d #78 Supervisor.buildFile / takeWhileInclusive
> / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e553bef
> cbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:17 d #79 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e553bef
> cbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error: Some((File main 
> has a type error somewhere in its path., FatalError "File main has a type error 
> somewhere in its path.")) / outputContent:
> │ 
> │ 00:00:17 d #80 Supervisor.buildFile / takeWhileInclusive
> / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e553bef
> cbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi / errors: [] / 
> typeErrorCount: 1 / retry: 0 / outputContent:
> │ 
> │ 00:00:17 d #81 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e553bef
> cbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 1 / retry: 0 / error: Some((main.spi:
> │ Constraint satisfaction error.
> │ Got: string
> │ Fails to satisfy: number, TypeErrors
> │   { errors =
> │      [(({ character = 8
> │           line = 1 }, { character = 10
> │                         line = 1 }),
> │        "Constraint satisfaction error.
> │ Got: string
> │ Fails to satisfy: number")]
> │     uri =
> │      
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f
> 8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi" })) / 
> outputContent:
> │ 
> │ 00:00:17 d #82 Supervisor.buildFile / takeWhileInclusive
> / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e553bef
> cbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi / errors: [
> │   [
> │     "main.spi:
> │ Constraint satisfaction error.
> │ Got: string
> │ Fails to satisfy: number",
> │     {
> │       "TypeErrors": {
> │         "errors": [
> │           [
> │             [
> │               {
> │                 "character": 8,
> │                 "line": 1
> │               },
> │               {
> │                 "character": 10,
> │                 "line": 1
> │               }
> │             ],
> │             "Constraint satisfaction error.
> │ Got: string
> │ Fails to satisfy: number"
> │           ]
> │         ],
> │         "uri": 
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f
> 8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi"
> │       }
> │     }
> │   ]
> │ ] / typeErrorCount: 1 / retry: 0 / outputContent:
> │ 
> │ 00:00:22 v #126 networking.test_port_open / { port = 
> 13806; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:17 d #83 Supervisor.buildFile / takeWhileInclusive
> / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e553bef
> cbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 1 / outputContent:
> │ 
> │ 00:00:17 d #84 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e553bef
> cbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 1 / error:  / outputContent:
> │ 
> │ 00:00:17 d #85 Supervisor.buildFile / takeWhileInclusive
> / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e553bef
> cbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 1 / outputContent:
> │ 
> │ 00:00:17 v #86 Supervisor.sendJson / port: 13805 / json:
> {"FileOpen":{"spiText":"inl main () =\n    1 \u002B 
> \u0022\u0022\n","uri":"file:///home/runner/work/...et/spiral_Eval/packages/c030f
> 84f8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi"}} / 
> result:
> │ 00:00:17 v #87 Supervisor.sendJson / port: 13805 / json:
> {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polygl
> ot/target/spiral_Eval/packages/c030f84f8e553befcbdd9aabeace67685221d91a46e365519
> 9e42df713504aa0/main.spi"}} / result:
> │ 00:00:17 d #88 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e553bef
> cbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 1 / error: Some((main.spi:
> │ Constraint satisfaction error.
> │ Got: string
> │ Fails to satisfy: number, TypeErrors
> │   { errors =
> │      [(({ character = 8
> │           line = 1 }, { character = 10
> │                         line = 1 }),
> │        "Constraint satisfaction error.
> │ Got: string
> │ Fails to satisfy: number")]
> │     uri =
> │      
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f
> 8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi" })) / 
> outputContent:
> │ 
> │ 00:00:17 d #89 Supervisor.buildFile / takeWhileInclusive
> / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e553bef
> cbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi / errors: [
> │   [
> │     "main.spi:
> │ Constraint satisfaction error.
> │ Got: string
> │ Fails to satisfy: number",
> │     {
> │       "TypeErrors": {
> │         "errors": [
> │           [
> │             [
> │               {
> │                 "character": 8,
> │                 "line": 1
> │               },
> │               {
> │                 "character": 10,
> │                 "line": 1
> │               }
> │             ],
> │             "Constraint satisfaction error.
> │ Got: string
> │ Fails to satisfy: number"
> │           ]
> │         ],
> │         "uri": 
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f
> 8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi"
> │       }
> │     }
> │   ]
> │ ] / typeErrorCount: 0 / retry: 1 / outputContent:
> │ 
> │ 00:00:17 v #90 Supervisor.sendJson / port: 13805 / json:
> {"FileDelete":{"uris":["file:///home/runner/work/polyglot/polyglot/target/spiral
> _Eval/packages/c030f84f8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0"
> ]}} / result:
> │ 00:00:17 d #91 FileSystem.watchWithFilter / Disposing 
> watch stream / filter: FileName, LastWrite
> │ 00:00:22 v #127 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:17 d #92 FileSystem.watchWithFilter / Disposing 
> watch stream / filter: FileName, LastWrite
> │ Some (None, ["main.spi:
> │ Constraint satisfaction error.
> │ Got: string
> │ Fails to satisfy: number"])
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> """inl main () =
>     x + y
> """
> |> fun code -> Spi (code, None)
> |> buildCode Fsharp [[||]] false 10000 None
> |> Async.runWithTimeout 10000
> |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> 
> List.map fst)
> |> _assertEqual (
>     Some (
>         None,
>         [[
>             "main.spi:
> Unbound variable: x.
> Unbound variable: y."
>         ]]
>     )
> )
> 
> ── [ 3.11s - stdout ] ──────────────────────────────────────────────────────────
> │ 00:00:22 v #128 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:19 d #25 runtime.execute_with_options_async / { 
> file_name = dotnet; arguments = US5_0
> │   
> ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral 
> Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 
> --default-int i32 --default-float f64"; options = { command = dotnet 
> "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral 
> Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 
> --default-int i32 --default-float f64; cancellation_token = Some 
> System.Threading.CancellationToken; environment_variables = [||]; on_line = Some
> <fun:compiler@22-4>; stdin = None; trace = true; working_directory = Some 
> "/home/runner/work/polyglot/polyglot" } }
> │ 00:00:22 v #129 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:22 v #130 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:20 v #26 > 00:00:00 d #1 pwd: 
> /home/runner/work/polyglot/polyglot
> │ 00:00:20 v #27 > 00:00:00 d #2 dllPath: 
> /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language
> 2/artifacts/bin/The Spiral Language 2/release
> │ 00:00:20 v #28 > 00:00:00 d #3 targetDir: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval
> │ 00:00:22 v #131 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:22 v #132 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:22 v #133 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:22 v #134 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:22 v #135 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:22 v #136 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:22 v #137 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:22 v #138 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:22 v #139 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:22 v #140 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:22 v #141 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:22 v #142 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:22 v #143 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:22 v #144 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:22 v #145 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:22 v #146 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:22 v #147 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:22 v #148 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:22 v #149 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:22 v #150 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:22 v #151 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:22 v #152 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:22 v #153 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:22 v #154 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:20 v #29 > Starting the Spiral Server. It is bound
> to: http://localhost:13805
> │ 00:00:22 v #155 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:22 v #156 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:22 v #157 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:17 v #93 Supervisor.sendJson / port: 13805 / json:
> {"Ping":true} / result:
> │ 00:00:17 v #94 Supervisor.awaitCompiler / Ping / result:
> 'Some null' / port: 13805 / retry: 1
> │ 00:00:20 v #30 > Server bound to: http://localhost:13805
> │ 00:00:17 d #95 Supervisor.buildFile / takeWhileInclusive
> / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba
> 9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:17 d #96 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba
> 9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:17 d #97 Supervisor.buildFile / takeWhileInclusive
> / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba
> 9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:17 v #98 Supervisor.sendJson / port: 13805 / json:
> {"FileOpen":{"spiText":"inl main () =\n    x \u002B 
> y\n","uri":"file:///home/runner/work/polyglot/po...et/spiral_Eval/packages/6cdee
> c507f9de5ba9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi"}} / 
> result:
> │ 00:00:18 v #99 Supervisor.sendJson / port: 13805 / json:
> {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polygl
> ot/target/spiral_Eval/packages/6cdeec507f9de5ba9c8429cfa7049b777a622aa3bf7333b15
> 1c767fde35dc5d1/main.spi"}} / result:
> │ 00:00:18 d #100 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba
> 9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:18 d #101 Supervisor.buildFile / 
> takeWhileInclusive / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba
> 9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:18 d #102 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba
> 9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:18 d #103 Supervisor.buildFile / 
> takeWhileInclusive / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba
> 9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:19 d #104 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba
> 9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:19 d #105 Supervisor.buildFile / 
> takeWhileInclusive / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba
> 9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:19 d #106 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba
> 9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:19 d #107 Supervisor.buildFile / 
> takeWhileInclusive / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba
> 9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:20 d #108 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba
> 9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error: Some((File main 
> has a type error somewhere in its path., FatalError "File main has a type error 
> somewhere in its path.")) / outputContent:
> │ 
> │ 00:00:20 d #109 Supervisor.buildFile / 
> takeWhileInclusive / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba
> 9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi / errors: [] / 
> typeErrorCount: 1 / retry: 0 / outputContent:
> │ 
> │ 00:00:20 d #110 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba
> 9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 1 / retry: 0 / error: Some((main.spi:
> │ Unbound variable: x.
> │ Unbound variable: y., TypeErrors
> │   { errors =
> │      [(({ character = 4
> │           line = 1 }, { character = 5
> │                         line = 1 }), "Unbound variable: x.");
> │       (({ character = 8
> │           line = 1 }, { character = 9
> │                         line = 1 }), "Unbound variable: y.")]
> │     uri =
> │      
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec50
> 7f9de5ba9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi" })) / 
> outputContent:
> │ 
> │ 00:00:20 d #111 Supervisor.buildFile / 
> takeWhileInclusive / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba
> 9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi / errors: [
> │   [
> │     "main.spi:
> │ Unbound variable: x.
> │ Unbound variable: y.",
> │     {
> │       "TypeErrors": {
> │         "errors": [
> │           [
> │             [
> │               {
> │                 "character": 4,
> │                 "line": 1
> │               },
> │               {
> │                 "character": 5,
> │                 "line": 1
> │               }
> │             ],
> │             "Unbound variable: x."
> │           ],
> │           [
> │             [
> │               {
> │                 "character": 8,
> │                 "line": 1
> │               },
> │               {
> │                 "character": 9,
> │                 "line": 1
> │               }
> │             ],
> │             "Unbound variable: y."
> │           ]
> │         ],
> │         "uri": 
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec50
> 7f9de5ba9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi"
> │       }
> │     }
> │   ]
> │ ] / typeErrorCount: 1 / retry: 0 / outputContent:
> │ 
> │ 00:00:25 v #158 networking.test_port_open / { port = 
> 13806; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:20 d #112 Supervisor.buildFile / 
> takeWhileInclusive / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba
> 9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 1 / outputContent:
> │ 
> │ 00:00:20 d #113 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba
> 9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 1 / error:  / outputContent:
> │ 
> │ 00:00:20 d #114 Supervisor.buildFile / 
> takeWhileInclusive / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba
> 9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 1 / outputContent:
> │ 
> │ 00:00:20 v #115 Supervisor.sendJson / port: 13805 / 
> json: {"FileOpen":{"spiText":"inl main () =\n    x \u002B 
> y\n","uri":"file:///home/runner/work/polyglot/po...et/spiral_Eval/packages/6cdee
> c507f9de5ba9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi"}} / 
> result:
> │ 00:00:20 v #116 Supervisor.sendJson / port: 13805 / 
> json: 
> {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polygl
> ot/target/spiral_Eval/packages/6cdeec507f9de5ba9c8429cfa7049b777a622aa3bf7333b15
> 1c767fde35dc5d1/main.spi"}} / result:
> │ 00:00:20 d #117 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba
> 9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 1 / error: Some((main.spi:
> │ Unbound variable: x.
> │ Unbound variable: y., TypeErrors
> │   { errors =
> │      [(({ character = 4
> │           line = 1 }, { character = 5
> │                         line = 1 }), "Unbound variable: x.");
> │       (({ character = 8
> │           line = 1 }, { character = 9
> │                         line = 1 }), "Unbound variable: y.")]
> │     uri =
> │      
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec50
> 7f9de5ba9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi" })) / 
> outputContent:
> │ 
> │ 00:00:20 d #118 Supervisor.buildFile / 
> takeWhileInclusive / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba
> 9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi / errors: [
> │   [
> │     "main.spi:
> │ Unbound variable: x.
> │ Unbound variable: y.",
> │     {
> │       "TypeErrors": {
> │         "errors": [
> │           [
> │             [
> │               {
> │                 "character": 4,
> │                 "line": 1
> │               },
> │               {
> │                 "character": 5,
> │                 "line": 1
> │               }
> │             ],
> │             "Unbound variable: x."
> │           ],
> │           [
> │             [
> │               {
> │                 "character": 8,
> │                 "line": 1
> │               },
> │               {
> │                 "character": 9,
> │                 "line": 1
> │               }
> │             ],
> │             "Unbound variable: y."
> │           ]
> │         ],
> │         "uri": 
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec50
> 7f9de5ba9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi"
> │       }
> │     }
> │   ]
> │ ] / typeErrorCount: 0 / retry: 1 / outputContent:
> │ 
> │ 00:00:20 v #119 Supervisor.sendJson / port: 13805 / 
> json: 
> {"FileDelete":{"uris":["file:///home/runner/work/polyglot/polyglot/target/spiral
> _Eval/packages/6cdeec507f9de5ba9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1"
> ]}} / result:
> │ 00:00:20 d #120 FileSystem.watchWithFilter / Disposing 
> watch stream / filter: FileName, LastWrite
> │ 00:00:25 v #159 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:20 d #121 FileSystem.watchWithFilter / Disposing 
> watch stream / filter: FileName, LastWrite
> │ Some (None, ["main.spi:
> │ Unbound variable: x.
> │ Unbound variable: y."])
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> """
> inl main () =
>     real
>         inl unbox_real forall a. (obj : a) : a =
>             typecase obj with
>             | _ => obj
>         unbox_real ()
>     ()
> """
> |> fun code -> Spi (code, None)
> |> buildCode Fsharp [[||]] false 10000 None
> |> Async.runWithTimeout 10000
> |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> 
> List.map fst)
> |> _assertEqual (
>     Some (
>         None,
>         [[ "Cannot apply a forall with a term." ]]
>     )
> )
> 
> ── [ 3.33s - stdout ] ──────────────────────────────────────────────────────────
> │ 00:00:25 v #160 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:23 d #31 runtime.execute_with_options_async / { 
> file_name = dotnet; arguments = US5_0
> │   
> ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral 
> Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 
> --default-int i32 --default-float f64"; options = { command = dotnet 
> "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral 
> Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 
> --default-int i32 --default-float f64; cancellation_token = Some 
> System.Threading.CancellationToken; environment_variables = [||]; on_line = Some
> <fun:compiler@22-4>; stdin = None; trace = true; working_directory = Some 
> "/home/runner/work/polyglot/polyglot" } }
> │ 00:00:25 v #161 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:25 v #162 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:23 v #32 > 00:00:00 d #1 pwd: 
> /home/runner/work/polyglot/polyglot
> │ 00:00:23 v #33 > 00:00:00 d #2 dllPath: 
> /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language
> 2/artifacts/bin/The Spiral Language 2/release
> │ 00:00:23 v #34 > 00:00:00 d #3 targetDir: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval
> │ 00:00:25 v #163 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:25 v #164 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:25 v #165 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:25 v #166 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:25 v #167 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:25 v #168 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:25 v #169 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:25 v #170 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:25 v #171 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:25 v #172 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:25 v #173 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:25 v #174 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:25 v #175 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:25 v #176 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:25 v #177 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:25 v #178 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:25 v #179 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:25 v #180 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:25 v #181 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:25 v #182 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:25 v #183 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:25 v #184 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:25 v #185 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:23 v #35 > Starting the Spiral Server. It is bound
> to: http://localhost:13805
> │ 00:00:25 v #186 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:25 v #187 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:25 v #188 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:21 v #122 Supervisor.sendJson / port: 13805 / 
> json: {"Ping":true} / result:
> │ 00:00:21 v #123 Supervisor.awaitCompiler / Ping / 
> result: 'Some null' / port: 13805 / retry: 1
> │ 00:00:23 v #36 > Server bound to: http://localhost:13805
> │ 00:00:21 d #124 Supervisor.buildFile / 
> takeWhileInclusive / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:21 d #125 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:21 d #126 Supervisor.buildFile / 
> takeWhileInclusive / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:21 v #127 Supervisor.sendJson / port: 13805 / 
> json: {"FileOpen":{"spiText":"\ninl main () =\n    real\n        inl unbox_real 
> forall a. (obj : a) : a 
> =\...et/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd7ffff5b5a47e4e117eec
> 78e740987f29a/main.spi"}} / result:
> │ 00:00:21 v #128 Supervisor.sendJson / port: 13805 / 
> json: 
> {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polygl
> ot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd7ffff5b5a47e4e117e
> ec78e740987f29a/main.spi"}} / result:
> │ 00:00:21 d #129 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:21 d #130 Supervisor.buildFile / 
> takeWhileInclusive / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:22 d #131 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:22 d #132 Supervisor.buildFile / 
> takeWhileInclusive / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:22 d #133 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:22 d #134 Supervisor.buildFile / 
> takeWhileInclusive / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:23 d #135 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:23 d #136 Supervisor.buildFile / 
> takeWhileInclusive / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:23 d #137 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:23 d #138 Supervisor.buildFile / 
> takeWhileInclusive / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:23 d #139 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error: Some((Cannot apply
> a forall with a term., TracedError
> │   { message = "Cannot apply a forall with a term."
> │     trace =
> │      ["Error trace on line: 2, column: 10 in module: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi.
> │ inl main () =
> │          ^
> │ ";
> │       "Error trace on line: 4, column: 9 in module: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi.
> │         inl unbox_real forall a. (obj : a) : a =
> │         ^
> │ ";
> │       "Error trace on line: 7, column: 9 in module: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi.
> │         unbox_real ()
> │         ^
> │ "] })) / outputContent:
> │ 
> │ 00:00:23 d #140 Supervisor.buildFile / 
> takeWhileInclusive / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi / errors: [
> │   [
> │     "Cannot apply a forall with a term.",
> │     {
> │       "TracedError": {
> │         "message": "Cannot apply a forall with a term.",
> │         "trace": [
> │           "Error trace on line: 2, column: 10 in module: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi.
> │ inl main () =
> │          ^
> │ ",
> │           "Error trace on line: 4, column: 9 in module: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi.
> │         inl unbox_real forall a. (obj : a) : a =
> │         ^
> │ ",
> │           "Error trace on line: 7, column: 9 in module: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af
> 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi.
> │         unbox_real ()
> │         ^
> │ "
> │         ]
> │       }
> │     }
> │   ]
> │ ] / typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:23 v #141 Supervisor.sendJson / port: 13805 / 
> json: 
> {"FileDelete":{"uris":["file:///home/runner/work/polyglot/polyglot/target/spiral
> _Eval/packages/667528659dc2e5af51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a"
> ]}} / result:
> │ 00:00:28 v #189 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:23 d #142 FileSystem.watchWithFilter / Disposing 
> watch stream / filter: FileName, LastWrite
> │ Some (None, ["Cannot apply a forall with a term."])
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> """
> inl main () =
>     real
>         inl unbox_real forall a. (obj : a) : a =
>             typecase obj with
>             | _ => obj
>         unbox_real `i32 1
> """
> |> fun code -> Spi (code, None)
> |> buildCode Fsharp [[||]] false 10000 None
> |> Async.runWithTimeout 10000
> |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> 
> List.map fst)
> |> _assertEqual (
>     Some (
>         None,
>         [[ "The main function should not have a forall." ]]
>     )
> )
> 
> ── [ 3.22s - stdout ] ──────────────────────────────────────────────────────────
> │ 00:00:28 v #190 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:26 d #37 runtime.execute_with_options_async / { 
> file_name = dotnet; arguments = US5_0
> │   
> ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral 
> Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 
> --default-int i32 --default-float f64"; options = { command = dotnet 
> "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral 
> Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 
> --default-int i32 --default-float f64; cancellation_token = Some 
> System.Threading.CancellationToken; environment_variables = [||]; on_line = Some
> <fun:compiler@22-4>; stdin = None; trace = true; working_directory = Some 
> "/home/runner/work/polyglot/polyglot" } }
> │ 00:00:28 v #191 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:28 v #192 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:26 v #38 > 00:00:00 d #1 pwd: 
> /home/runner/work/polyglot/polyglot
> │ 00:00:26 v #39 > 00:00:00 d #2 dllPath: 
> /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language
> 2/artifacts/bin/The Spiral Language 2/release
> │ 00:00:26 v #40 > 00:00:00 d #3 targetDir: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval
> │ 00:00:28 v #193 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:28 v #194 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:28 v #195 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:28 v #196 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:28 v #197 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:28 v #198 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:28 v #199 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:28 v #200 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:28 v #201 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:28 v #202 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:28 v #203 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:28 v #204 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:28 v #205 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:28 v #206 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:28 v #207 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:28 v #208 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:28 v #209 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:28 v #210 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:28 v #211 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:28 v #212 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:29 v #213 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:29 v #214 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:29 v #215 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:29 v #216 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:26 v #41 > Starting the Spiral Server. It is bound
> to: http://localhost:13805
> │ 00:00:29 v #217 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:29 v #218 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:29 v #219 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:24 v #143 Supervisor.sendJson / port: 13805 / 
> json: {"Ping":true} / result:
> │ 00:00:24 v #144 Supervisor.awaitCompiler / Ping / 
> result: 'Some null' / port: 13805 / retry: 1
> │ 00:00:27 v #42 > Server bound to: http://localhost:13805
> │ 00:00:24 d #145 Supervisor.buildFile / 
> takeWhileInclusive / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/0ba44c42df309b79
> 0acdf4f9fc55fcc7912380f5dd2d90fad118bad793251c4f/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:24 d #146 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/0ba44c42df309b79
> 0acdf4f9fc55fcc7912380f5dd2d90fad118bad793251c4f/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:24 d #147 Supervisor.buildFile / 
> takeWhileInclusive / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/0ba44c42df309b79
> 0acdf4f9fc55fcc7912380f5dd2d90fad118bad793251c4f/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:24 v #148 Supervisor.sendJson / port: 13805 / 
> json: {"FileOpen":{"spiText":"\ninl main () =\n    real\n        inl unbox_real 
> forall a. (obj : a) : a 
> =\...et/spiral_Eval/packages/0ba44c42df309b790acdf4f9fc55fcc7912380f5dd2d90fad11
> 8bad793251c4f/main.spi"}} / result:
> │ 00:00:24 v #149 Supervisor.sendJson / port: 13805 / 
> json: 
> {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polygl
> ot/target/spiral_Eval/packages/0ba44c42df309b790acdf4f9fc55fcc7912380f5dd2d90fad
> 118bad793251c4f/main.spi"}} / result:
> │ 00:00:24 d #150 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/0ba44c42df309b79
> 0acdf4f9fc55fcc7912380f5dd2d90fad118bad793251c4f/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:24 d #151 Supervisor.buildFile / 
> takeWhileInclusive / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/0ba44c42df309b79
> 0acdf4f9fc55fcc7912380f5dd2d90fad118bad793251c4f/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:25 d #152 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/0ba44c42df309b79
> 0acdf4f9fc55fcc7912380f5dd2d90fad118bad793251c4f/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:25 d #153 Supervisor.buildFile / 
> takeWhileInclusive / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/0ba44c42df309b79
> 0acdf4f9fc55fcc7912380f5dd2d90fad118bad793251c4f/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:25 d #154 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/0ba44c42df309b79
> 0acdf4f9fc55fcc7912380f5dd2d90fad118bad793251c4f/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:25 d #155 Supervisor.buildFile / 
> takeWhileInclusive / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/0ba44c42df309b79
> 0acdf4f9fc55fcc7912380f5dd2d90fad118bad793251c4f/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:26 d #156 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/0ba44c42df309b79
> 0acdf4f9fc55fcc7912380f5dd2d90fad118bad793251c4f/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:26 d #157 Supervisor.buildFile / 
> takeWhileInclusive / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/0ba44c42df309b79
> 0acdf4f9fc55fcc7912380f5dd2d90fad118bad793251c4f/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:26 d #158 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/0ba44c42df309b79
> 0acdf4f9fc55fcc7912380f5dd2d90fad118bad793251c4f/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error: Some((The main 
> function should not have a forall., TracedError { message = "The main function 
> should not have a forall."
> │               trace = [] })) / outputContent:
> │ 
> │ 00:00:26 d #159 Supervisor.buildFile / 
> takeWhileInclusive / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/0ba44c42df309b79
> 0acdf4f9fc55fcc7912380f5dd2d90fad118bad793251c4f/main.spi / errors: [
> │   [
> │     "The main function should not have a forall.",
> │     {
> │       "TracedError": {
> │         "message": "The main function should not have a 
> forall.",
> │         "trace": []
> │       }
> │     }
> │   ]
> │ ] / typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:26 v #160 Supervisor.sendJson / port: 13805 / 
> json: 
> {"FileDelete":{"uris":["file:///home/runner/work/polyglot/polyglot/target/spiral
> _Eval/packages/0ba44c42df309b790acdf4f9fc55fcc7912380f5dd2d90fad118bad793251c4f"
> ]}} / result:
> │ 00:00:31 v #220 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:26 d #161 FileSystem.watchWithFilter / Disposing 
> watch stream / filter: FileName, LastWrite
> │ Some (None, ["The main function should not have a forall."])
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> """
> inl init_series start end inc =
>     inl total : f64 = conv ((end - start) / inc) + 1
>     listm.init total (conv >> (*) inc >> (+) start) : list f64
> 
> type integration = (f64 -> f64) -> f64 -> f64 -> f64
> 
> inl integral dt : integration =
>     fun f a b =>
>         init_series (a + dt / 2) (b - dt / 2) dt
>         |> listm.map (f >> (*) dt)
>         |> listm.fold (+) 0
> 
> inl main () =
>     integral 0.1 (fun x => x ** 2) 0 1
> """
> |> fun code -> Spi (code, None)
> |> buildCode Fsharp [[||]] false 10000 None
> |> Async.runWithTimeout 10000
> |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> 
> List.map fst)
> |> _assertEqual (
>     Some (
>         Some "0.3325000000000001\n",
>         [[]]
>     )
> )
> 
> ── [ 3.29s - stdout ] ──────────────────────────────────────────────────────────
> │ 00:00:31 v #221 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:29 d #43 runtime.execute_with_options_async / { 
> file_name = dotnet; arguments = US5_0
> │   
> ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral 
> Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 
> --default-int i32 --default-float f64"; options = { command = dotnet 
> "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral 
> Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 
> --default-int i32 --default-float f64; cancellation_token = Some 
> System.Threading.CancellationToken; environment_variables = [||]; on_line = Some
> <fun:compiler@22-4>; stdin = None; trace = true; working_directory = Some 
> "/home/runner/work/polyglot/polyglot" } }
> │ 00:00:32 v #222 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:32 v #223 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:29 v #44 > 00:00:00 d #1 pwd: 
> /home/runner/work/polyglot/polyglot
> │ 00:00:29 v #45 > 00:00:00 d #2 dllPath: 
> /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language
> 2/artifacts/bin/The Spiral Language 2/release
> │ 00:00:29 v #46 > 00:00:00 d #3 targetDir: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval
> │ 00:00:32 v #224 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:32 v #225 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:32 v #226 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:32 v #227 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:32 v #228 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:32 v #229 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:32 v #230 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:32 v #231 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:32 v #232 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:32 v #233 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:32 v #234 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:32 v #235 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:32 v #236 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:32 v #237 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:32 v #238 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:32 v #239 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:32 v #240 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:32 v #241 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:32 v #242 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:32 v #243 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:32 v #244 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:32 v #245 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:32 v #246 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:30 v #47 > Starting the Spiral Server. It is bound
> to: http://localhost:13805
> │ 00:00:32 v #247 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:32 v #248 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:32 v #249 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:27 v #162 Supervisor.sendJson / port: 13805 / 
> json: {"Ping":true} / result:
> │ 00:00:27 v #163 Supervisor.awaitCompiler / Ping / 
> result: 'Some null' / port: 13805 / retry: 1
> │ 00:00:30 v #48 > Server bound to: http://localhost:13805
> │ 00:00:27 d #164 Supervisor.buildFile / 
> takeWhileInclusive / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c127414de2a2a92d
> 9fd93ea5a8e9312a6aad9129ffd3cbd56ac7f0327106f1db/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:27 d #165 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c127414de2a2a92d
> 9fd93ea5a8e9312a6aad9129ffd3cbd56ac7f0327106f1db/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:27 d #166 Supervisor.buildFile / 
> takeWhileInclusive / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c127414de2a2a92d
> 9fd93ea5a8e9312a6aad9129ffd3cbd56ac7f0327106f1db/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:27 v #167 Supervisor.sendJson / port: 13805 / 
> json: {"FileOpen":{"spiText":"\ninl init_series start end inc =\n    inl total :
> f64 = conv ((end - 
> start)...et/spiral_Eval/packages/c127414de2a2a92d9fd93ea5a8e9312a6aad9129ffd3cbd
> 56ac7f0327106f1db/main.spi"}} / result:
> │ 00:00:27 v #168 Supervisor.sendJson / port: 13805 / 
> json: 
> {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polygl
> ot/target/spiral_Eval/packages/c127414de2a2a92d9fd93ea5a8e9312a6aad9129ffd3cbd56
> ac7f0327106f1db/main.spi"}} / result:
> │ 00:00:28 d #169 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c127414de2a2a92d
> 9fd93ea5a8e9312a6aad9129ffd3cbd56ac7f0327106f1db/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:28 d #170 Supervisor.buildFile / 
> takeWhileInclusive / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c127414de2a2a92d
> 9fd93ea5a8e9312a6aad9129ffd3cbd56ac7f0327106f1db/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:28 d #171 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c127414de2a2a92d
> 9fd93ea5a8e9312a6aad9129ffd3cbd56ac7f0327106f1db/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:28 d #172 Supervisor.buildFile / 
> takeWhileInclusive / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c127414de2a2a92d
> 9fd93ea5a8e9312a6aad9129ffd3cbd56ac7f0327106f1db/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:29 d #173 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c127414de2a2a92d
> 9fd93ea5a8e9312a6aad9129ffd3cbd56ac7f0327106f1db/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:29 d #174 Supervisor.buildFile / 
> takeWhileInclusive / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c127414de2a2a92d
> 9fd93ea5a8e9312a6aad9129ffd3cbd56ac7f0327106f1db/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:29 d #175 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c127414de2a2a92d
> 9fd93ea5a8e9312a6aad9129ffd3cbd56ac7f0327106f1db/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:29 d #176 Supervisor.buildFile / 
> takeWhileInclusive / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c127414de2a2a92d
> 9fd93ea5a8e9312a6aad9129ffd3cbd56ac7f0327106f1db/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:30 d #177 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c127414de2a2a92d
> 9fd93ea5a8e9312a6aad9129ffd3cbd56ac7f0327106f1db/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:30 d #178 Supervisor.buildFile / 
> takeWhileInclusive / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c127414de2a2a92d
> 9fd93ea5a8e9312a6aad9129ffd3cbd56ac7f0327106f1db/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:30 d #179 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c127414de2a2a92d
> 9fd93ea5a8e9312a6aad9129ffd3cbd56ac7f0327106f1db/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 0.3325000000000001
> │ 
> │ 00:00:30 d #180 Supervisor.buildFile / 
> takeWhileInclusive / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c127414de2a2a92d
> 9fd93ea5a8e9312a6aad9129ffd3cbd56ac7f0327106f1db/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 0.3325000000000001
> │ 
> │ 00:00:30 v #181 Supervisor.sendJson / port: 13805 / 
> json: 
> {"FileDelete":{"uris":["file:///home/runner/work/polyglot/polyglot/target/spiral
> _Eval/packages/c127414de2a2a92d9fd93ea5a8e9312a6aad9129ffd3cbd56ac7f0327106f1db"
> ]}} / result:
> │ 00:00:35 v #250 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:30 d #182 FileSystem.watchWithFilter / Disposing 
> watch stream / filter: FileName, LastWrite
> │ Some (Some "0.3325000000000001
> │ ", [])
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> """
> inl init_series start end inc =
>     inl total : f64 = conv ((end - start) / inc) + 1
>     listm.init total (conv >> (*) inc >> (+) start) : list f64
> 
> type integration = (f64 -> f64) -> f64 -> f64 -> f64
> 
> inl integral dt : integration =
>     fun f a b =>
>         init_series (a + dt / 2) (b - dt / 2) dt
>         |> listm.map (f >> (*) dt)
>         |> listm.fold (+) 0
> 
> inl main () =
>     integral 0.1 (fun x => x ** 2) 0 1
> """
> |> fun code -> Spi (code, None)
> |> buildCode Cuda [[||]] false 10000 None
> |> Async.runWithTimeout 10000
> |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> 
> List.map fst)
> |> _assertEqual (
>     Some (
>         Some @"kernel = r""""""
> """"""
> class static_array():
>     def __init__(self, length):
>         self.ptr = [[]]
>         for _ in range(length):
>             self.ptr.append(None)
> 
>     def __getitem__(self, index):
>         assert 0 <= index < len(self.ptr), ""The get index needs to be in 
> range.""
>         return self.ptr[[index]]
>     
>     def __setitem__(self, index, value):
>         assert 0 <= index < len(self.ptr), ""The set index needs to be in 
> range.""
>         self.ptr[[index]] = value
> 
> class static_array_list(static_array):
>     def __init__(self, length):
>         super().__init__(length)
>         self.length = 0
> 
>     def __getitem__(self, index):
>         assert 0 <= index < self.length, ""The get index needs to be in range.""
>         return self.ptr[[index]]
>     
>     def __setitem__(self, index, value):
>         assert 0 <= index < self.length, ""The set index needs to be in range.""
>         self.ptr[[index]] = value
> 
>     def push(self,value):
>         assert (self.length < len(self.ptr)), ""The length before pushing has to
> be less than the maximum length of the array.""
>         self.ptr[[self.length]] = value
>         self.length += 1
> 
>     def pop(self):
>         assert (0 < self.length), ""The length before popping has to be greater 
> than 0.""
>         self.length -= 1
>         return self.ptr[[self.length]]
> 
>     def unsafe_set_length(self,i):
>         assert 0 <= i <= len(self.ptr), ""The new length has to be in range.""
>         self.length = i
> 
> class dynamic_array(static_array): 
>     pass
> 
> class dynamic_array_list(static_array_list):
>     def length_(self): return self.length
> 
> import cupy as cp
> import numpy as np
> from dataclasses import dataclass
> from typing import NamedTuple, Union, Callable, Tuple
> i8 = int; i16 = int; i32 = int; i64 = int; u8 = int; u16 = int; u32 = int; u64 =
> int; f32 = float; f64 = float; char = str; string = str
> cuda = False
> 
> def main_body():
>     return 0.3325000000000001
> 
> def main():
>     r = main_body()
>     if cuda: cp.cuda.get_current_stream().synchronize() # This line is here so 
> the `__trap()` calls on the kernel aren't missed.
>     return r
> 
> if __name__ == '__main__': result = main(); None if result is None else 
> print(result)
> ",
>         [[]]
>     )
> )
> 
> ── [ 3.31s - stdout ] ──────────────────────────────────────────────────────────
> │ 00:00:35 v #251 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:32 d #49 runtime.execute_with_options_async / { 
> file_name = dotnet; arguments = US5_0
> │   
> ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral 
> Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 
> --default-int i32 --default-float f64"; options = { command = dotnet 
> "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral 
> Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 
> --default-int i32 --default-float f64; cancellation_token = Some 
> System.Threading.CancellationToken; environment_variables = [||]; on_line = Some
> <fun:compiler@22-4>; stdin = None; trace = true; working_directory = Some 
> "/home/runner/work/polyglot/polyglot" } }
> │ 00:00:35 v #252 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:35 v #253 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:33 v #50 > 00:00:00 d #1 pwd: 
> /home/runner/work/polyglot/polyglot
> │ 00:00:33 v #51 > 00:00:00 d #2 dllPath: 
> /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language
> 2/artifacts/bin/The Spiral Language 2/release
> │ 00:00:33 v #52 > 00:00:00 d #3 targetDir: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval
> │ 00:00:35 v #254 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:35 v #255 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:35 v #256 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:35 v #257 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:35 v #258 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:35 v #259 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:35 v #260 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:35 v #261 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:35 v #262 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:35 v #263 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:35 v #264 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:35 v #265 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:35 v #266 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:35 v #267 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:35 v #268 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:35 v #269 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:35 v #270 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:35 v #271 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:35 v #272 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:35 v #273 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:35 v #274 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:35 v #275 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:35 v #276 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:33 v #53 > Starting the Spiral Server. It is bound
> to: http://localhost:13805
> │ 00:00:35 v #277 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:35 v #278 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:35 v #279 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:30 v #183 Supervisor.sendJson / port: 13805 / 
> json: {"Ping":true} / result:
> │ 00:00:30 v #184 Supervisor.awaitCompiler / Ping / 
> result: 'Some null' / port: 13805 / retry: 1
> │ 00:00:33 v #54 > Server bound to: http://localhost:13805
> │ 00:00:30 d #185 Supervisor.buildFile / 
> takeWhileInclusive / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/ca288d6928a8e761
> 855210f25f97fdc056ee1f21be4a24b26e8533ec368831c8/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:30 d #186 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/ca288d6928a8e761
> 855210f25f97fdc056ee1f21be4a24b26e8533ec368831c8/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:30 d #187 Supervisor.buildFile / 
> takeWhileInclusive / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/ca288d6928a8e761
> 855210f25f97fdc056ee1f21be4a24b26e8533ec368831c8/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:30 v #188 Supervisor.sendJson / port: 13805 / 
> json: {"FileOpen":{"spiText":"\ninl init_series start end inc =\n    inl total :
> f64 = conv ((end - 
> start)...et/spiral_Eval/packages/ca288d6928a8e761855210f25f97fdc056ee1f21be4a24b
> 26e8533ec368831c8/main.spi"}} / result:
> │ 00:00:30 v #189 Supervisor.sendJson / port: 13805 / 
> json: {"BuildFile":{"backend":"Python \u002B 
> Cuda","uri":"file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packa
> ges/ca288d6928a8e761855210f25f97fdc056ee1f21be4a24b26e8533ec368831c8/main.spi"}}
> / result:
> │ 00:00:31 d #190 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/ca288d6928a8e761
> 855210f25f97fdc056ee1f21be4a24b26e8533ec368831c8/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:31 d #191 Supervisor.buildFile / 
> takeWhileInclusive / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/ca288d6928a8e761
> 855210f25f97fdc056ee1f21be4a24b26e8533ec368831c8/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:31 d #192 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/ca288d6928a8e761
> 855210f25f97fdc056ee1f21be4a24b26e8533ec368831c8/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:31 d #193 Supervisor.buildFile / 
> takeWhileInclusive / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/ca288d6928a8e761
> 855210f25f97fdc056ee1f21be4a24b26e8533ec368831c8/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:32 d #194 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/ca288d6928a8e761
> 855210f25f97fdc056ee1f21be4a24b26e8533ec368831c8/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:32 d #195 Supervisor.buildFile / 
> takeWhileInclusive / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/ca288d6928a8e761
> 855210f25f97fdc056ee1f21be4a24b26e8533ec368831c8/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:32 d #196 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/ca288d6928a8e761
> 855210f25f97fdc056ee1f21be4a24b26e8533ec368831c8/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:32 d #197 Supervisor.buildFile / 
> takeWhileInclusive / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/ca288d6928a8e761
> 855210f25f97fdc056ee1f21be4a24b26e8533ec368831c8/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:33 d #198 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/ca288d6928a8e761
> 855210f25f97fdc056ee1f21be4a24b26e8533ec368831c8/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:33 d #199 Supervisor.buildFile / 
> takeWhileInclusive / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/ca288d6928a8e761
> 855210f25f97fdc056ee1f21be4a24b26e8533ec368831c8/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:33 d #200 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/ca288d6928a8e761
> 855210f25f97fdc056ee1f21be4a24b26e8533ec368831c8/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ kernel = r"""
> │ """
> │ class static_array():
> │     def __init__(self, length):
> │         self.ptr = []
> │         for _ in range(length):
> │             self.ptr.append(None)
> │ 
> │     def __getitem__(self, index):
> │         assert 0 <= index < len(self.ptr), "The get index 
> needs to be in range."
> │         return self.ptr[index]
> │     
> │     def __setitem__(self, index, value):
> │         assert 0 <= index < len(self.ptr), "The set index 
> needs to be in range."
> │         self.ptr[index] = value
> │ 
> │ class static_array_list(static_array):
> │     def __init__(self, length):
> │         super().__init__(length)
> │         self.length = 0
> │ 
> │     def __getitem__(self, index):
> │         assert 0 <= index < self.length, "The get index needs
> to be in range."
> │         return self.ptr[index]
> │     
> │     d...nge."
> │         self.length = i
> │ 
> │ class dynamic_array(static_array): 
> │     pass
> │ 
> │ class dynamic_array_list(static_array_list):
> │     def length_(self): return self.length
> │ 
> │ import cupy as cp
> │ import numpy as np
> │ from dataclasses import dataclass
> │ from typing import NamedTuple, Union, Callable, Tuple
> │ i8 = int; i16 = int; i32 = int; i64 = int; u8 = int; u16 = 
> int; u32 = int; u64 = int; f32 = float; f64 = float; char = str; string = str
> │ cuda = False
> │ 
> │ def main_body():
> │     return 0.3325000000000001
> │ 
> │ def main():
> │     r = main_body()
> │     if cuda: cp.cuda.get_current_stream().synchronize() # 
> This line is here so the `__trap()` calls on the kernel aren't missed.
> │     return r
> │ 
> │ if __name__ == '__main__': result = main(); None if result is
> None else print(result)
> │ 
> │ 00:00:33 d #201 Supervisor.buildFile / 
> takeWhileInclusive / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/ca288d6928a8e761
> 855210f25f97fdc056ee1f21be4a24b26e8533ec368831c8/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ kernel = r"""
> │ """
> │ class static_array():
> │     def __init__(self, length):
> │         self.ptr = []
> │         for _ in range(length):
> │             self.ptr.append(None)
> │ 
> │     def __getitem__(self, index):
> │         assert 0 <= index < len(self.ptr), "The get index 
> needs to be in range."
> │         return self.ptr[index]
> │     
> │     def __setitem__(self, index, value):
> │         assert 0 <= index < len(self.ptr), "The set index 
> needs to be in range."
> │         self.ptr[index] = value
> │ 
> │ class static_array_list(static_array):
> │     def __init__(self, length):
> │         super().__init__(length)
> │         self.length = 0
> │ 
> │     def __getitem__(self, index):
> │         assert 0 <= index < self.length, "The get index needs
> to be in range."
> │         return self.ptr[index]
> │     
> │     d...nge."
> │         self.length = i
> │ 
> │ class dynamic_array(static_array): 
> │     pass
> │ 
> │ class dynamic_array_list(static_array_list):
> │     def length_(self): return self.length
> │ 
> │ import cupy as cp
> │ import numpy as np
> │ from dataclasses import dataclass
> │ from typing import NamedTuple, Union, Callable, Tuple
> │ i8 = int; i16 = int; i32 = int; i64 = int; u8 = int; u16 = 
> int; u32 = int; u64 = int; f32 = float; f64 = float; char = str; string = str
> │ cuda = False
> │ 
> │ def main_body():
> │     return 0.3325000000000001
> │ 
> │ def main():
> │     r = main_body()
> │     if cuda: cp.cuda.get_current_stream().synchronize() # 
> This line is here so the `__trap()` calls on the kernel aren't missed.
> │     return r
> │ 
> │ if __name__ == '__main__': result = main(); None if result is
> None else print(result)
> │ 
> │ 00:00:33 v #202 Supervisor.sendJson / port: 13805 / 
> json: 
> {"FileDelete":{"uris":["file:///home/runner/work/polyglot/polyglot/target/spiral
> _Eval/packages/ca288d6928a8e761855210f25f97fdc056ee1f21be4a24b26e8533ec368831c8"
> ]}} / result:
> │ 00:00:38 v #280 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:33 d #203 FileSystem.watchWithFilter / Disposing 
> watch stream / filter: FileName, LastWrite
> │ Some
> │   (Some
> │      "kernel = r"""
> │ """
> │ class static_array():
> │     def __init__(self, length):
> │         self.ptr = []
> │         for _ in range(length):
> │             self.ptr.append(None)
> │ 
> │     def __getitem__(self, index):
> │         assert 0 <= index < len(self.ptr), "The get index 
> needs to be in range."
> │         return self.ptr[index]
> │     
> │     def __setitem__(self, index, value):
> │         assert 0 <= index < len(self.ptr), "The set index 
> needs to be in range."
> │         self.ptr[index] = value
> │ 
> │ class static_array_list(static_array):
> │     def __init__(self, length):
> │         super().__init__(length)
> │         self.length = 0
> │ 
> │     def __getitem__(self, index):
> │         assert 0 <= index < self.length, "The get index needs
> to be in range."
> │         return self.ptr[index]
> │     
> │     def __setitem__(self, index, value):
> │         assert 0 <= index < self.length, "The set index needs
> to be in range."
> │         self.ptr[index] = value
> │ 
> │     def push(self,value):
> │         assert (self.length < len(self.ptr)), "The length 
> before pushing has to be less than the maximum length of the array."
> │         self.ptr[self.length] = value
> │         self.length += 1
> │ 
> │     def pop(self):
> │         assert (0 < self.length), "The length before popping 
> has to be greater than 0."
> │         self.length -= 1
> │         return self.ptr[self.length]
> │ 
> │     def unsafe_set_length(self,i):
> │         assert 0 <= i <= len(self.ptr), "The new length has 
> to be in range."
> │         self.length = i
> │ 
> │ class dynamic_array(static_array): 
> │     pass
> │ 
> │ class dynamic_array_list(static_array_list):
> │     def length_(self): return self.length
> │ 
> │ import cupy as cp
> │ import numpy as np
> │ from dataclasses import dataclass
> │ from typing import NamedTuple, Union, Callable, Tuple
> │ i8 = int; i16 = int; i32 = int; i64 = int; u8 = int; u16 = 
> int; u32 = int; u64 = int; f32 = float; f64 = float; char = str; string = str
> │ cuda = False
> │ 
> │ def main_body():
> │     return 0.3325000000000001
> │ 
> │ def main():
> │     r = main_body()
> │     if cuda: cp.cuda.get_current_stream().synchronize() # 
> This line is here so the `__trap()` calls on the kernel aren't missed.
> │     return r
> │ 
> │ if __name__ == '__main__': result = main(); None if result is
> None else print(result)
> │ ",
> │    [])
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> """
> inl init_series start end inc =
>     inl total : f64 = conv ((end - start) / inc) + 1
>     listm.init total (conv >> (*) inc >> (+) start) : list f64
> 
> type integration = (f64 -> f64) -> f64 -> f64 -> f64
> 
> inl integral dt : integration =
>     fun f a b =>
>         init_series (a + dt / 2) (b - dt / 2) dt
>         |> listm.map (f >> (*) dt)
>         |> listm.fold (+) 0
> 
> inl main () =
>     integral 0.01 (fun x => x ** 2) 0 1
> """
> |> fun code -> Spi (code, None)
> |> buildCode Fsharp [[||]] false 10000 None
> |> Async.runWithTimeout 10000
> |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> 
> List.map fst)
> |> _assertEqual (
>     Some (
>         Some "0.33332500000000004\n",
>         [[]]
>     )
> )
> // |> _assertEqual None
> // |> fun x -> printfn $"{x.ToDisplayString ()}"
> 
> ── [ 3.32s - stdout ] ──────────────────────────────────────────────────────────
> │ 00:00:38 v #281 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:36 d #55 runtime.execute_with_options_async / { 
> file_name = dotnet; arguments = US5_0
> │   
> ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral 
> Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 
> --default-int i32 --default-float f64"; options = { command = dotnet 
> "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral 
> Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 
> --default-int i32 --default-float f64; cancellation_token = Some 
> System.Threading.CancellationToken; environment_variables = [||]; on_line = Some
> <fun:compiler@22-4>; stdin = None; trace = true; working_directory = Some 
> "/home/runner/work/polyglot/polyglot" } }
> │ 00:00:38 v #282 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:38 v #283 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:36 v #56 > 00:00:00 d #1 pwd: 
> /home/runner/work/polyglot/polyglot
> │ 00:00:36 v #57 > 00:00:00 d #2 dllPath: 
> /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language
> 2/artifacts/bin/The Spiral Language 2/release
> │ 00:00:36 v #58 > 00:00:00 d #3 targetDir: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval
> │ 00:00:38 v #284 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:38 v #285 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:38 v #286 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:38 v #287 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:38 v #288 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:38 v #289 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:38 v #290 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:38 v #291 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:38 v #292 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:38 v #293 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:38 v #294 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:38 v #295 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:38 v #296 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:38 v #297 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:38 v #298 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:38 v #299 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:38 v #300 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:38 v #301 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:38 v #302 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:38 v #303 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:38 v #304 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:38 v #305 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:38 v #306 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:36 v #59 > Starting the Spiral Server. It is bound
> to: http://localhost:13805
> │ 00:00:38 v #307 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:38 v #308 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:34 v #204 Supervisor.sendJson / port: 13805 / 
> json: {"Ping":true} / result:
> │ 00:00:34 v #205 Supervisor.awaitCompiler / Ping / 
> result: 'Some null' / port: 13805 / retry: 1
> │ 00:00:36 v #60 > Server bound to: http://localhost:13805
> │ 00:00:34 d #206 Supervisor.buildFile / 
> takeWhileInclusive / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/2acc44d97e6b50ce
> 3caf39a0b93135633484d22c3ef6e7797ce64875a41451f4/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:34 d #207 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/2acc44d97e6b50ce
> 3caf39a0b93135633484d22c3ef6e7797ce64875a41451f4/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:34 d #208 Supervisor.buildFile / 
> takeWhileInclusive / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/2acc44d97e6b50ce
> 3caf39a0b93135633484d22c3ef6e7797ce64875a41451f4/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:34 v #209 Supervisor.sendJson / port: 13805 / 
> json: {"FileOpen":{"spiText":"\ninl init_series start end inc =\n    inl total :
> f64 = conv ((end - 
> start)...et/spiral_Eval/packages/2acc44d97e6b50ce3caf39a0b93135633484d22c3ef6e77
> 97ce64875a41451f4/main.spi"}} / result:
> │ 00:00:34 v #210 Supervisor.sendJson / port: 13805 / 
> json: 
> {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polygl
> ot/target/spiral_Eval/packages/2acc44d97e6b50ce3caf39a0b93135633484d22c3ef6e7797
> ce64875a41451f4/main.spi"}} / result:
> │ 00:00:34 d #211 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/2acc44d97e6b50ce
> 3caf39a0b93135633484d22c3ef6e7797ce64875a41451f4/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:34 d #212 Supervisor.buildFile / 
> takeWhileInclusive / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/2acc44d97e6b50ce
> 3caf39a0b93135633484d22c3ef6e7797ce64875a41451f4/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:35 d #213 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/2acc44d97e6b50ce
> 3caf39a0b93135633484d22c3ef6e7797ce64875a41451f4/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:35 d #214 Supervisor.buildFile / 
> takeWhileInclusive / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/2acc44d97e6b50ce
> 3caf39a0b93135633484d22c3ef6e7797ce64875a41451f4/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:35 d #215 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/2acc44d97e6b50ce
> 3caf39a0b93135633484d22c3ef6e7797ce64875a41451f4/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:35 d #216 Supervisor.buildFile / 
> takeWhileInclusive / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/2acc44d97e6b50ce
> 3caf39a0b93135633484d22c3ef6e7797ce64875a41451f4/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:36 d #217 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/2acc44d97e6b50ce
> 3caf39a0b93135633484d22c3ef6e7797ce64875a41451f4/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:36 d #218 Supervisor.buildFile / 
> takeWhileInclusive / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/2acc44d97e6b50ce
> 3caf39a0b93135633484d22c3ef6e7797ce64875a41451f4/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:36 d #219 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/2acc44d97e6b50ce
> 3caf39a0b93135633484d22c3ef6e7797ce64875a41451f4/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:36 d #220 Supervisor.buildFile / 
> takeWhileInclusive / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/2acc44d97e6b50ce
> 3caf39a0b93135633484d22c3ef6e7797ce64875a41451f4/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:36 d #221 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/2acc44d97e6b50ce
> 3caf39a0b93135633484d22c3ef6e7797ce64875a41451f4/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 0.33332500000000004
> │ 
> │ 00:00:36 d #222 Supervisor.buildFile / 
> takeWhileInclusive / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/2acc44d97e6b50ce
> 3caf39a0b93135633484d22c3ef6e7797ce64875a41451f4/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 0.33332500000000004
> │ 
> │ 00:00:36 v #223 Supervisor.sendJson / port: 13805 / 
> json: 
> {"FileDelete":{"uris":["file:///home/runner/work/polyglot/polyglot/target/spiral
> _Eval/packages/2acc44d97e6b50ce3caf39a0b93135633484d22c3ef6e7797ce64875a41451f4"
> ]}} / result:
> │ 00:00:41 v #309 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:36 d #224 FileSystem.watchWithFilter / Disposing 
> watch stream / filter: FileName, LastWrite
> │ Some (Some "0.33332500000000004
> │ ", [])
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> """inl rec main () = main"""
> |> fun code -> Spi (code, None)
> |> buildCode Fsharp [[||]] false 10000 None
> |> Async.runWithTimeout 10000
> |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> 
> List.map fst)
> |> _assertEqual (
>     Some (
>         None,
>         [[
>             "main.spi:
> Recursive metavariables are not allowed. A metavar cannot be unified with a type
> that has itself.
> Got:      'a
> Expected: () -> 'a"
>         ]]
>     )
> )
> // |> _assertEqual None
> // |> fun x -> printfn $"{x.ToDisplayString ()}"
> 
> ── [ 3.16s - stdout ] ──────────────────────────────────────────────────────────
> │ 00:00:41 v #310 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:39 d #61 runtime.execute_with_options_async / { 
> file_name = dotnet; arguments = US5_0
> │   
> ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral 
> Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 
> --default-int i32 --default-float f64"; options = { command = dotnet 
> "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral 
> Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 
> --default-int i32 --default-float f64; cancellation_token = Some 
> System.Threading.CancellationToken; environment_variables = [||]; on_line = Some
> <fun:compiler@22-4>; stdin = None; trace = true; working_directory = Some 
> "/home/runner/work/polyglot/polyglot" } }
> │ 00:00:41 v #311 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:41 v #312 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:39 v #62 > 00:00:00 d #1 pwd: 
> /home/runner/work/polyglot/polyglot
> │ 00:00:39 v #63 > 00:00:00 d #2 dllPath: 
> /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language
> 2/artifacts/bin/The Spiral Language 2/release
> │ 00:00:39 v #64 > 00:00:00 d #3 targetDir: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval
> │ 00:00:41 v #313 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:41 v #314 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:41 v #315 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:41 v #316 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:41 v #317 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:41 v #318 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:42 v #319 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:42 v #320 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:42 v #321 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:42 v #322 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:42 v #323 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:42 v #324 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:42 v #325 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:42 v #326 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:42 v #327 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:42 v #328 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:42 v #329 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:42 v #330 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:42 v #331 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:42 v #332 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:42 v #333 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:42 v #334 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:42 v #335 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:39 v #65 > Starting the Spiral Server. It is bound
> to: http://localhost:13805
> │ 00:00:42 v #336 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:42 v #337 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:42 v #338 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:42 v #339 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:37 v #225 Supervisor.sendJson / port: 13805 / 
> json: {"Ping":true} / result:
> │ 00:00:37 v #226 Supervisor.awaitCompiler / Ping / 
> result: 'Some null' / port: 13805 / retry: 1
> │ 00:00:40 v #66 > Server bound to: http://localhost:13805
> │ 00:00:37 d #227 Supervisor.buildFile / 
> takeWhileInclusive / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123fe6304a9
> 501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:37 d #228 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123fe6304a9
> 501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:37 d #229 Supervisor.buildFile / 
> takeWhileInclusive / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123fe6304a9
> 501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:37 v #230 Supervisor.sendJson / port: 13805 / 
> json: {"FileOpen":{"spiText":"inl rec main () = 
> main","uri":"file:///home/runner/work/polyglot/polyglot/ta...et/spiral_Eval/pack
> ages/883e0123fe6304a9501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi"}
> } / result:
> │ 00:00:37 v #231 Supervisor.sendJson / port: 13805 / 
> json: 
> {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polygl
> ot/target/spiral_Eval/packages/883e0123fe6304a9501da46e85facc39c4ac4e3dbb77895f8
> ccd4581901ee2b7/main.spi"}} / result:
> │ 00:00:38 d #232 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123fe6304a9
> 501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:38 d #233 Supervisor.buildFile / 
> takeWhileInclusive / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123fe6304a9
> 501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:38 d #234 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123fe6304a9
> 501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:38 d #235 Supervisor.buildFile / 
> takeWhileInclusive / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123fe6304a9
> 501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:39 d #236 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123fe6304a9
> 501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:39 d #237 Supervisor.buildFile / 
> takeWhileInclusive / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123fe6304a9
> 501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:39 d #238 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123fe6304a9
> 501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
> │ 
> │ 00:00:39 d #239 Supervisor.buildFile / 
> takeWhileInclusive / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123fe6304a9
> 501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 0 / outputContent:
> │ 
> │ 00:00:39 d #240 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123fe6304a9
> 501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 0 / error: Some((File main 
> has a type error somewhere in its path., FatalError "File main has a type error 
> somewhere in its path.")) / outputContent:
> │ 
> │ 00:00:39 d #241 Supervisor.buildFile / 
> takeWhileInclusive / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123fe6304a9
> 501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi / errors: [] / 
> typeErrorCount: 1 / retry: 0 / outputContent:
> │ 
> │ 00:00:39 d #242 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123fe6304a9
> 501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 1 / retry: 0 / error: Some((main.spi:
> │ Recursive metavariables are not allowed. A metavar cannot be 
> unified with a type that has itself.
> │ Got:      'a
> │ Expected: () -> 'a, TypeErrors
> │   { errors =
> │      [(({ character = 18
> │           line = 0 }, { character = 22
> │                         line = 0 }),
> │        "Recursive metavariables are not allowed. A metavar 
> cannot be unified with a type that has itself.
> │ Got:      'a
> │ Expected: () -> 'a")]
> │     uri =
> │      
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123
> fe6304a9501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi" })) / 
> outputContent:
> │ 
> │ 00:00:39 d #243 Supervisor.buildFile / 
> takeWhileInclusive / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123fe6304a9
> 501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi / errors: [
> │   [
> │     "main.spi:
> │ Recursive metavariables are not allowed. A metavar cannot be 
> unified with a type that has itself.
> │ Got:      'a
> │ Expected: () -> 'a",
> │     {
> │       "TypeErrors": {
> │         "errors": [
> │           [
> │             [
> │               {
> │                 "character": 18,
> │                 "line": 0
> │               },
> │               {
> │                 "character": 22,
> │                 "line": 0
> │               }
> │             ],
> │             "Recursive metavariables are not allowed. A 
> metavar cannot be unified with a type that has itself.
> │ Got:      'a
> │ Expected: () -> 'a"
> │           ]
> │         ],
> │         "uri": 
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123
> fe6304a9501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi"
> │       }
> │     }
> │   ]
> │ ] / typeErrorCount: 1 / retry: 0 / outputContent:
> │ 
> │ 00:00:44 v #340 networking.test_port_open / { port = 
> 13806; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:39 d #244 Supervisor.buildFile / 
> takeWhileInclusive / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123fe6304a9
> 501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 1 / outputContent:
> │ 
> │ 00:00:39 d #245 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123fe6304a9
> 501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 1 / error:  / outputContent:
> │ 
> │ 00:00:39 d #246 Supervisor.buildFile / 
> takeWhileInclusive / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123fe6304a9
> 501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi / errors: [] / 
> typeErrorCount: 0 / retry: 1 / outputContent:
> │ 
> │ 00:00:39 v #247 Supervisor.sendJson / port: 13805 / 
> json: {"FileOpen":{"spiText":"inl rec main () = 
> main","uri":"file:///home/runner/work/polyglot/polyglot/ta...et/spiral_Eval/pack
> ages/883e0123fe6304a9501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi"}
> } / result:
> │ 00:00:39 v #248 Supervisor.sendJson / port: 13805 / 
> json: 
> {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polygl
> ot/target/spiral_Eval/packages/883e0123fe6304a9501da46e85facc39c4ac4e3dbb77895f8
> ccd4581901ee2b7/main.spi"}} / result:
> │ 00:00:39 d #249 Supervisor.buildFile / AsyncSeq.scan / 
> path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123fe6304a9
> 501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi / errors: [] / 
> outputContentResult:  / typeErrorCount: 0 / retry: 1 / error: Some((main.spi:
> │ Recursive metavariables are not allowed. A metavar cannot be 
> unified with a type that has itself.
> │ Got:      'a
> │ Expected: () -> 'a, TypeErrors
> │   { errors =
> │      [(({ character = 18
> │           line = 0 }, { character = 22
> │                         line = 0 }),
> │        "Recursive metavariables are not allowed. A metavar 
> cannot be unified with a type that has itself.
> │ Got:      'a
> │ Expected: () -> 'a")]
> │     uri =
> │      
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123
> fe6304a9501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi" })) / 
> outputContent:
> │ 
> │ 00:00:39 d #250 Supervisor.buildFile / 
> takeWhileInclusive / path: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123fe6304a9
> 501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi / errors: [
> │   [
> │     "main.spi:
> │ Recursive metavariables are not allowed. A metavar cannot be 
> unified with a type that has itself.
> │ Got:      'a
> │ Expected: () -> 'a",
> │     {
> │       "TypeErrors": {
> │         "errors": [
> │           [
> │             [
> │               {
> │                 "character": 18,
> │                 "line": 0
> │               },
> │               {
> │                 "character": 22,
> │                 "line": 0
> │               }
> │             ],
> │             "Recursive metavariables are not allowed. A 
> metavar cannot be unified with a type that has itself.
> │ Got:      'a
> │ Expected: () -> 'a"
> │           ]
> │         ],
> │         "uri": 
> "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123
> fe6304a9501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi"
> │       }
> │     }
> │   ]
> │ ] / typeErrorCount: 0 / retry: 1 / outputContent:
> │ 
> │ 00:00:39 v #251 Supervisor.sendJson / port: 13805 / 
> json: 
> {"FileDelete":{"uris":["file:///home/runner/work/polyglot/polyglot/target/spiral
> _Eval/packages/883e0123fe6304a9501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7"
> ]}} / result:
> │ 00:00:39 d #252 FileSystem.watchWithFilter / Disposing 
> watch stream / filter: FileName, LastWrite
> │ 00:00:44 v #341 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:40 d #253 FileSystem.watchWithFilter / Disposing 
> watch stream / filter: FileName, LastWrite
> │ Some
> │   (None,
> │    ["main.spi:
> │ Recursive metavariables are not allowed. A metavar cannot be 
> unified with a type that has itself.
> │ Got:      'a
> │ Expected: () -> 'a"])
> │ 
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## getFileTokenRange
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let getFileTokenRange port cancellationToken path = async {
>     let fullPath = path |> System.IO.Path.GetFullPath
>     let! code = fullPath |> SpiralFileSystem.read_all_text_async
>     let lines = code |> SpiralSm.split "\n"
> 
>     let struct (token, disposable) = SpiralThreading.new_disposable_token 
> cancellationToken
>     use _ = disposable
> 
>     let port = port |> Option.defaultWith getCompilerPort
>     let! serverPort, _errors, ct, disposable = awaitCompiler port (Some token)
>     use _ = disposable
> 
>     let fullPathUri = fullPath |> SpiralFileSystem.normalize_path |> 
> SpiralFileSystem.new_file_uri
> 
>     let fileOpenObj = {| FileOpen = {| uri = fullPathUri; spiText = code |} |}
>     let! _fileOpenResult = fileOpenObj |> sendObj serverPort
> 
>     // do! Async.Sleep 60
> 
>     let fileTokenRangeObj =
>         {|
>             FileTokenRange =
>                 {|
>                     uri = fullPathUri
>                     range =
>                         [[|
>                             {|
>                                 line = 0
>                                 character = 0
>                             |}
>                             {|
>                                 line = lines.Length - 1
>                                 character = lines.[[lines.Length - 1]].Length
>                             |}
>                         |]]
>                 |}
>         |}
>     let! fileTokenRangeResult =
>         fileTokenRangeObj
>         |> sendObj serverPort
>         |> Async.withCancellationToken ct
> 
>     let fileDir = fullPath |> System.IO.Path.GetDirectoryName
>     if fileDir |> SpiralSm.starts_with (workspaceRoot </> "target") then
>         let fileDirUri = fileDir |> SpiralFileSystem.normalize_path |> 
> SpiralFileSystem.new_file_uri
>         let fileDeleteObj = {| FileDelete = {| uris = [[| fileDirUri |]] |} |}
>         let! _fileDeleteResult = fileDeleteObj |> sendObj serverPort
>         ()
> 
>     return fileTokenRangeResult |> Option.map FSharp.Json.Json.deserialize<int 
> array>
> }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## getCodeTokenRange
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let getCodeTokenRange cancellationToken code = async {
>     let! mainPath, _ =
>         persistCode {| input = Spi (code, None); backend = None; packages = 
> [[||]] |}
> 
>     let codeDir = mainPath |> System.IO.Path.GetDirectoryName
>     let tokensPath = codeDir </> "tokens.json"
>     let! tokens = async {
>         if tokensPath |> System.IO.File.Exists |> not
>         then return None
>         else
>             let! text = tokensPath |> SpiralFileSystem.read_all_text_async
> 
>             return
>                 if text.Length > 2
>                 then text |> FSharp.Json.Json.deserialize<int array> |> Some
>                 else None
>     }
>     match tokens with
>     | Some tokens ->
>         return tokens |> Some
>     | None -> return! mainPath |> getFileTokenRange None cancellationToken
> }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> """inl main () = ()"""
> |> getCodeTokenRange None
> |> Async.runWithTimeout 10000
> |> Option.flatten
> |> _assertEqual (Some [[| 0; 0; 3; 7; 0; 0; 4; 4; 0; 0; 0; 5; 1; 8; 0; 0; 1; 1; 
> 8; 0; 0; 2; 1; 4; 0; 0;
> 2; 1; 8; 0; 0; 1; 1; 8; 0 |]])
> 
> ── [ 1.39s - stdout ] ──────────────────────────────────────────────────────────
> │ 00:00:44 v #342 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:42 d #67 runtime.execute_with_options_async / { 
> file_name = dotnet; arguments = US5_0
> │   
> ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral 
> Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 
> --default-int i32 --default-float f64"; options = { command = dotnet 
> "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral 
> Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 
> --default-int i32 --default-float f64; cancellation_token = Some 
> System.Threading.CancellationToken; environment_variables = [||]; on_line = Some
> <fun:compiler@22-4>; stdin = None; trace = true; working_directory = Some 
> "/home/runner/work/polyglot/polyglot" } }
> │ 00:00:45 v #343 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:45 v #344 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:43 v #68 > 00:00:00 d #1 pwd: 
> /home/runner/work/polyglot/polyglot
> │ 00:00:43 v #69 > 00:00:00 d #2 dllPath: 
> /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language
> 2/artifacts/bin/The Spiral Language 2/release
> │ 00:00:43 v #70 > 00:00:00 d #3 targetDir: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval
> │ 00:00:45 v #345 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:45 v #346 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:45 v #347 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:45 v #348 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:45 v #349 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:45 v #350 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:45 v #351 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:45 v #352 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:45 v #353 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:45 v #354 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:45 v #355 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:45 v #356 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:45 v #357 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:45 v #358 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:45 v #359 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:45 v #360 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:45 v #361 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:45 v #362 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:45 v #363 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:45 v #364 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:45 v #365 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:45 v #366 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:45 v #367 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:45 v #368 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:43 v #71 > Starting the Spiral Server. It is bound
> to: http://localhost:13805
> │ 00:00:45 v #369 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:45 v #370 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:45 v #371 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:40 v #254 Supervisor.sendJson / port: 13805 / 
> json: {"Ping":true} / result:
> │ 00:00:40 v #255 Supervisor.awaitCompiler / Ping / 
> result: 'Some null' / port: 13805 / retry: 1
> │ 00:00:43 v #72 > Server bound to: http://localhost:13805
> │ 00:00:40 v #256 Supervisor.sendJson / port: 13805 / 
> json: {"FileOpen":{"spiText":"inl main () = 
> ()","uri":"file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/package
> s/20e725d46cfdc99c0f307f1933a76ec7da4570c1b757721164d86f19feaf821e/main.spi"}} /
> result:
> │ 00:00:41 v #257 Supervisor.sendJson / port: 13805 / 
> json: 
> {"FileTokenRange":{"range":[{"character":0,"line":0},{"character":16,"line":0}],
> "uri":"file:///home/...et/spiral_Eval/packages/20e725d46cfdc99c0f307f1933a76ec7d
> a4570c1b757721164d86f19feaf821e/main.spi"}} / result: Some([
> │   0,
> │   0,
> │   3,
> │   7,
> │   0,
> │   0,
> │   4,
> │   4,
> │   0,
> │   0,
> │   0,
> │   5,
> │   1,
> │   8,
> │   0,
> │   0,
> │   1,
> │   1,
> │   8,
> │   0,
> │   0,
> │   2,
> │   1,
> │   4,
> │   0,
> │   0,
> │   2,
> │   1,
> │   8,
> │   0,
> │   0,
> │   1,
> │   1,
> │   8,
> │   0
> │ ])
> │ 00:00:41 v #258 Supervisor.sendJson / port: 13805 / 
> json: 
> {"FileDelete":{"uris":["file:///home/runner/work/polyglot/polyglot/target/spiral
> _Eval/packages/20e725d46cfdc99c0f307f1933a76ec7da4570c1b757721164d86f19feaf821e"
> ]}} / result:
> │ 00:00:46 v #372 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ Some [|0; 0; 3; 7; 0; 0; 4; 4; 0; 0; 0; 5; 1; 8; 0; 0; 1; 1; 
> 8; 0; 0; 2; 1; 4; 0; 0; 2; 1; 8; 0; 0; 1; 1; 8; 0|]
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> """inl main () = 1i32"""
> |> getCodeTokenRange None
> |> Async.runWithTimeout 10000
> |> Option.flatten
> |> _assertEqual (Some [[| 0; 0; 3; 7; 0; 0; 4; 4; 0; 0; 0; 5; 1; 8; 0; 0; 1; 1; 
> 8; 0; 0; 2; 1; 4; 0; 0;
> 2; 1; 3; 0; 0; 1; 3; 12; 0 |]])
> 
> ── [ 1.35s - stdout ] ──────────────────────────────────────────────────────────
> │ 00:00:46 v #373 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:44 d #73 runtime.execute_with_options_async / { 
> file_name = dotnet; arguments = US5_0
> │   
> ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral 
> Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 
> --default-int i32 --default-float f64"; options = { command = dotnet 
> "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral 
> Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 
> --default-int i32 --default-float f64; cancellation_token = Some 
> System.Threading.CancellationToken; environment_variables = [||]; on_line = Some
> <fun:compiler@22-4>; stdin = None; trace = true; working_directory = Some 
> "/home/runner/work/polyglot/polyglot" } }
> │ 00:00:46 v #374 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:46 v #375 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:44 v #74 > 00:00:00 d #1 pwd: 
> /home/runner/work/polyglot/polyglot
> │ 00:00:44 v #75 > 00:00:00 d #2 dllPath: 
> /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language
> 2/artifacts/bin/The Spiral Language 2/release
> │ 00:00:44 v #76 > 00:00:00 d #3 targetDir: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval
> │ 00:00:46 v #376 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:46 v #377 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:46 v #378 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:46 v #379 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:46 v #380 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:46 v #381 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:46 v #382 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:46 v #383 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:46 v #384 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:46 v #385 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:46 v #386 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:46 v #387 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:46 v #388 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:46 v #389 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:46 v #390 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:46 v #391 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:46 v #392 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:46 v #393 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:46 v #394 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:46 v #395 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:46 v #396 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:46 v #397 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:46 v #398 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:44 v #77 > Starting the Spiral Server. It is bound
> to: http://localhost:13805
> │ 00:00:46 v #399 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:46 v #400 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:46 v #401 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:42 v #259 Supervisor.sendJson / port: 13805 / 
> json: {"Ping":true} / result:
> │ 00:00:42 v #260 Supervisor.awaitCompiler / Ping / 
> result: 'Some null' / port: 13805 / retry: 1
> │ 00:00:44 v #78 > Server bound to: http://localhost:13805
> │ 00:00:42 v #261 Supervisor.sendJson / port: 13805 / 
> json: {"FileOpen":{"spiText":"inl main () = 
> 1i32","uri":"file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packa
> ges/5370829508ddefc7386d6b4d280722b47d97cb925585525bee733a187ff8f18b/main.spi"}}
> / result:
> │ 00:00:42 v #262 Supervisor.sendJson / port: 13805 / 
> json: 
> {"FileTokenRange":{"range":[{"character":0,"line":0},{"character":18,"line":0}],
> "uri":"file:///home/...et/spiral_Eval/packages/5370829508ddefc7386d6b4d280722b47
> d97cb925585525bee733a187ff8f18b/main.spi"}} / result: Some([
> │   0,
> │   0,
> │   3,
> │   7,
> │   0,
> │   0,
> │   4,
> │   4,
> │   0,
> │   0,
> │   0,
> │   5,
> │   1,
> │   8,
> │   0,
> │   0,
> │   1,
> │   1,
> │   8,
> │   0,
> │   0,
> │   2,
> │   1,
> │   4,
> │   0,
> │   0,
> │   2,
> │   1,
> │   3,
> │   0,
> │   0,
> │   1,
> │   3,
> │   12,
> │   0
> │ ])
> │ 00:00:42 v #263 Supervisor.sendJson / port: 13805 / 
> json: 
> {"FileDelete":{"uris":["file:///home/runner/work/polyglot/polyglot/target/spiral
> _Eval/packages/5370829508ddefc7386d6b4d280722b47d97cb925585525bee733a187ff8f18b"
> ]}} / result:
> │ 00:00:47 v #402 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ Some [|0; 0; 3; 7; 0; 0; 4; 4; 0; 0; 0; 5; 1; 8; 0; 0; 1; 1; 
> 8; 0; 0; 2; 1; 4; 0; 0; 2; 1; 3; 0; 0; 1; 3; 12; 0|]
> │ 
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## getFileHoverAt
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let getFileHoverAt
>     port
>     cancellationToken
>     path
>     (position : {| line: int; character: int |})
>     = async {
>     let fullPath = path |> System.IO.Path.GetFullPath
>     let! code = fullPath |> SpiralFileSystem.read_all_text_async
>     let lines = code |> SpiralSm.split "\n"
> 
>     let struct (token, disposable) = SpiralThreading.new_disposable_token 
> cancellationToken
>     use _ = disposable
> 
>     let port = port |> Option.defaultWith getCompilerPort
>     let! serverPort, _errors, ct, disposable = awaitCompiler port (Some token)
>     use _ = disposable
> 
>     let fullPathUri = fullPath |> SpiralFileSystem.normalize_path |> 
> SpiralFileSystem.new_file_uri
> 
>     let fileOpenObj = {| FileOpen = {| uri = fullPathUri; spiText = code |} |}
>     let! _fileOpenResult = fileOpenObj |> sendObj serverPort
> 
>     // do! Async.Sleep 60
> 
>     let hoverAtObj =
>         {|
>             HoverAt =
>                 {|
>                     uri = fullPathUri
>                     pos = position
>                 |}
>         |}
>     let! hoverAtResult =
>         hoverAtObj
>         |> sendObj serverPort
>         |> Async.withCancellationToken ct
> 
>     let fileDir = fullPath |> System.IO.Path.GetDirectoryName
>     if fileDir |> SpiralSm.starts_with (workspaceRoot </> "target") then
>         let fileDirUri = fileDir |> SpiralFileSystem.normalize_path |> 
> SpiralFileSystem.new_file_uri
>         let fileDeleteObj = {| FileDelete = {| uris = [[| fileDirUri |]] |} |}
>         let! _fileDeleteResult = fileDeleteObj |> sendObj serverPort
>         ()
> 
>     return hoverAtResult
> }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## getCodeHoverAt
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let getCodeHoverAt cancellationToken code position = async {
>     let! mainPath, _ =
>         persistCode {| input = Spi (code, None); backend = None; packages = 
> [[||]] |}
> 
>     let codeDir = mainPath |> System.IO.Path.GetDirectoryName
>     let filePath = codeDir </> "hover.json"
>     let! output = async {
>         if filePath |> System.IO.File.Exists |> not
>         then return None
>         else
>             let! text = filePath |> SpiralFileSystem.read_all_text_async
> 
>             return
>                 if text.Length > 2
>                 then text |> Some
>                 else None
>     }
>     match output with
>     | Some output ->
>         return output |> Some
>     | None -> return! getFileHoverAt None cancellationToken mainPath position
> }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> getCodeHoverAt None """inl main () = ()""" {| line = 0; character = 4 |}
> |> Async.runWithTimeout 10000
> |> Option.flatten
> |> _assertEqual (Some "() -> ()")
> 
> ── [ 2.97s - stdout ] ──────────────────────────────────────────────────────────
> │ 00:00:47 v #403 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:45 d #79 runtime.execute_with_options_async / { 
> file_name = dotnet; arguments = US5_0
> │   
> ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral 
> Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 
> --default-int i32 --default-float f64"; options = { command = dotnet 
> "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral 
> Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 
> --default-int i32 --default-float f64; cancellation_token = Some 
> System.Threading.CancellationToken; environment_variables = [||]; on_line = Some
> <fun:compiler@22-4>; stdin = None; trace = true; working_directory = Some 
> "/home/runner/work/polyglot/polyglot" } }
> │ 00:00:48 v #404 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:48 v #405 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:45 v #80 > 00:00:00 d #1 pwd: 
> /home/runner/work/polyglot/polyglot
> │ 00:00:45 v #81 > 00:00:00 d #2 dllPath: 
> /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language
> 2/artifacts/bin/The Spiral Language 2/release
> │ 00:00:45 v #82 > 00:00:00 d #3 targetDir: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval
> │ 00:00:48 v #406 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:48 v #407 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:48 v #408 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:48 v #409 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:48 v #410 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:48 v #411 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:48 v #412 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:48 v #413 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:48 v #414 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:48 v #415 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:48 v #416 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:48 v #417 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:48 v #418 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:48 v #419 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:48 v #420 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:48 v #421 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:48 v #422 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:48 v #423 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:48 v #424 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:48 v #425 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:48 v #426 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:48 v #427 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:48 v #428 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:46 v #83 > Starting the Spiral Server. It is bound
> to: http://localhost:13805
> │ 00:00:48 v #429 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:48 v #430 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:48 v #431 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:43 v #264 Supervisor.sendJson / port: 13805 / 
> json: {"Ping":true} / result:
> │ 00:00:43 v #265 Supervisor.awaitCompiler / Ping / 
> result: 'Some null' / port: 13805 / retry: 1
> │ 00:00:46 v #84 > Server bound to: http://localhost:13805
> │ 00:00:43 v #266 Supervisor.sendJson / port: 13805 / 
> json: {"FileOpen":{"spiText":"inl main () = 
> ()","uri":"file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/package
> s/20e725d46cfdc99c0f307f1933a76ec7da4570c1b757721164d86f19feaf821e/main.spi"}} /
> result:
> │ 00:00:45 v #267 Supervisor.sendJson / port: 13805 / 
> json: 
> {"HoverAt":{"pos":{"character":4,"line":0},"uri":"file:///home/runner/work/polyg
> lot/polyglot/target/spiral_Eval/packages/20e725d46cfdc99c0f307f1933a76ec7da4570c
> 1b757721164d86f19feaf821e/main.spi"}} / result: Some(() -> ())
> │ 00:00:45 v #268 Supervisor.sendJson / port: 13805 / 
> json: 
> {"FileDelete":{"uris":["file:///home/runner/work/polyglot/polyglot/target/spiral
> _Eval/packages/20e725d46cfdc99c0f307f1933a76ec7da4570c1b757721164d86f19feaf821e"
> ]}} / result:
> │ 00:00:50 v #432 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ Some "() -> ()"
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> getCodeHoverAt None """inl main () = ()""" {| line = 0; character = 0 |}
> |> Async.runWithTimeout 10000
> |> Option.flatten
> |> _assertEqual (Some null)
> 
> ── [ 3.02s - stdout ] ──────────────────────────────────────────────────────────
> │ 00:00:50 v #433 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:48 d #85 runtime.execute_with_options_async / { 
> file_name = dotnet; arguments = US5_0
> │   
> ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral 
> Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 
> --default-int i32 --default-float f64"; options = { command = dotnet 
> "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral 
> Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 
> --default-int i32 --default-float f64; cancellation_token = Some 
> System.Threading.CancellationToken; environment_variables = [||]; on_line = Some
> <fun:compiler@22-4>; stdin = None; trace = true; working_directory = Some 
> "/home/runner/work/polyglot/polyglot" } }
> │ 00:00:51 v #434 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:51 v #435 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:48 v #86 > 00:00:00 d #1 pwd: 
> /home/runner/work/polyglot/polyglot
> │ 00:00:48 v #87 > 00:00:00 d #2 dllPath: 
> /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language
> 2/artifacts/bin/The Spiral Language 2/release
> │ 00:00:48 v #88 > 00:00:00 d #3 targetDir: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval
> │ 00:00:51 v #436 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:51 v #437 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:51 v #438 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:51 v #439 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:51 v #440 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:51 v #441 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:51 v #442 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:51 v #443 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:51 v #444 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:51 v #445 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:51 v #446 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:51 v #447 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:51 v #448 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:51 v #449 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:51 v #450 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:51 v #451 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:51 v #452 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:51 v #453 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:51 v #454 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:51 v #455 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:51 v #456 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:51 v #457 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:51 v #458 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:49 v #89 > Starting the Spiral Server. It is bound
> to: http://localhost:13805
> │ 00:00:51 v #459 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:51 v #460 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:51 v #461 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:46 v #269 Supervisor.sendJson / port: 13805 / 
> json: {"Ping":true} / result:
> │ 00:00:46 v #270 Supervisor.awaitCompiler / Ping / 
> result: 'Some null' / port: 13805 / retry: 1
> │ 00:00:49 v #90 > Server bound to: http://localhost:13805
> │ 00:00:46 v #271 Supervisor.sendJson / port: 13805 / 
> json: {"FileOpen":{"spiText":"inl main () = 
> ()","uri":"file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/package
> s/20e725d46cfdc99c0f307f1933a76ec7da4570c1b757721164d86f19feaf821e/main.spi"}} /
> result:
> │ 00:00:48 v #272 Supervisor.sendJson / port: 13805 / 
> json: 
> {"HoverAt":{"pos":{"character":0,"line":0},"uri":"file:///home/runner/work/polyg
> lot/polyglot/target/spiral_Eval/packages/20e725d46cfdc99c0f307f1933a76ec7da4570c
> 1b757721164d86f19feaf821e/main.spi"}} / result:
> │ 00:00:48 v #273 Supervisor.sendJson / port: 13805 / 
> json: 
> {"FileDelete":{"uris":["file:///home/runner/work/polyglot/polyglot/target/spiral
> _Eval/packages/20e725d46cfdc99c0f307f1933a76ec7da4570c1b757721164d86f19feaf821e"
> ]}} / result:
> │ 00:00:53 v #462 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ Some null
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> getCodeHoverAt None """inl rec main () = main""" {| line = 0; character = 8 |}
> |> Async.runWithTimeout 10000
> |> Option.flatten
> |> _assertEqual (Some "forall 'a. () -> 'a")
> 
> ── [ 2.85s - stdout ] ──────────────────────────────────────────────────────────
> │ 00:00:53 v #463 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:51 d #91 runtime.execute_with_options_async / { 
> file_name = dotnet; arguments = US5_0
> │   
> ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral 
> Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 
> --default-int i32 --default-float f64"; options = { command = dotnet 
> "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral 
> Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 
> --default-int i32 --default-float f64; cancellation_token = Some 
> System.Threading.CancellationToken; environment_variables = [||]; on_line = Some
> <fun:compiler@22-4>; stdin = None; trace = true; working_directory = Some 
> "/home/runner/work/polyglot/polyglot" } }
> │ 00:00:54 v #464 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:54 v #465 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:51 v #92 > 00:00:00 d #1 pwd: 
> /home/runner/work/polyglot/polyglot
> │ 00:00:51 v #93 > 00:00:00 d #2 dllPath: 
> /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language
> 2/artifacts/bin/The Spiral Language 2/release
> │ 00:00:51 v #94 > 00:00:00 d #3 targetDir: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval
> │ 00:00:54 v #466 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:54 v #467 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:54 v #468 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:54 v #469 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:54 v #470 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:54 v #471 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:54 v #472 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:54 v #473 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:54 v #474 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:54 v #475 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:54 v #476 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:54 v #477 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:54 v #478 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:54 v #479 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:54 v #480 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:54 v #481 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:54 v #482 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:54 v #483 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:54 v #484 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:54 v #485 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:54 v #486 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:54 v #487 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:54 v #488 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:52 v #95 > Starting the Spiral Server. It is bound
> to: http://localhost:13805
> │ 00:00:54 v #489 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:54 v #490 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:54 v #491 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:49 v #274 Supervisor.sendJson / port: 13805 / 
> json: {"Ping":true} / result:
> │ 00:00:49 v #275 Supervisor.awaitCompiler / Ping / 
> result: 'Some null' / port: 13805 / retry: 1
> │ 00:00:52 v #96 > Server bound to: http://localhost:13805
> │ 00:00:49 v #276 Supervisor.sendJson / port: 13805 / 
> json: {"FileOpen":{"spiText":"inl rec main () = 
> main","uri":"file:///home/runner/work/polyglot/polyglot/ta...et/spiral_Eval/pack
> ages/7fa7f94d5cb478aa7827ac687ed3514a89f2a8e22fc895db0f8b03cacf92c7e2/main.spi"}
> } / result:
> │ 00:00:51 v #277 Supervisor.sendJson / port: 13805 / 
> json: 
> {"HoverAt":{"pos":{"character":8,"line":0},"uri":"file:///home/runner/work/polyg
> lot/polyglot/target/spiral_Eval/packages/7fa7f94d5cb478aa7827ac687ed3514a89f2a8e
> 22fc895db0f8b03cacf92c7e2/main.spi"}} / result: Some(forall 'a. () -> 'a)
> │ 00:00:51 v #278 Supervisor.sendJson / port: 13805 / 
> json: 
> {"FileDelete":{"uris":["file:///home/runner/work/polyglot/polyglot/target/spiral
> _Eval/packages/7fa7f94d5cb478aa7827ac687ed3514a89f2a8e22fc895db0f8b03cacf92c7e2"
> ]}} / result:
> │ 00:00:56 v #492 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ Some "forall 'a. () -> 'a"
> │ 
> │ 
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> getCodeHoverAt None """inl main () = 1""" {| line = 0; character = 4 |}
> |> Async.runWithTimeout 10000
> |> Option.flatten
> |> _assertEqual (Some "forall 'a {number}. () -> 'a")
> 
> ── [ 2.87s - stdout ] ──────────────────────────────────────────────────────────
> │ 00:00:56 v #493 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:54 d #97 runtime.execute_with_options_async / { 
> file_name = dotnet; arguments = US5_0
> │   
> ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral 
> Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 
> --default-int i32 --default-float f64"; options = { command = dotnet 
> "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral 
> Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 
> --default-int i32 --default-float f64; cancellation_token = Some 
> System.Threading.CancellationToken; environment_variables = [||]; on_line = Some
> <fun:compiler@22-4>; stdin = None; trace = true; working_directory = Some 
> "/home/runner/work/polyglot/polyglot" } }
> │ 00:00:56 v #494 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:56 v #495 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:54 v #98 > 00:00:00 d #1 pwd: 
> /home/runner/work/polyglot/polyglot
> │ 00:00:54 v #99 > 00:00:00 d #2 dllPath: 
> /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language
> 2/artifacts/bin/The Spiral Language 2/release
> │ 00:00:54 v #100 > 00:00:00 d #3 targetDir: 
> /home/runner/work/polyglot/polyglot/target/spiral_Eval
> │ 00:00:56 v #496 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:56 v #497 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:56 v #498 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:56 v #499 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:56 v #500 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:56 v #501 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:56 v #502 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:56 v #503 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:56 v #504 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:57 v #505 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:57 v #506 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:57 v #507 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:57 v #508 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:57 v #509 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:57 v #510 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:57 v #511 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:57 v #512 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:57 v #513 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:57 v #514 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:57 v #515 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:57 v #516 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:57 v #517 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:57 v #518 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:54 v #101 > Starting the Spiral Server. It is 
> bound to: http://localhost:13805
> │ 00:00:57 v #519 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:57 v #520 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:57 v #521 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ 00:00:52 v #279 Supervisor.sendJson / port: 13805 / 
> json: {"Ping":true} / result:
> │ 00:00:52 v #280 Supervisor.awaitCompiler / Ping / 
> result: 'Some null' / port: 13805 / retry: 1
> │ 00:00:55 v #102 > Server bound to: 
> http://localhost:13805
> │ 00:00:52 v #281 Supervisor.sendJson / port: 13805 / 
> json: {"FileOpen":{"spiText":"inl main () = 
> 1","uri":"file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages
> /2f51fd7aa58d1ea373b484460dba65cec845b6dddbc1fc6de2eea30335846eee/main.spi"}} / 
> result:
> │ 00:00:54 v #282 Supervisor.sendJson / port: 13805 / 
> json: 
> {"HoverAt":{"pos":{"character":4,"line":0},"uri":"file:///home/runner/work/polyg
> lot/polyglot/target/spiral_Eval/packages/2f51fd7aa58d1ea373b484460dba65cec845b6d
> ddbc1fc6de2eea30335846eee/main.spi"}} / result: Some(forall 'a {number}. () -> 
> 'a)
> │ 00:00:54 v #283 Supervisor.sendJson / port: 13805 / 
> json: 
> {"FileDelete":{"uris":["file:///home/runner/work/polyglot/polyglot/target/spiral
> _Eval/packages/2f51fd7aa58d1ea373b484460dba65cec845b6dddbc1fc6de2eea30335846eee"
> ]}} / result:
> │ 00:00:59 v #522 networking.test_port_open / { port = 
> 13805; ex = System.AggregateException: One or more errors occurred. (Connection 
> refused) }
> │ Some "forall 'a {number}. () -> 'a"
> │ 
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## Arguments
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> [[<RequireQualifiedAccess>]]
> type Arguments =
>     | Build_File of string * string
>     | File_Token_Range of string * string
>     | File_Hover_At of string * string * int * int
>     | Execute_Command of string
>     | [[<Argu.ArguAttributes.Unique>]] Timeout of int
>     | [[<Argu.ArguAttributes.Unique>]] Port of int
>     | [[<Argu.ArguAttributes.Unique>]] Parallel
>     | [[<Argu.ArguAttributes.Unique>]] Exit_On_Error
> 
>     interface Argu.IArgParserTemplate with
>         member s.Usage =
>             match s with
>             | Build_File _ -> nameof Build_File
>             | File_Token_Range _ -> nameof File_Token_Range
>             | File_Hover_At _ -> nameof File_Hover_At
>             | Execute_Command _ -> nameof Execute_Command
>             | Timeout _ -> nameof Timeout
>             | Port _ -> nameof Port
>             | Parallel -> nameof Parallel
>             | Exit_On_Error-> nameof Exit_On_Error
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> Argu.ArgumentParser.Create<Arguments>().PrintUsage ()
> 
> ── [ 79.55ms - return value ] ──────────────────────────────────────────────────
> │ "USAGE: dotnet-repl [--help] [--build-file <string> <string>]
> │                    [--file-token-range <string> <string>]
> │                    [--file-hover-at <string> <string> <int> 
> <int>]
> │                    [--execute-command <string>] [--timeout 
> <int>] [--port <int>]
> │                    [--parallel] [--exit-on-error]
> │ 
> │ OPTIONS:
> │ 
> │     --build-file <string> <string>
> │                           Build_File
> │     --file-token-range <string> <string>
> │                           File_Token_Range
> │     --file-hover-at <string> <string> <int> <int>
> │                           File_Hover_At
> │     --execute-command <string>
> │                           Execute_Command
> │     --timeout <int>       Timeout
> │     --port <int>          Port
> │     --parallel            Parallel
> │     --exit-on-error       Exit_On_Error
> │     --help                display this list of options.
> │ "
> │ 
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## main
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let main args =
>     let argsMap = args |> Runtime.parseArgsMap<Arguments>
> 
>     let buildFileActions =
>         argsMap
>         |> Map.tryFind (nameof Arguments.Build_File)
>         |> Option.defaultValue [[]]
>         |> List.choose (function
>             | Arguments.Build_File (inputPath, outputPath) -> Some (inputPath, 
> outputPath)
>             | _ -> None
>         )
> 
>     let fileTokenRangeActions =
>         argsMap
>         |> Map.tryFind (nameof Arguments.File_Token_Range)
>         |> Option.defaultValue [[]]
>         |> List.choose (function
>             | Arguments.File_Token_Range (inputPath, outputPath) -> Some 
> (inputPath, outputPath)
>             | _ -> None
>         )
> 
>     let fileHoverAtActions =
>         argsMap
>         |> Map.tryFind (nameof Arguments.File_Hover_At)
>         |> Option.defaultValue [[]]
>         |> List.choose (function
>             | Arguments.File_Hover_At (inputPath, outputPath, line, character) 
> ->
>                 Some (inputPath, outputPath, line, character)
>             | _ -> None
>         )
> 
>     let executeCommandActions =
>         argsMap
>         |> Map.tryFind (nameof Arguments.Execute_Command)
>         |> Option.defaultValue [[]]
>         |> List.choose (function
>             | Arguments.Execute_Command command -> Some command
>             | _ -> None
>         )
> 
>     let timeout =
>         match argsMap |> Map.tryFind (nameof Arguments.Timeout) with
>         | Some [[ Arguments.Timeout timeout ]] -> timeout
>         | _ -> 60000 * 60
> 
>     let port =
>         match argsMap |> Map.tryFind (nameof Arguments.Port) with
>         | Some [[ Arguments.Port port ]] -> Some port
>         | _ -> None
> 
>     let isParallel = argsMap |> Map.containsKey (nameof Arguments.Parallel)
> 
>     let isExitOnError = argsMap |> Map.containsKey (nameof 
> Arguments.Exit_On_Error)
> 
>     async {
>         let port =
>             port
>             |> Option.defaultWith getCompilerPort
>         let struct (localToken, disposable) = 
> SpiralThreading.new_disposable_token None
>         let! serverPort, _errors, compilerToken, disposable = awaitCompiler port
> (Some localToken)
>         use _ = disposable
> 
>         let buildFileAsync =
>             buildFileActions
>             |> List.map (fun (inputPath, outputPath) -> async {
>                 let! _outputPath, (outputCode, errors) =
>                     let backend =
>                         if outputPath |> SpiralSm.ends_with ".fsx"
>                         then Fsharp
>                         elif outputPath |> SpiralSm.ends_with ".py"
>                         then Cuda
>                         else failwith $"Supervisor.main / invalid backend / 
> outputPath: {outputPath}"
>                     let isReal = inputPath |> SpiralSm.ends_with ".spir"
>                     inputPath |> buildFile backend timeout (Some serverPort) 
> None
> 
>                 errors
>                 |> List.map snd
>                 |> List.iter (fun error ->
>                     trace Critical (fun () -> $"main / error: {error |> 
> serializeObj}") _locals
>                 )
> 
>                 match outputCode with
>                 | Some outputCode ->
>                     do! outputCode |> SpiralFileSystem.write_all_text_exists 
> outputPath
>                     return 0
>                 | None ->
>                     if isExitOnError
>                     then SpiralRuntime.current_process_kill ()
> 
>                     return 1
>             })
> 
>         let fileTokenRangeAsync =
>             fileTokenRangeActions
>             |> List.map (fun (inputPath, outputPath) -> async {
>                 let! tokenRange = inputPath |> getFileTokenRange (Some 
> serverPort) None
>                 match tokenRange with
>                 | Some tokenRange ->
>                     do! tokenRange |> FSharp.Json.Json.serialize |> 
> SpiralFileSystem.write_all_text_exists outputPath
>                     return 0
>                 | None ->
>                     if isExitOnError
>                     then SpiralRuntime.current_process_kill ()
> 
>                     return 1
>             })
> 
>         let fileHoverAtAsync =
>             fileHoverAtActions
>             |> List.map (fun (inputPath, outputPath, line, character) -> async {
>                 let! hoverAt =
>                     getFileHoverAt
>                         (Some serverPort)
>                         None
>                         inputPath
>                         {| line = line; character = character |}
>                 match hoverAt with
>                 | Some hoverAt ->
>                     do! hoverAt |> FSharp.Json.Json.serialize |> 
> SpiralFileSystem.write_all_text_exists outputPath
>                     return 0
>                 | None ->
>                     if isExitOnError
>                     then SpiralRuntime.current_process_kill ()
> 
>                     return 1
>             })
> 
>         let executeCommandAsync =
>             executeCommandActions
>             |> List.map (fun command -> async {
>                 let! exitCode, result =
>                     SpiralRuntime.execution_options (fun x ->
>                         { x with
>                             l0 = command
>                             l1 = Some compilerToken
>                         }
>                     )
>                     |> SpiralRuntime.execute_with_options_async
> 
>                 trace Debug (fun () -> $"main / executeCommand / exitCode: 
> {exitCode} / command: {command}") _locals
> 
>                 if isExitOnError && exitCode <> 0
>                 then SpiralRuntime.current_process_kill ()
> 
>                 return exitCode
>             })
> 
>         return!
>             [[| buildFileAsync; fileTokenRangeAsync; fileHoverAtAsync; 
> executeCommandAsync |]]
>             |> Seq.collect id
>             |> fun x ->
>                 if isParallel
>                 then Async.Parallel (x, float System.Environment.ProcessorCount 
> * 0.51 |> ceil |> int)
>                 else Async.Sequential x
>             |> Async.map Array.sum
>     }
>     |> Async.runWithTimeout timeout
>     |> Option.defaultValue 1
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let args =
>     System.Environment.GetEnvironmentVariable "ARGS"
>     |> SpiralRuntime.split_args
>     |> Result.toArray
>     |> Array.collect id
> 
> match args with
> | [[||]] -> 0
> | args -> if main args = 0 then 0 else failwith "main failed"
> 
> ── [ 50.94ms - return value ] ──────────────────────────────────────────────────
> │ <div class="dni-plaintext"><pre>0
> │ </pre></div><style>
> │ .dni-code-hint {
> │     font-style: italic;
> │     overflow: hidden;
> │     white-space: nowrap;
> │ }
> │ .dni-treeview {
> │     white-space: nowrap;
> │ }
> │ .dni-treeview td {
> │     vertical-align: top;
> │     text-align: start;
> │ }
> │ details.dni-treeview {
> │     padding-left: 1em;
> │ }
> │ table td {
> │     text-align: start;
> │ }
> │ table tr { 
> │     vertical-align: top; 
> │     margin: 0em 0px;
> │ }
> │ table tr td pre 
> │ { 
> │     vertical-align: top !important; 
> │     margin: 0em 0px !important;
> │ } 
> │ table th {
> │     text-align: start;
> │ }
> │ </style>
00:01:07 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 288115 }
00:01:07 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:01:08 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib.ipynb to html
00:01:08 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:01:08 v #7 !   validate(nb)
00:01:08 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:01:08 v #9 !   return _pygments_highlight(
00:01:09 v #10 ! [NbConvertApp] Writing 710478 bytes to /home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib.html
00:01:09 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 906 }
00:01:09 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 906 }
00:01:09 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:01:10 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:01:10 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:01:10 d #16 spiral.run / dib / { exit_code = 0; result_length = 289080 }
00:00:00 d #1 writeDibCode / output: Fs / path: Supervisor.dib
00:00:00 d #2 parseDibCode / output: Fs / file: Supervisor.dib
00:00:00 d #1 persistCodeProject / packages: [Argu; FSharp.Control.AsyncSeq; FSharp.Json; ... ] / modules: [lib/spiral/common.fsx; lib/spiral/sm.fsx; lib/spiral/crypto.fsx; ... ] / name: Supervisor / hash:  / code.Length: 32767
00:00:00 d #2 buildProject / fullPath: /home/runner/work/polyglot/polyglot/target/Builder/Supervisor/Supervisor.fsproj
00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  "publish "/home/runner/work/polyglot/polyglot/target/Builder/Supervisor/Supervisor.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/apps/spiral/dist" --runtime linux-x64"; options = { command = dotnet publish "/home/runner/work/polyglot/polyglot/target/Builder/Supervisor/Supervisor.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/apps/spiral/dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot/target/Builder/Supervisor" } }
00:00:00 v #2 >   Determining projects to restore...
00:00:01 v #3 >   Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
00:00:01 v #4 >   The last full restore is still up to date. Nothing left to do.
00:00:01 v #5 >   Total time taken: 0 milliseconds
00:00:01 v #6 >   Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
00:00:01 v #7 >   Restoring /home/runner/work/polyglot/polyglot/target/Builder/Supervisor/Supervisor.fsproj
00:00:01 v #8 >   Starting restore process.
00:00:01 v #9 >   Total time taken: 0 milliseconds
00:00:02 v #10 >   Restored /home/runner/work/polyglot/polyglot/target/Builder/Supervisor/Supervisor.fsproj (in 303 ms).
00:00:12 v #11 >   Supervisor -> /home/runner/work/polyglot/polyglot/target/Builder/Supervisor/bin/Release/net9.0/linux-x64/Supervisor.dll
00:00:13 v #12 >   Supervisor -> /home/runner/work/polyglot/polyglot/apps/spiral/dist
00:00:13 d #13 runtime.execute_with_options_async / { exit_code = 0; output_length = 713 }
00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "Eval.dib", "--retries", "3"])) }
00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/apps/spiral/Eval.dib", "--output-path", "/home/runner/work/polyglot/polyglot/apps/spiral/Eval.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/spiral/Eval.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/spiral/Eval.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ # Eval (Polyglot)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> #r 
> @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan
> dard2.1/FSharp.Control.AsyncSeq.dll"
> #r 
> @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6.
> 0/System.Reactive.dll"
> #r 
> @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/
> netstandard2.0/System.Reactive.Linq.dll"
> #r 
> @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll"
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.com
> mon/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Common.dll"
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.cli
> ent/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Client.dll"
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.common/7.0.0
> /lib/net7.0/Microsoft.AspNetCore.SignalR.Common.dll"
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client/7.0.0
> /lib/net7.0/Microsoft.AspNetCore.SignalR.Client.dll"
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client.core/
> 7.0.0/lib/net7.0/Microsoft.AspNetCore.SignalR.Client.Core.dll"
> #r 
> @"../../../../../../../.nuget/packages/fsharp.json/0.4.1/lib/netstandard2.0/FSha
> rp.Json.dll"
> #r 
> @"../../../../../../../.nuget/packages/system.management/7.0.0/lib/netstandard2.
> 0/System.Management.dll"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> #if !INTERACTIVE
> open Lib
> #endif
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> open Common
> open SpiralFileSystem.Operators
> open Microsoft.AspNetCore.SignalR.Client
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> open System
> open System.Collections.Generic
> open System.IO
> open System.Text
> open System.Threading
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## mapErrors
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline mapErrors (severity, errors, lastTopLevelIndex) allCode =
>     let allCodeLineLength =
>         allCode |> SpiralSm.split "\n" |> Array.length
> 
>     errors
>     |> List.map (fun (_, error) ->
>         match error with
>         | Supervisor.FatalError message ->
>             (
>                 severity, message, 0, ("", (0, 0), (0, 0))
>             )
>             |> List.singleton
>         | Supervisor.TracedError data ->
>             data.trace
>             |> List.truncate 5
>             |> List.append [[ data.message ]]
>             |> List.map (fun message ->
>                 (
>                     severity, message, 0, ("", (0, 0), (0, 0))
>                 )
>             )
>         | Supervisor.PackageErrors data
>         | Supervisor.TokenizerErrors data
>         | Supervisor.ParserErrors data
>         | Supervisor.TypeErrors data ->
>             data.errors
>             |> List.filter (fun ((rangeStart, _), _) ->
>                 trace Debug (fun () -> $"Eval.mapErrors / rangeStart.line: 
> {rangeStart.line} / lastTopLevelIndex: {lastTopLevelIndex} / allCodeLineLength: 
> {allCodeLineLength} / filtered: {rangeStart.line > allCodeLineLength}") _locals
>                 rangeStart.line > allCodeLineLength
>             )
>             |> List.map (fun ((rangeStart, rangeEnd), message) ->
>                 (
>                     severity,
>                     message,
>                     0,
>                     (
>                         (data.uri |> System.IO.Path.GetFileName),
>                         (
>                             (match lastTopLevelIndex with
>                             | Some i when rangeStart.line >= i + 
> allCodeLineLength + 3 ->
>                                 rangeStart.line - allCodeLineLength - 2
>                             | _ -> rangeStart.line - allCodeLineLength),
>                             (match lastTopLevelIndex with
>                             | Some i when rangeStart.line >= i + 
> allCodeLineLength + 3 ->
>                                 rangeStart.character - 4
>                             | _ -> rangeStart.character)
>                         ),
>                         (
>                             (match lastTopLevelIndex with
>                             | Some i when rangeStart.line >= i + 
> allCodeLineLength + 3 ->
>                                 rangeEnd.line - allCodeLineLength - 2
>                             | _ -> rangeEnd.line - allCodeLineLength),
>                             (match lastTopLevelIndex with
>                             | Some i when rangeStart.line >= i + 
> allCodeLineLength + 3 ->
>                                 rangeEnd.character - 4
>                             | _ -> rangeEnd.character)
>                         )
>                     )
>                 )
>             )
>     )
>     |> List.collect id
>     |> List.toArray
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### workspaceRoot
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let workspaceRoot = SpiralFileSystem.get_workspace_root ()
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### targetDir
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let targetDir = workspaceRoot </> "target/spiral_Eval"
> [[ targetDir ]]
> |> List.iter (fun dir -> if Directory.Exists dir |> not then 
> Directory.CreateDirectory dir |> ignore)
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### assemblyName
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let assemblyName = Reflection.Assembly.GetEntryAssembly().GetName().Name
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## allCode
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let mutable allCode = ""
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ### allPackages
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let mutable allPackages : string [[]] = [[||]]
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## allCodeReal
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let mutable allCodeReal = ""
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## traceToggle
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let mutable traceToggle = false
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## getParentProcessId
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let getParentProcessId () =
>     if SpiralPlatform.is_windows () |> not
>     then 0u
>     else
>         let pid = System.Diagnostics.Process.GetCurrentProcess().Id
>         let query = $"SELECT ParentProcessId FROM Win32_Process WHERE ProcessId 
> = {pid}"
>         use searcher = new System.Management.ManagementObjectSearcher (query)
>         use results = searcher.Get ()
>         let data = results |> Seq.cast<System.Management.ManagementObject>
>         if data |> Seq.isEmpty
>         then 0u
>         else data |> Seq.head |> (fun mo -> mo.[["ParentProcessId"]] :?> uint32)
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## startTokenRangeWatcher
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline startTokenRangeWatcher () =
>     if [[ "dotnet-repl" ]] |> List.contains assemblyName
>     then new_disposable (fun () -> ())
>     else
>         let tokensDir = targetDir </> "tokens"
> 
>         [[ tokensDir ]]
>         |> List.iter (fun dir -> if Directory.Exists dir |> not then 
> Directory.CreateDirectory dir |> ignore)
> 
>         let stream, disposable = FileSystem.watchDirectory (fun _ -> false) 
> tokensDir
> 
>         try
>             let existingFilesChild =
>                 tokensDir
>                 |> System.IO.Directory.GetDirectories
>                 |> Array.map (fun codeDir -> async {
>                     try
>                         let tokensPath = codeDir </> "tokens.json"
>                         if tokensPath |> File.Exists |> not then
>                             let spiralCodePath = codeDir </> "main.spi"
>                             let spiralRealCodePath = codeDir </> 
> "main_real.spir"
>                             let spiralExists = spiralCodePath |> 
> System.IO.File.Exists
>                             let spiralRealExists = spiralRealCodePath |> 
> System.IO.File.Exists
>                             if spiralExists |> not && spiralRealExists |> not
>                             then do! codeDir |> 
> SpiralFileSystem.delete_directory_async |> Async.Ignore
>                             else
>                                 let! tokens =
>                                     if spiralExists then spiralCodePath else 
> spiralRealCodePath
>                                     |> Supervisor.getFileTokenRange None None
>                                 match tokens with
>                                 | Some tokens ->
>                                     do!
>                                         tokens
>                                         |> FSharp.Json.Json.serialize
>                                         |> SpiralFileSystem.write_all_text_async
> tokensPath
>                                 | None ->
>                                     trace Verbose (fun () -> 
> $"Eval.startTokenRangeWatcher / GetDirectories / tokens: None") _locals
>                     with ex ->
>                         trace Critical (fun () -> $"Eval.startTokenRangeWatcher 
> / GetDirectories / ex: {ex |> SpiralSm.format_exception}") _locals
>                 })
>                 |> Async.Parallel
>                 |> Async.Ignore
> 
>             let streamAsyncChild =
>                 stream
>                 |> FSharp.Control.AsyncSeq.iterAsyncParallel (fun (ticks, event)
> ->
>                     match event with
>                     | FileSystem.FileSystemChange.Changed (codePath, _)
>                         when [[ "main.spi"; "main_real.spir" ]]
>                             |> List.contains (System.IO.Path.GetFileName 
> codePath)
>                         ->
>                         async {
>                             let hashDir = codePath |> 
> System.IO.Directory.GetParent
>                             let hashHex = hashDir.Name
>                             let codePath = tokensDir </> codePath
>                             let tokensPath = tokensDir </> hashHex </> 
> "tokens.json"
>                             // do! Async.Sleep 30
>                             let rec loop retry = async {
>                                 let! tokens = codePath |> 
> Supervisor.getFileTokenRange None None
>                                 if retry = 3 || tokens <> Some [[||]]
>                                 then return tokens, retry
>                                 else
>                                     trace Debug
>                                         (fun () -> $"Eval.startTokenRangeWatcher
> / iterAsyncParallel")
>                                         (fun () -> $"retry: {retry} / tokens: 
> %A{tokens}")
>                                     do! Async.Sleep 30
>                                     return! loop (retry + 1)
>                             }
>                             let! tokens, retries = loop 1
>                             match tokens with
>                             | Some tokens ->
>                                 do!
>                                     tokens
>                                     |> FSharp.Json.Json.serialize
>                                     |> SpiralFileSystem.write_all_text_exists 
> tokensPath
>                             | None ->
>                                 trace Debug
>                                     (fun () -> $"Eval.startTokenRangeWatcher / 
> iterAsyncParallel")
>                                     (fun () -> $"retries: {retries} / tokens: 
> {tokens}")
>                         }
>                         |> Async.retryAsync 3
>                         |> Async.map (Result.toOption >> Option.defaultValue ())
>                     | _ -> () |> Async.init
>                 )
> 
>             let parentAsyncChild = async {
>                 let parentProcessId = getParentProcessId ()
>                 trace Verbose
>                     (fun () -> "Eval.parentAsyncChild")
>                     (fun () -> $"parentProcessId: {parentProcessId} / {_locals 
> ()}")
> 
>                 if parentProcessId > 0u then
>                     let parentProcess = parentProcessId |> int |> 
> System.Diagnostics.Process.GetProcessById
>                     do! parentProcess.WaitForExitAsync () |> Async.AwaitTask
>                     trace Debug
>                         (fun () -> "Eval.parentAsyncChild / Parent process has 
> exited. Performing cleanup...")
>                         (fun () -> $"{_locals ()}")
>                     System.Threading.Thread.Sleep 1000
>                     System.Environment.Exit 1
>             }
> 
>             async {
>                 do! Async.Sleep 3000
>                 existingFilesChild |> Async.StartImmediate
>                 streamAsyncChild |> Async.Start
>                 parentAsyncChild |> Async.Start
>             }
>             |> Async.Start
>         with ex ->
>             trace Critical (fun () -> $"Eval.startTokenRangeWatcher / ex: {ex |>
> SpiralSm.format_exception}") _locals
> 
>         disposable
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## startCommandsWatcher
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let startCommandsWatcher (uriServer : string) =
>     let commandsDir = targetDir </> "eval_commands"
>     let commandHistoryDir = targetDir </> "eval_command_history"
>     [[ commandsDir; commandHistoryDir ]]
>     |> List.iter (fun dir -> if Directory.Exists dir |> not then 
> Directory.CreateDirectory dir |> ignore)
> 
>     Directory.EnumerateFiles commandsDir |> Seq.iter File.Delete
> 
>     let stream, disposable =
>         commandsDir
>         |> FileSystem.watchDirectory (function
>             | FileSystem.FileSystemChange.Created _ -> true
>             | _ -> false
>         )
> 
>     let connection = HubConnectionBuilder().WithUrl(uriServer).Build()
>     connection.StartAsync() |> Async.AwaitTask |> Async.Start
>     // let _ = connection.On<string>("ServerToClientMsg", fun x ->
>     //     printfn $"ServerToClientMsg: '{x}'"
>     // )
> 
>     stream
>     |> FSharp.Control.AsyncSeq.iterAsyncParallel (fun (ticks, event) -> async {
>         let _locals () = $"ticks: {ticks} / event: {event} / {_locals ()}"
>         trace Verbose (fun () -> "Eval.startCommandsWatcher / 
> iterAsyncParallel") _locals
> 
>         match event with
>         | FileSystem.FileSystemChange.Created (path, Some json) ->
>             try
>                 let fullPath = commandsDir </> path
>                 let! result = 
> connection.InvokeAsync<string>("ClientToServerMsg", json) |> Async.AwaitTask
>                 let commandHistoryPath = commandHistoryDir </> path
>                 do! fullPath |> SpiralFileSystem.move_file_async 
> commandHistoryPath |> Async.Ignore
>                 if result |> SpiralSm.trim |> String.length > 0 then
>                     let resultPath = commandHistoryDir </> 
> $"{Path.GetFileNameWithoutExtension path}_result.json"
>                     do! result |> SpiralFileSystem.write_all_text_async 
> resultPath
>             with ex ->
>                 let _locals () = $"ex: {ex |> SpiralSm.format_exception} / 
> {_locals ()}"
>                 trace Critical (fun () -> "Eval.startCommandsWatcher / 
> iterAsyncParallel") _locals
>         | _ -> ()
>     })
>     |> Async.StartChild
>     |> Async.Ignore
>     |> Async.Start
> 
>     new_disposable (fun () ->
>         disposable.Dispose ()
>     )
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## prepareSpiral
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let prepareSpiral rawCellCode lines =
>     let lastBlock =
>         lines
>         |> Array.tryFindBack (fun line ->
>             line |> String.length > 0
>             && line.[[0]] <> ' '
>         )
> 
>     let hasMain =
>         lastBlock
>         |> Option.exists (fun line ->
>             line |> SpiralSm.starts_with "inl main "
>             || line |> SpiralSm.starts_with "let main "
>         )
> 
>     if hasMain
>     then rawCellCode, None
>     else
>         let lastTopLevelIndex, _ =
>             (lines |> Array.indexed, (None, false))
>             ||> Array.foldBack (fun (i, line) (lastTopLevelIndex, finished) ->
>                 // trace Verbose (fun () -> $"Eval.prepareSpiral / i: {i} / 
> line: '{line}' / lastTopLevelIndex: {lastTopLevelIndex} / finished: {finished}")
> _locals
>                 match line with
>                 | _ when finished -> lastTopLevelIndex, true
>                 | "" -> lastTopLevelIndex, false
>                 | line when
>                     line |> SpiralSm.starts_with " "
>                     || line |> SpiralSm.starts_with "// " -> lastTopLevelIndex, 
> false
>                 | line when
>                     line |> SpiralSm.starts_with "open "
>                     || line |> SpiralSm.starts_with "prototype "
>                     || line |> SpiralSm.starts_with "instance "
>                     || line |> SpiralSm.starts_with "type "
>                     || line |> SpiralSm.starts_with "union "
>                     || line |> SpiralSm.starts_with "nominal " -> 
> lastTopLevelIndex, true
>                 | line when
>                     line |> SpiralSm.starts_with "inl "
>                     || line |> SpiralSm.starts_with "and "
>                     || line |> SpiralSm.starts_with "let " ->
>                     let m =
>                         System.Text.RegularExpressions.Regex.Match (
>                             line,
>                             @"^(?:and +)?(inl|let) +((?:[[{( 
> ]]*)?[[~\(\w]]+[[\w\d']]*(?:|[[\w\d']]+[[ }]]*(?:&? *[[\w\d']]*\))?| 
> *[[~\w]][[\w\d']]*\)|, *[[~\w]][[\w\d']]*)) +[[:=]](?! +function)"
>                         )
>                     trace Verbose (fun () -> $"Eval.prepareSpi / m: '{m}' / 
> m.Groups.Count: {m.Groups.Count}") _locals
>                     if m.Groups.Count = 3
>                     then Some i, false
>                     else lastTopLevelIndex, true
>                 | _ -> Some i, false
>             )
>         let code =
>             match lastTopLevelIndex with
>             | Some lastTopLevelIndex ->
>                 lines
>                 |> Array.mapi (fun i line ->
>                     match i with
>                     | i when i < lastTopLevelIndex -> line
>                     | i when i = lastTopLevelIndex -> $"\nlet main () =\n    
> {line}"
>                     | _ when line |> SpiralSm.trim = "" -> ""
>                     | _ -> $"    {line}"
>                 )
>                 |> SpiralSm.concat "\n"
>             | None -> $"{rawCellCode}\n\ninl main () = ()\n"
>         code, lastTopLevelIndex
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## processSpiralOutput
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let processSpiralOutput
>     (props : {|
>         printCode: bool
>         traceLevel: TraceLevel
>         builderCommands: string array
>         lastTopLevelIndex: int option
>         backend: Supervisor.Backend
>         cancellationToken: _
>         spiralErrors: _
>         code: string
>         outputPath: string
>         isReal: bool
>     |})
>     = async {
>     let inline _trace (fn : unit -> string) =
>         if props.traceLevel = Verbose
>         then trace Info (fun () -> $"Eval.processSpiralOutput / props: {props |>
> FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400} / {fn ()}") _locals
>         else fn () |> System.Console.WriteLine
> 
>     if props.printCode && props.backend <> Supervisor.Cuda then
>         let ext = props.outputPath |> System.IO.Path.GetExtension
>         _trace (fun () -> if props.builderCommands.Length > 0 then 
> $"{ext}:\n{props.code}\n" else props.code)
> 
>     let workspaceRootExternal =
>         let currentDir = System.IO.Directory.GetCurrentDirectory () |> 
> SpiralSm.to_lower
>         let workspaceRoot = workspaceRoot |> SpiralSm.to_lower
>         if currentDir |> SpiralSm.starts_with workspaceRoot
>         then None
>         else Some workspaceRoot
> 
>     let! spiralBuilderResults =
>         match props.builderCommands, props.lastTopLevelIndex with
>         | [[||]], _ | _, None -> [[||]] |> Async.init
>         | builderCommands, _ ->
>             builderCommands
>             |> Array.map (fun builderCommand ->
>                 let path =
>                     workspaceRoot </> 
> $@"deps/spiral/workspace/target/release/spiral{SpiralPlatform.get_executable_suf
> fix ()}"
>                     |> System.IO.Path.GetFullPath
>                 let commands =
>                     if props.backend = Supervisor.Fsharp
>                         && (
>                             builderCommand |> SpiralSm.starts_with "rust"
>                             || builderCommand |> SpiralSm.starts_with 
> "typescript"
>                             || builderCommand |> SpiralSm.starts_with "python"
>                         )
>                     then [[| $"{path} fable --fs-path \"{props.outputPath}\" 
> --command \"{builderCommand}\"" |]]
>                     elif props.backend = Supervisor.Cuda
>                         && builderCommand |> SpiralSm.starts_with "cuda"
>                     then [[| $"{path} {builderCommand} --py-path 
> \"{props.outputPath}\"" |]]
>                     else [[||]]
>                 builderCommand, commands
>             )
>             |> Array.filter (fun (_, commands) -> commands.Length > 0)
>             |> Array.collect (fun (builderCommand, commands) ->
>                 commands
>                 |> Array.map (fun command -> async {
>                     let! exitCode, result =
>                         SpiralRuntime.execution_options (fun x ->
>                             { x with
>                                 l0 = command
>                                 l1 = props.cancellationToken
>                                 l2 = [[|
>                                     "AUTOMATION", assemblyName = "dotnet-repl" 
> |> string
>                                     "TRACE_LEVEL", $"%A{if props.printCode then 
> props.traceLevel else Info}"
>                                 |]]
>                                 l6 = workspaceRootExternal
>                             }
>                         )
>                         |> SpiralRuntime.execute_with_options_async
>                     trace Debug
>                         (fun () -> $"Eval.processSpiralOutput / spiral cli")
>                         (fun () -> $"exitCode: {exitCode} / builderCommand: 
> {builderCommand} / command: {command} / result: {result |> SpiralSm.ellipsis_end
> 400} / {_locals ()}")
>                     return
>                         if exitCode = 0
>                         then {| code = result; eval = false; builderCommand = 
> builderCommand |} |> Ok
>                         else result |> Error
>                 })
>             )
>             |> Async.Parallel
> 
>     let hasEval =
>         props.backend = Supervisor.Fsharp
>         && props.builderCommands |> Array.exists (fun x -> x |> 
> SpiralSm.starts_with "fsharp")
> 
>     let outputResult =
>         if props.builderCommands.Length > 0 && not hasEval
>         then None
>         else
>             let code =
>                 if props.builderCommands.Length > 1
>                 then
>                     let header = "System.Console.WriteLine \".fsx output:\"\n"
>                     $"{header}{props.code}"
>                 else props.code
>             Some (Ok [[ {| code = code; eval = true; builderCommand = "" |} ]])
> 
>     match outputResult, spiralBuilderResults with
>     | Some outputResult, [[||]] ->
>         return outputResult, [[||]]
>     | None, [[||]] ->
>         return Ok [[ {| code = "()"; eval = true; builderCommand = "" |} ]], 
> [[||]]
>     | _, spiralBuilderResults ->
>         try
>             let spiralResults =
>                 match outputResult with
>                 | Some (Ok code) ->
>                     spiralBuilderResults
>                     |> Array.append (code |> List.map Ok |> List.toArray)
>                 | _ -> spiralBuilderResults
>             let codes =
>                 spiralResults
>                 |> Array.map (fun spiralBuilderResult' ->
>                     let commandResult, errors =
>                         match spiralBuilderResult' with
>                         | Ok result when result.eval = false ->
>                             let result' =
>                                 result.code
>                                 |> 
> FSharp.Json.Json.deserialize<Map<string,string>>
>                             let result =
>                                 match result' |> Map.tryFind "command_result" 
> with
>                                 | Some result'' ->
>                                     result''
>                                     |> 
> FSharp.Json.Json.deserialize<Map<string,string>>
>                                     |> Map.add "builderCommand" 
> result.builderCommand
>                                 | None -> Map.empty
>                             result, [[||]]
>                         | Ok result when result.eval = true ->
>                             let result =
>                                 [[
>                                     "extension", "fsx"
>                                     "code", result.code
>                                     "output", ""
>                                 ]]
>                                 |> Map.ofList
>                             result, [[||]]
>                         | Error error ->
>                             Map.empty,
>                             [[|
>                                 (
>                                     TraceLevel.Critical, 
> $"Eval.processSpiralOutput / evalResult error / errors[[0]] / outputPath: 
> {props.outputPath} / builderCommands: %A{props.builderCommands} / 
> spiralBuilderResult': %A{spiralBuilderResult'} / error: %A{error}", 0, ("", (0, 
> 0), (0, 0))
>                                 )
>                             |]]
>                         | _ ->
>                             Map.empty, [[||]]
> 
>                     if errors |> Array.isEmpty |> not
>                     then Error (Exception $"Eval.processSpiralOutput / 
> evalResult errors / Exception / commandResult: %A{commandResult}"), errors
>                     else
>                         let extension = commandResult.[["extension"]]
>                         let code = commandResult.[["code"]]
>                         let output = commandResult.[["output"]]
>                         let builderCommand =
>                             commandResult
>                             |> Map.tryFind "builderCommand"
>                             |> Option.defaultValue ""
> 
>                         let backendInfo =
>                             match props.backend, builderCommand with
>                             | Supervisor.Fsharp, builderCommand
>                                 when builderCommand |> SpiralSm.contains " " -> 
> $" ({builderCommand})"
>                             | Supervisor.Fsharp, _ -> ""
>                             | _ -> $" ({props.backend})"
> 
>                         let eval = output = "" && extension = "fsx"
> 
>                         if props.printCode && not eval
>                         then _trace (fun () -> 
> $""".{extension}{backendInfo}:{'\n'}{code}""")
> 
>                         trace Debug
>                             (fun () -> $"Eval.processSpiralOutput / result")
>                             (fun () -> $"builderCommand: {builderCommand} / 
> extension: {extension} / commandResult: {commandResult |> 
> FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400}/ {_locals ()}")
> 
>                         let code =
>                             if props.printCode
>                                 || spiralResults.Length > 1
>                                 || props.builderCommands.Length > 1
>                             then
>                                 if eval
>                                 then code
>                                 else
>                                     let header = $".{extension} 
> output{backendInfo}:\n"
>                                     $"""{if output |> SpiralSm.contains "\n" 
> then "\n" else ""}{header}{output}"""
>                             elif eval
>                             then code
>                             else output
>                         Ok {| code = code; eval = eval; builderCommand = 
> builderCommand |}, [[||]]
>                 )
>             trace Debug
>                 (fun () -> $"Eval.processSpiralOutput / codes")
>                 (fun () ->
>                     let props = {| props with cancellationToken = None |}
>                     $"codes: {codes |> FSharp.Json.Json.serialize |> 
> SpiralSm.ellipsis_end 400} / spiralResults: {spiralResults |> 
> FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400} / spiralBuilderResults:
> {spiralBuilderResults |> FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 
> 400} / props: {props |> FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400}
> / {_locals ()}")
>             return
>                 (((Ok [[]]), [[||]]), codes)
>                 ||> Array.fold (fun (acc_code, acc_errors) (code, errors) ->
>                     match code, acc_code with
>                     | Ok code, Ok acc_code ->
>                         let errors =
>                             acc_errors
>                             |> Array.append errors
>                             |> Array.append props.spiralErrors
>                         let errors =
>                             if errors |> Array.isEmpty
>                             then errors
>                             else
>                                 let code = $"%A{code}"
>                                 errors
>                                 |> Array.append [[|
>                                     TraceLevel.Critical, 
> $"Eval.processSpiralOutput / errors / errors[[-1]] / outputPath: 
> {props.outputPath} / builderCommands: %A{props.builderCommands} / code: {code |>
> SpiralSm.ellipsis_end 400}", 0, ("", (0, 0), (0, 0))
>                                 |]]
>                         Ok (code :: acc_code), errors
>                     | Error ex, _
>                     | _, Error ex ->
>                         Error (Exception $"Eval.processSpiralOutput / -1 / 
> Exception / spiralBuilderResults: %A{spiralBuilderResults} / ex: {ex |> 
> SpiralSm.format_exception}"),
>                         acc_errors |> Array.append errors
>                 )
>         with ex ->
>             trace Critical (fun () -> $"Eval.processSpiralOutput / try 2 ex / 
> spiralBuilderResults: %A{spiralBuilderResults} / ex: {ex |> 
> SpiralSm.format_exception}") _locals
>             return
>                 Error (Exception $"Eval.processSpiralOutput / try 2 ex / 
> Exception / spiralBuilderResults: %A{spiralBuilderResults} / ex: {ex |> 
> SpiralSm.format_exception}"),
>                 [[|
>                     (
>                         TraceLevel.Critical, $"Eval.processSpiralOutput / try 2 
> ex / errors[[0]] / spiralBuilderResults: %A{spiralBuilderResults} / ex: {ex |> 
> SpiralSm.format_exception}", 0, ("", (0, 0), (0, 0))
>                     )
>                 |]]
> }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## tryGetPropertyValue
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let tryGetPropertyValue (propertyName: string) (obj: obj) =
>     let objType = obj.GetType ()
>     let propertyInfo = propertyName |> objType.GetProperty
>     if propertyInfo <> null
>     then propertyInfo.GetValue (obj, null) |> Some
>     else None
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## evalAsync
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let rec evalAsync
>     retry
>     (props : {|
>         rawCellCode: _
>         lines: _
>         isReal: _
>         builderCommands: _ array
>         isCache: _
>         timeout: _
>         cancellationToken: _
>         printCode: _
>         traceLevel: _
>         fsi_eval: _
>     |})
>     = async {
>     try
>         let cellCode, lastTopLevelIndex = prepareSpiral props.rawCellCode 
> props.lines
>         let newAllCode =
>             if props.isReal
>             then $"{allCodeReal}\n\n{cellCode}"
>             else $"{allCode}\n\n{cellCode}"
> 
>         let buildBackends =
>             if props.builderCommands.Length = 0
>             then [[| Supervisor.Fsharp |]]
>             else
>                 props.builderCommands
>                 |> Array.map (fun x ->
>                     if x |> SpiralSm.starts_with "cuda"
>                     then Supervisor.Cuda
>                     else Supervisor.Fsharp
>                 )
>                 |> Array.distinct
> 
>         trace Verbose
>             (fun () -> $"Eval.eval")
>             (fun () -> $"lastTopLevelIndex: {lastTopLevelIndex} / 
> builderCommands: %A{props.builderCommands} / buildBackends: %A{buildBackends} / 
> isReal: {props.isReal} / {_locals ()}")
> 
>         let! buildCodeResults =
>             buildBackends
>             |> Array.map (fun backend -> async {
>                 let! result =
>                     if props.isReal
>                     then Supervisor.Spir newAllCode
>                     else
>                         Supervisor.Spi
>                             (newAllCode, if allCodeReal = "" then None else Some
> allCodeReal)
>                     |> Supervisor.buildCode backend allPackages props.isCache 
> props.timeout props.cancellationToken
>                 return backend, result
>             })
>             |> Async.Parallel
>             |> Async.catch
>             |> Async.runWithTimeoutAsync props.timeout
> 
>         match buildCodeResults with
>         | Some (Ok buildCodeResults) ->
>             let! result, errors =
>                 ((Ok [[]], [[||]]), buildCodeResults)
>                 ||> Async.fold (fun acc buildCodeResult -> async {
>                     match buildCodeResult with
>                     | backend, (_, (outputPath, Some code), spiralErrors) ->
>                         let spiralErrors =
>                             allCode |> mapErrors (Warning, spiralErrors, 
> lastTopLevelIndex)
>                         let! result =
>                             processSpiralOutput
>                                 {|
>                                     printCode = props.printCode
>                                     traceLevel = props.traceLevel
>                                     builderCommands = props.builderCommands
>                                     lastTopLevelIndex = lastTopLevelIndex
>                                     backend = backend
>                                     cancellationToken = props.cancellationToken
>                                     spiralErrors = spiralErrors
>                                     code = code
>                                     outputPath = outputPath
>                                     isReal = props.isReal
>                                 |}
>                         match result, acc with
>                         | (Ok code, errors), (Ok acc_code, acc_errors) ->
>                             return Ok (acc_code @ code), acc_errors |> 
> Array.append errors
>                         | (Error ex, errors), _ | _, (Error ex, errors) ->
>                             return
>                                 Error (Exception $"Eval.evalAsync / 
> processSpiralOutput / Exception / buildCodeResult: %A{buildCodeResult |> 
> FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400} / ex: {ex |> 
> SpiralSm.format_exception}"),
>                                 errors |> Array.append errors
>                     | _, (_, _, errors) when errors |> List.isEmpty |> not ->
>                         return errors.[[0]] |> fst |> Exception |> Error,
>                         allCode |> mapErrors (TraceLevel.Critical, errors, 
> lastTopLevelIndex)
>                     | _ -> return acc
>                 })
>             let cancellationToken = defaultArg props.cancellationToken 
> System.Threading.CancellationToken.None
>             match result, errors with
>             | Ok code, [[||]] ->
>                 let code, eval =
>                     code
>                     |> List.map (fun code ->
>                         if code.eval
>                         then None, Some code.code
>                         else Some code.code, None
>                     )
>                     |> List.unzip
>                 let code = code |> List.choose id
>                 let eval = eval |> List.choose id
> 
>                 trace Debug
>                     (fun () -> $"Eval.eval")
>                     (fun () -> $"eval: {eval |> FSharp.Json.Json.serialize |> 
> SpiralSm.ellipsis_end 400} / code: {code |> FSharp.Json.Json.serialize |> 
> SpiralSm.ellipsis_end 400} / {_locals ()}")
> 
>                 let ch, errors =
>                     match eval, code with
>                     | [[]], [[]] ->
>                         Choice2Of2 (Exception $"Eval.evalAsync / eval=[[]] / 
> code=[[]] / buildCodeResults: %A{buildCodeResults} / code: %A{code}"), errors
>                     | [[ eval ]], [[]] ->
>                         let ch, errors2 = props.fsi_eval eval cancellationToken
>                         let errors =
>                             errors2
>                             // |> Array.map (fun (e1, e2, e3, _) ->
>                             //     (e1, e2, e3, ("", (0, 0), (0, 0)))
>                             // )
>                             |> Array.append errors
>                         ch, errors
>                     | [[]], _ ->
>                         let code = code |> List.rev |> String.concat "\n\n"
>                         let code =
>                             if props.printCode
>                             then $"\"\"\"{code}\n\n\"\"\""
>                             else $"\"\"\"{code}\n\"\"\""
>                         let ch, errors2 = props.fsi_eval code cancellationToken
>                         let errors =
>                             errors2
>                             // |> Array.map (fun (e1, e2, e3, _) ->
>                             //     (e1, e2, e3, ("", (0, 0), (0, 0)))
>                             // )
>                             |> Array.append errors
>                         ch, errors
>                     | _ ->
>                         let code, errors =
>                             ((Ok (code |> List.rev), [[||]]), eval)
>                             ||> List.fold (fun (acc, acc_errors) eval ->
>                                 match acc with
>                                 | Error ch -> Error ch, acc_errors
>                                 | Ok acc ->
>                                     let ch, errors = props.fsi_eval eval 
> cancellationToken
>                                     let errors =
>                                         errors
>                                         // |> Array.map (fun (e1, e2, e3, _) ->
>                                         //     (e1, e2, e3, ("", (0, 0), (0, 
> 0)))
>                                         // )
>                                         |> Array.append acc_errors
>                                     match ch with
>                                     | Choice1Of2 v ->
>                                         let v =
>                                             v
>                                             |> tryGetPropertyValue 
> "ReflectionValue"
>                                             |> Option.map (fun x -> $"%A{x}")
>                                             |> Option.defaultValue ""
>                                         Ok (v :: acc), errors
>                                     | Choice2Of2 ex ->
>                                         trace Critical (fun () -> 
> $"Eval.evalAsync / fsi_eval fold Choice error / buildCodeResults: 
> %A{buildCodeResults} / ex: {ex |> SpiralSm.format_exception}") _locals
>                                         Error ch, errors
>                             )
>                         match code with
>                         | Error ch -> ch, errors
>                         | Ok code ->
>                             let code =
>                                 code
>                                 |> List.filter ((<>) "")
>                                 |> String.concat "\n\n"
> 
>                             let code =
>                                 if props.builderCommands.Length > 0 && 
> eval.Length = 0
>                                 then code
>                                 elif code |> SpiralSm.contains "\n\n\n"
>                                 then $"{code}\n\n"
>                                 else $"{code}\n"
> 
>                             let code =
>                                 if props.printCode
>                                 then $"\"\"\"{code}\n\n\n\"\"\""
>                                 else $"\"\"\"{code}\n\"\"\""
>                             let ch, errors2 = props.fsi_eval code 
> cancellationToken
>                             let errors =
>                                 errors2
>                                 // |> Array.map (fun (e1, e2, e3, _) ->
>                                 //     (e1, e2, e3, ("", (0, 0), (0, 0)))
>                                 // )
>                                 |> Array.append errors
>                             ch, errors
>                 match ch with
>                 | Choice1Of2 v ->
>                     if props.isReal
>                     then allCodeReal <- newAllCode
>                     else allCode <- newAllCode
>                     return Ok(v), errors
>                 | Choice2Of2 ex ->
>                     return
>                         Error (Exception $"Eval.evalAsync / -2 / Exception / ex:
> {ex |> SpiralSm.format_exception} / buildCodeResults: {buildCodeResults |> 
> FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400}"),
>                         errors
>             | Ok code, errors ->
>                 return
>                     Error (Exception "Eval.evalAsync / errors / 
> buildCodeResults: %A{buildCodeResults} / code: %A{code}"),
>                     errors
>             | Error ex, errors ->
>                 let ex = ex |> SpiralSm.format_exception
>                 if retry <= 3 &&
>                     (ex |> SpiralSm.contains "Expected one of: inl, let, union, 
> nominal, prototype, type, instance, and, open")
>                     || (ex |> SpiralSm.contains "Unexpected end of block past 
> this token.")
>                 then return! evalAsync (retry + 1) props
>                 else
>                     return
>                         Error (Exception $"Eval.evalAsync / -1 / Exception / ex:
> {ex} / buildCodeResults: {buildCodeResults |> FSharp.Json.Json.serialize |> 
> SpiralSm.ellipsis_end 1500}"),
>                         errors
>         | Some (Error ex) ->
>             trace Critical (fun () -> $"Eval.evalAsync / buildCodeResults Error 
> / buildCodeResults: %A{buildCodeResults} / ex: {ex |> 
> SpiralSm.format_exception}") _locals
>             return
>                 Error (Exception $"Eval.evalAsync / buildCodeResults Error / 
> Exception / buildCodeResults: %A{buildCodeResults} / ex: {ex |> 
> SpiralSm.format_exception}"),
>                 [[|
>                     (
>                         TraceLevel.Critical, $"Eval.evalAsync / buildCodeResults
> Error / errors[[0]] / ex: {ex |> SpiralSm.format_exception} / buildCodeResults: 
> %A{buildCodeResults}", 0, ("", (0, 0), (0, 0))
>                     )
>                 |]]
>         | _ ->
>             return
>                 Error (Exception $"Eval.evalAsync / buildCodeResults / Exception
> / buildCodeResults: %A{buildCodeResults}"),
>                 [[|
>                     (
>                         TraceLevel.Critical, $"Eval.evalAsync / buildCodeResults
> / errors[[0]] / buildCodeResults: %A{buildCodeResults}", 0, ("", (0, 0), (0, 0))
>                     )
>                 |]]
>     with ex ->
>         trace Critical (fun () -> $"Eval.evalAsync / try 1 ex / ex: {ex |> 
> SpiralSm.format_exception} / lines: %A{props.lines}") _locals
>         return
>             Error (Exception $"Eval.evalAsync / try 1 ex / Exception / ex: {ex 
> |> SpiralSm.format_exception} / lines: %A{props.lines}"),
>             [[|
>                 (
>                     TraceLevel.Critical, $"Eval.evalAsync / try 1 ex / 
> errors[[0]] / ex: {ex |> SpiralSm.format_exception} / lines: %A{props.lines}", 
> 0, ("", (0, 0), (0, 0))
>                 )
>             |]]
> }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> │ ## eval
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline eval
>     (fsi_eval:
>         string
>         -> System.Threading.CancellationToken
>         -> Choice<'a, Exception> * (TraceLevel * string * int * (string * (int *
> int) * (int * int))) array)
>     (cancellationToken: Option<System.Threading.CancellationToken>)
>     (code: string)
>     =
>     trace Verbose
>         (fun () -> $"Eval.eval")
>         (fun () -> $"code: {code |> SpiralSm.ellipsis_end 400} / {_locals ()}")
> 
>     let rawCellCode =
>         code |> SpiralSm.replace "\r\n" "\n"
> 
>     let lines = rawCellCode |> SpiralSm.split "\n"
> 
>     if lines |> Array.exists (fun line -> line |> SpiralSm.starts_with "#r " && 
> line |> SpiralSm.ends_with "\"") then
>         let cancellationToken = defaultArg cancellationToken 
> System.Threading.CancellationToken.None
>         let ch, errors = fsi_eval code cancellationToken
>         trace Verbose (fun () -> $"Eval.eval / fsi_eval 1 / ch: %A{ch} / errors:
> %A{errors}") _locals
>         match ch with
>         | Choice1Of2 v -> Ok(v), errors
>         | Choice2Of2 ex -> Error(ex), errors
>     else
>         let builderCommands =
>             lines
>             |> Array.choose (fun line ->
>                 if line |> SpiralSm.starts_with "///! "
>                 then line |> SpiralSm.split "///! " |> Array.tryItem 1
>                 else None
>             )
> 
>         let packages =
>             lines
>             |> Array.choose (fun line ->
>                 if line |> SpiralSm.starts_with "//// package="
>                 then line |> SpiralSm.split "=" |> Array.skip 1 |> 
> SpiralSm.concat "" |> Some
>                 else None
>             )
> 
>         allPackages <- packages |> Array.append allPackages |> Array.distinct
> 
>         let timeout =
>             lines
>             |> Array.tryPick (fun line ->
>                 if line |> SpiralSm.starts_with "//// timeout="
>                 then line |> SpiralSm.split "=" |> Array.tryItem 1 |> Option.map
> int
>                 else None
>             )
>             |> Option.defaultValue (60000 * 60)
> 
>         let boolArg def command =
>             lines
>             |> Array.tryPick (fun line ->
>                 let text = $"//// {command}"
>                 match line.[[0..text.Length-1]], line.[[text.Length..]] with
>                 | head, "" when head = text ->
>                     Some true
>                 | head, _ when head = text ->
>                     line |> SpiralSm.split "=" |> Array.tryItem 1 |> Option.map 
> ((<>) "false")
>                 | _ -> None
>             )
>             |> Option.defaultValue def
> 
>         let printCode = "print_code" |> boolArg false
>         let isTraceToggle = "trace_toggle" |> boolArg false
>         let isTrace = "trace" |> boolArg false
>         let isCache = "cache" |> boolArg false
>         let isReal = "real" |> boolArg false
>         let timeout_continue = "timeout_continue" |> boolArg false
> 
>         if isTraceToggle
>         then traceToggle <- not traceToggle
> 
>         let oldLevel = get_trace_level ()
>         let traceLevel =
>             if isTrace || traceToggle
>             then Verbose
>             else Info
>         traceLevel
>         |> to_trace_level
>         |> set_trace_level
>         use _ = (new_disposable (fun () ->
>             oldLevel |> set_trace_level
>         ))
> 
>         evalAsync 1
>             {|
>                 rawCellCode = rawCellCode
>                 lines = lines
>                 isReal = isReal
>                 builderCommands = builderCommands
>                 isCache = isCache
>                 timeout = timeout
>                 cancellationToken = cancellationToken
>                 printCode = printCode
>                 traceLevel = traceLevel
>                 fsi_eval = fsi_eval
>             |}
>         |> Async.runWithTimeout timeout
>         |> (fun x ->
>             match x with
>             | Some ((Ok x), a) -> Some ((Ok x), a)
>             | Some ((Error x), a) ->
>                 trace Info (fun () -> $"Eval.eval / error / exception: 
> {x.GetType().FullName} / a: %A{a} / x: %A{x}") (fun () -> "")
>                 Some ((Error x), a)
>             | _ -> None
>         )
>         |> Option.defaultWith (fun () -> (
>             let lines = lines |> SpiralSm.concat (string '\n') |> 
> SpiralSm.ellipsis_end 1500
>             in
>             Error (Exception $"Eval.eval / Async.runWithTimeout / Exception / 
> timeout: {timeout} / timeout_continue: {timeout_continue} / lines: {lines}"),
>             [[|
>                 (
>                     TraceLevel.Critical, $"Eval.eval / Async.runWithTimeout / 
> errors[[0]] / timeout: {timeout} / lines: {lines}", 0, ("", (0, 0), (0, 0))
>                 )
>             |]]
>         ))
00:00:18 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 50071 }
00:00:18 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/apps/spiral/Eval.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/spiral/Eval.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:19 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/spiral/Eval.dib.ipynb to html
00:00:19 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:19 v #7 !   validate(nb)
00:00:19 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:19 v #9 !   return _pygments_highlight(
00:00:20 v #10 ! [NbConvertApp] Writing 459256 bytes to /home/runner/work/polyglot/polyglot/apps/spiral/Eval.dib.html
00:00:20 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 894 }
00:00:20 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 894 }
00:00:20 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/spiral/Eval.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/spiral/Eval.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:21 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:00:21 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:00:21 d #16 spiral.run / dib / { exit_code = 0; result_length = 51024 }
00:00:00 d #1 writeDibCode / output: Fs / path: Eval.dib
00:00:00 d #2 parseDibCode / output: Fs / file: Eval.dib
In [ ]:
{ pwsh ../lib/fsharp/build.ps1 -sequential 1 } | Invoke-Block
00:00:00 v #1 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"; options = { command = dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = Some <fun:compiler@87-4>; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:00:00 v #2 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #2 > 00:00:00 d #1 pwd: /home/runner/work/polyglot/polyglot
00:00:00 v #3 > 00:00:00 d #2 dllPath: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release
00:00:00 v #4 > 00:00:00 d #3 targetDir: /home/runner/work/polyglot/polyglot/target/spiral_Eval
00:00:00 v #3 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #4 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #5 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #6 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #7 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #8 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #9 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #10 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #11 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #12 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #13 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #14 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #15 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #16 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #17 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #18 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #19 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #20 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #21 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #22 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #23 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #24 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #5 > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:00 v #25 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #26 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:01 v #1 Supervisor.sendJson / port: 13805 / json: {"Ping":true} / result:
00:00:01 v #2 Supervisor.awaitCompiler / Ping / result: 'Some null' / port: 13805 / retry: 1
00:00:01 v #6 > Server bound to: http://localhost:13805
00:00:01 d #7 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path Async.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path Async.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:01 v #8 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "Async.dib", "--retries", "3"])) }
00:00:01 v #9 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/fsharp/Async.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/fsharp/Async.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/fsharp/Async.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/fsharp/Async.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:00:02 v #10 > >
00:00:02 v #11 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:02 v #12 > > │ # Async (Polyglot)
00:00:13 v #13 > >
00:00:13 v #14 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:13 v #15 > > #if !INTERACTIVE
00:00:13 v #16 > > open Lib
00:00:13 v #17 > > #endif
00:00:13 v #18 > >
00:00:13 v #19 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:13 v #20 > > open Common
00:00:13 v #21 > >
00:00:13 v #22 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:13 v #23 > > │ ## choice
00:00:13 v #24 > >
00:00:13 v #25 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:13 v #26 > > let inline choice asyncs = async {
00:00:13 v #27 > >     let e = Event<_> ()
00:00:13 v #28 > >     use cts = new System.Threading.CancellationTokenSource ()
00:00:13 v #29 > >     let fn =
00:00:13 v #30 > >         asyncs
00:00:13 v #31 > >         |> Seq.map (fun a -> async {
00:00:13 v #32 > >             let! x = a
00:00:13 v #33 > >             e.Trigger x
00:00:13 v #34 > >         })
00:00:13 v #35 > >         |> Async.Parallel
00:00:13 v #36 > >         |> Async.Ignore
00:00:13 v #37 > >     Async.Start (fn, cts.Token)
00:00:13 v #38 > >     let! result = Async.AwaitEvent e.Publish
00:00:13 v #39 > >     cts.Cancel ()
00:00:13 v #40 > >     return result
00:00:13 v #41 > > }
00:00:13 v #42 > >
00:00:13 v #43 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:13 v #44 > > │ ## map
00:00:13 v #45 > >
00:00:13 v #46 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:13 v #47 > > let inline map fn a = async {
00:00:13 v #48 > >     let! x = a
00:00:13 v #49 > >     return fn x
00:00:13 v #50 > > }
00:00:14 v #51 > >
00:00:14 v #52 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:14 v #53 > > │ ## runWithTimeoutChoiceAsync
00:00:14 v #54 > >
00:00:14 v #55 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:14 v #56 > > let inline runWithTimeoutChoiceAsync (timeout : int) fn =
00:00:14 v #57 > >     let _locals () = $"timeout: {timeout} / {_locals ()}"
00:00:14 v #58 > >
00:00:14 v #59 > >     let timeoutTask = async {
00:00:14 v #60 > >         do! Async.Sleep timeout
00:00:14 v #61 > >         trace Debug (fun () -> "runWithTimeoutChoiceAsync") _locals
00:00:14 v #62 > >         return None
00:00:14 v #63 > >     }
00:00:14 v #64 > >
00:00:14 v #65 > >     let task = async {
00:00:14 v #66 > >         try
00:00:14 v #67 > >             let! result = fn
00:00:14 v #68 > >             return Some result
00:00:14 v #69 > >         with
00:00:14 v #70 > >         | :? System.AggregateException as ex when
00:00:14 v #71 > >             ex.InnerExceptions
00:00:14 v #72 > >             |> Seq.exists (function :?
00:00:14 v #73 > > System.Threading.Tasks.TaskCanceledException -> true | _ -> false)
00:00:14 v #74 > >             ->
00:00:14 v #75 > >             trace Warning
00:00:14 v #76 > >                 (fun () -> "runWithTimeoutChoiceAsync")
00:00:14 v #77 > >                 (fun () -> $"ex: {ex |> SpiralSm.format_exception} / {_locals
00:00:14 v #78 > > ()}")
00:00:14 v #79 > >             return None
00:00:14 v #80 > >         | ex ->
00:00:14 v #81 > >             trace Critical
00:00:14 v #82 > >                 (fun () -> "runWithTimeoutChoiceAsync")
00:00:14 v #83 > >                 (fun () -> $"ex: {ex |> SpiralSm.format_exception} / {_locals
00:00:14 v #84 > > ()}")
00:00:14 v #85 > >             return None
00:00:14 v #86 > >     }
00:00:14 v #87 > >
00:00:14 v #88 > >     [[ timeoutTask; task ]]
00:00:14 v #89 > >     |> choice
00:00:14 v #90 > >
00:00:14 v #91 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:14 v #92 > > let inline runWithTimeoutChoice timeout fn =
00:00:14 v #93 > >     fn
00:00:14 v #94 > >     |> runWithTimeoutChoiceAsync timeout
00:00:14 v #95 > >     |> Async.RunSynchronously
00:00:14 v #96 > >
00:00:14 v #97 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:14 v #98 > > //// test
00:00:14 v #99 > >
00:00:14 v #100 > > Async.Sleep 120
00:00:14 v #101 > > |> runWithTimeoutChoice 10
00:00:14 v #102 > > |> _assertEqual None
00:00:14 v #103 > >
00:00:14 v #104 > > ── [ 121.13ms - stdout ] ───────────────────────────────────────────────────────
00:00:14 v #105 > > │ 00:00:00 d #1 runWithTimeoutChoiceAsync / timeout: 10
00:00:14 v #106 > > │ <null>
00:00:14 v #107 > > │
00:00:14 v #108 > > │
00:00:14 v #109 > >
00:00:14 v #110 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:14 v #111 > > //// test
00:00:14 v #112 > >
00:00:14 v #113 > > Async.Sleep 10
00:00:14 v #114 > > |> runWithTimeoutChoice 60
00:00:14 v #115 > > |> _assertEqual (Some ())
00:00:14 v #116 > >
00:00:14 v #117 > > ── [ 106.32ms - stdout ] ───────────────────────────────────────────────────────
00:00:14 v #118 > > │ Some ()
00:00:14 v #119 > > │
00:00:14 v #120 > > │
00:00:14 v #121 > >
00:00:14 v #122 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:14 v #123 > > //// test
00:00:14 v #124 > >
00:00:14 v #125 > > async {
00:00:14 v #126 > >     raise (exn "error")
00:00:14 v #127 > > }
00:00:14 v #128 > > |> runWithTimeoutChoice 60
00:00:14 v #129 > > |> _assertEqual None
00:00:14 v #130 > >
00:00:14 v #131 > > ── [ 93.22ms - stdout ] ────────────────────────────────────────────────────────
00:00:14 v #132 > > │ 00:00:00 c #2 runWithTimeoutChoiceAsync / ex:
00:00:14 v #133 > > System.Exception: error / timeout: 60
00:00:14 v #134 > > │ <null>
00:00:14 v #135 > > │
00:00:14 v #136 > > │
00:00:14 v #137 > >
00:00:14 v #138 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:14 v #139 > > │ ## catch
00:00:14 v #140 > >
00:00:14 v #141 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:14 v #142 > > let inline catch a =
00:00:14 v #143 > >     a
00:00:14 v #144 > >     |> Async.Catch
00:00:14 v #145 > >     |> map (function
00:00:14 v #146 > >         | Choice1Of2 result -> Ok result
00:00:14 v #147 > >         | Choice2Of2 ex -> Error ex
00:00:14 v #148 > >     )
00:00:14 v #149 > >
00:00:14 v #150 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:14 v #151 > > │ ## runWithTimeoutAsync
00:00:14 v #152 > >
00:00:14 v #153 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:14 v #154 > > let inline runWithTimeoutAsync (timeout : int) fn = async {
00:00:14 v #155 > >     let _locals () = $"timeout: {timeout} / {_locals ()}"
00:00:14 v #156 > >     let! child = Async.StartChild (fn, timeout)
00:00:14 v #157 > >     return!
00:00:14 v #158 > >         child
00:00:14 v #159 > >         |> catch
00:00:14 v #160 > >         |> map (function
00:00:14 v #161 > >             | Ok result -> Some result
00:00:14 v #162 > >             | Error (:? System.TimeoutException as ex) ->
00:00:14 v #163 > >                 trace Debug (fun () -> $"Async.runWithTimeoutAsync") _locals
00:00:14 v #164 > >                 None
00:00:14 v #165 > >             | Error ex ->
00:00:14 v #166 > >                 trace Critical (fun () -> $"Async.runWithTimeoutAsync** / ex:
00:00:14 v #167 > > %A{ex}") _locals
00:00:14 v #168 > >                 None
00:00:14 v #169 > >         )
00:00:14 v #170 > > }
00:00:14 v #171 > >
00:00:14 v #172 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:14 v #173 > > let inline runWithTimeout timeout fn =
00:00:14 v #174 > >     fn
00:00:14 v #175 > >     |> runWithTimeoutAsync timeout
00:00:14 v #176 > >     |> Async.RunSynchronously
00:00:14 v #177 > >
00:00:14 v #178 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:14 v #179 > > //// test
00:00:14 v #180 > >
00:00:14 v #181 > > Async.Sleep 60
00:00:14 v #182 > > |> runWithTimeout 10
00:00:14 v #183 > > |> _assertEqual None
00:00:14 v #184 > >
00:00:14 v #185 > > ── [ 88.24ms - stdout ] ────────────────────────────────────────────────────────
00:00:14 v #186 > > │ 00:00:01 d #3 Async.runWithTimeoutAsync / timeout: 10
00:00:14 v #187 > > │ <null>
00:00:14 v #188 > > │
00:00:14 v #189 > > │
00:00:14 v #190 > >
00:00:14 v #191 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:14 v #192 > > //// test
00:00:14 v #193 > >
00:00:14 v #194 > > Async.Sleep 10
00:00:14 v #195 > > |> runWithTimeout 60
00:00:14 v #196 > > |> _assertEqual (Some ())
00:00:14 v #197 > >
00:00:14 v #198 > > ── [ 60.90ms - stdout ] ────────────────────────────────────────────────────────
00:00:14 v #199 > > │ Some ()
00:00:14 v #200 > > │
00:00:14 v #201 > > │
00:00:14 v #202 > >
00:00:14 v #203 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:14 v #204 > > //// test
00:00:14 v #205 > >
00:00:14 v #206 > > async {
00:00:14 v #207 > >     raise (exn "error")
00:00:14 v #208 > > }
00:00:14 v #209 > > |> runWithTimeout 60
00:00:14 v #210 > > |> _assertEqual None
00:00:14 v #211 > >
00:00:14 v #212 > > ── [ 74.05ms - stdout ] ────────────────────────────────────────────────────────
00:00:14 v #213 > > │ 00:00:01 c #4 Async.runWithTimeoutAsync** / ex:
00:00:14 v #214 > > System.Exception: error
00:00:14 v #215 > > │    at FSI_0036.it@4-119.Invoke(Unit unitVar)
00:00:14 v #216 > > │    at
00:00:14 v #217 > > Microsoft.FSharp.Control.AsyncPrimitives.CallThenInvoke[T,TResult](AsyncActivati
00:00:14 v #218 > > on`1 ctxt, TResult result1, FSharpFunc`2 part2) in
00:00:14 v #219 > > D:\a\_work\1\s\src\FSharp.Core\async.fs:line 510
00:00:14 v #220 > > │    at
00:00:14 v #221 > > Microsoft.FSharp.Control.Trampoline.Execute(FSharpFunc`2 firstAction) in
00:00:14 v #222 > > D:\a\_work\1\s\src\FSharp.Core\async.fs:line 112
00:00:14 v #223 > > │ --- End of stack trace from previous location ---
00:00:14 v #224 > > │    at Microsoft.FSharp.Control.AsyncResult`1.Commit() in
00:00:14 v #225 > > D:\a\_work\1\s\src\FSharp.Core\async.fs:line 454
00:00:14 v #226 > > │    at
00:00:14 v #227 > > <StartupCode$FSharp-Core>.$Async.AwaitAndBindChildResult@1962-4.Invoke(Unit
00:00:14 v #228 > > unitVar) in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 1964
00:00:14 v #229 > > │    at
00:00:14 v #230 > > Microsoft.FSharp.Control.AsyncPrimitives.CallThenInvoke[T,TResult](AsyncActivati
00:00:14 v #231 > > on`1 ctxt, TResult result1, FSharpFunc`2 part2) in
00:00:14 v #232 > > D:\a\_work\1\s\src\FSharp.Core\async.fs:line 510
00:00:14 v #233 > > │    at
00:00:14 v #234 > > Microsoft.FSharp.Control.Trampoline.Execute(FSharpFunc`2 firstAction) in
00:00:14 v #235 > > D:\a\_work\1\s\src\FSharp.Core\async.fs:line 112 / timeout: 60
00:00:14 v #236 > > │ <null>
00:00:14 v #237 > > │
00:00:14 v #238 > > │
00:00:14 v #239 > >
00:00:14 v #240 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:14 v #241 > > │ ## runWithTimeoutStrict
00:00:14 v #242 > >
00:00:14 v #243 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:14 v #244 > > let inline runWithTimeoutStrict (timeout : int) fn =
00:00:14 v #245 > >     let _locals () = $"timeout: {timeout} / {_locals ()}"
00:00:14 v #246 > >
00:00:14 v #247 > >     let timeoutTask = async {
00:00:14 v #248 > >         do! Async.Sleep timeout
00:00:14 v #249 > >         return None, _locals
00:00:14 v #250 > >     }
00:00:14 v #251 > >
00:00:14 v #252 > >     let task = async {
00:00:14 v #253 > >         try
00:00:14 v #254 > >             return Async.RunSynchronously (fn, timeout) |> Some, _locals
00:00:14 v #255 > >         with
00:00:14 v #256 > >         | :? System.TimeoutException as ex ->
00:00:14 v #257 > >             let _locals () = $"ex: {ex |> SpiralSm.format_exception} / {_locals
00:00:14 v #258 > > ()}"
00:00:14 v #259 > >             return None, _locals
00:00:14 v #260 > >         | ex ->
00:00:14 v #261 > >             trace Critical
00:00:14 v #262 > >                 (fun () -> "Async.runWithTimeoutStrict / async error")
00:00:14 v #263 > >                 (fun () -> $"ex: {ex |> SpiralSm.format_exception} / {_locals
00:00:14 v #264 > > ()}")
00:00:14 v #265 > >             return raise ex
00:00:14 v #266 > >     }
00:00:14 v #267 > >
00:00:14 v #268 > >     try
00:00:14 v #269 > >         [[| timeoutTask; task |]]
00:00:14 v #270 > >         |> Array.map Async.StartAsTask
00:00:14 v #271 > >         |> System.Threading.Tasks.Task.WhenAny
00:00:14 v #272 > >         |> fun task ->
00:00:14 v #273 > >             match task.Result.Result with
00:00:14 v #274 > >             | None, _locals ->
00:00:14 v #275 > >                 trace Debug (fun () -> "runWithTimeoutStrict") _locals
00:00:14 v #276 > >                 None
00:00:14 v #277 > >             | result, _ -> result
00:00:14 v #278 > >     with
00:00:14 v #279 > >     | :? System.AggregateException as ex when
00:00:14 v #280 > >         ex.InnerExceptions
00:00:14 v #281 > >         |> Seq.exists (function :? System.Threading.Tasks.TaskCanceledException
00:00:14 v #282 > > -> true | _ -> false)
00:00:14 v #283 > >         ->
00:00:14 v #284 > >         trace Warning
00:00:14 v #285 > >             (fun () -> "Async.runWithTimeoutStrict")
00:00:14 v #286 > >             (fun () -> $"ex: {ex |> SpiralSm.format_exception} / {_locals ()}")
00:00:14 v #287 > >         None
00:00:14 v #288 > >     | ex ->
00:00:14 v #289 > >         trace Critical
00:00:14 v #290 > >             (fun () -> "Async.runWithTimeoutStrict / task error")
00:00:14 v #291 > >             (fun () -> $"ex: {ex |> SpiralSm.format_exception} / {_locals ()}")
00:00:14 v #292 > >         None
00:00:15 v #293 > >
00:00:15 v #294 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:15 v #295 > > //// test
00:00:15 v #296 > >
00:00:15 v #297 > > Async.Sleep 60
00:00:15 v #298 > > |> runWithTimeoutStrict 10
00:00:15 v #299 > > |> _assertEqual None
00:00:15 v #300 > >
00:00:15 v #301 > > ── [ 94.31ms - stdout ] ────────────────────────────────────────────────────────
00:00:15 v #302 > > │ 00:00:01 d #5 runWithTimeoutStrict / timeout: 10
00:00:15 v #303 > > │ <null>
00:00:15 v #304 > > │
00:00:15 v #305 > > │
00:00:15 v #306 > >
00:00:15 v #307 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:15 v #308 > > //// test
00:00:15 v #309 > >
00:00:15 v #310 > > Async.Sleep 10
00:00:15 v #311 > > |> runWithTimeoutStrict 60
00:00:15 v #312 > > |> _assertEqual (Some ())
00:00:15 v #313 > >
00:00:15 v #314 > > ── [ 89.33ms - stdout ] ────────────────────────────────────────────────────────
00:00:15 v #315 > > │ Some ()
00:00:15 v #316 > > │
00:00:15 v #317 > > │
00:00:15 v #318 > >
00:00:15 v #319 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:15 v #320 > > //// test
00:00:15 v #321 > >
00:00:15 v #322 > > async {
00:00:15 v #323 > >     raise (exn "error")
00:00:15 v #324 > > }
00:00:15 v #325 > > |> runWithTimeoutStrict 60
00:00:15 v #326 > > |> _assertEqual None
00:00:15 v #327 > >
00:00:15 v #328 > > ── [ 84.97ms - stdout ] ────────────────────────────────────────────────────────
00:00:15 v #329 > > │ 00:00:01 c #6 Async.runWithTimeoutStrict / async error
00:00:15 v #330 > > ex: System.Exception: error / timeout: 60
00:00:15 v #331 > > │ 00:00:01 c #7 Async.runWithTimeoutStrict / task error
00:00:15 v #332 > > ex: System.AggregateException: One or more errors occurred. (error) / timeout:
00:00:15 v #333 > > 60
00:00:15 v #334 > > │ <null>
00:00:15 v #335 > > │
00:00:15 v #336 > > │
00:00:15 v #337 > >
00:00:15 v #338 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:15 v #339 > > │ ## awaitValueTask
00:00:15 v #340 > >
00:00:15 v #341 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:15 v #342 > > let inline awaitValueTaskUnit (task : System.Threading.Tasks.ValueTask) =
00:00:15 v #343 > >     task.AsTask () |> Async.AwaitTask
00:00:15 v #344 > >
00:00:15 v #345 > > let inline awaitValueTask (task : System.Threading.Tasks.ValueTask<_>) =
00:00:15 v #346 > >     task.AsTask () |> Async.AwaitTask
00:00:15 v #347 > >
00:00:15 v #348 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:15 v #349 > > │ ## init
00:00:15 v #350 > >
00:00:15 v #351 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:15 v #352 > > let inline init x = async {
00:00:15 v #353 > >     return x
00:00:15 v #354 > > }
00:00:15 v #355 > >
00:00:15 v #356 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:15 v #357 > > //// test
00:00:15 v #358 > >
00:00:15 v #359 > > init 1
00:00:15 v #360 > > |> Async.RunSynchronously
00:00:15 v #361 > > |> _assertEqual 1
00:00:15 v #362 > >
00:00:15 v #363 > > ── [ 19.45ms - stdout ] ────────────────────────────────────────────────────────
00:00:15 v #364 > > │ 1
00:00:15 v #365 > > │
00:00:15 v #366 > > │
00:00:15 v #367 > >
00:00:15 v #368 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:15 v #369 > > │ ## withCancellationToken
00:00:15 v #370 > >
00:00:15 v #371 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:15 v #372 > > let inline withCancellationToken (ct : System.Threading.CancellationToken) fn =
00:00:15 v #373 > >     Async.StartImmediateAsTask (fn, ct)
00:00:15 v #374 > >     |> Async.AwaitTask
00:00:15 v #375 > >
00:00:15 v #376 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:15 v #377 > > //// test
00:00:15 v #378 > >
00:00:15 v #379 > > let cts = new System.Threading.CancellationTokenSource ()
00:00:15 v #380 > >
00:00:15 v #381 > > async {
00:00:15 v #382 > >     let run = async {
00:00:15 v #383 > >         do! Async.Sleep 100
00:00:15 v #384 > >         return 1
00:00:15 v #385 > >     }
00:00:15 v #386 > >
00:00:15 v #387 > >     let! child =
00:00:15 v #388 > >         run
00:00:15 v #389 > >         |> withCancellationToken cts.Token
00:00:15 v #390 > >         |> catch
00:00:15 v #391 > >         |> Async.StartChild
00:00:15 v #392 > >
00:00:15 v #393 > >     do! Async.Sleep 50
00:00:15 v #394 > >     cts.Cancel ()
00:00:15 v #395 > >     return! child
00:00:15 v #396 > > }
00:00:15 v #397 > > |> Async.RunSynchronously
00:00:15 v #398 > > |> Result.mapError _.Message
00:00:15 v #399 > > |> _assertEqual (Error ("A task was canceled."))
00:00:15 v #400 > >
00:00:15 v #401 > > ── [ 148.84ms - stdout ] ───────────────────────────────────────────────────────
00:00:15 v #402 > > │ Error "A task was canceled."
00:00:15 v #403 > > │
00:00:15 v #404 > > │
00:00:15 v #405 > >
00:00:15 v #406 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:15 v #407 > > │ ## retryAsync
00:00:15 v #408 > >
00:00:15 v #409 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:15 v #410 > > let inline retryAsync retries fn =
00:00:15 v #411 > >     let rec loop retry lastError = async {
00:00:15 v #412 > >         try
00:00:15 v #413 > >             return!
00:00:15 v #414 > >                 if retry <= retries
00:00:15 v #415 > >                 then fn |> map Ok
00:00:15 v #416 > >                 else lastError |> Error |> init
00:00:15 v #417 > >         with ex ->
00:00:15 v #418 > >             trace Debug (fun () -> $"Async.retryAsync / retry: {retry}/{retries}
00:00:15 v #419 > > / ex: {ex |> SpiralSm.format_exception}") _locals
00:00:15 v #420 > >             do! Async.Sleep 30
00:00:15 v #421 > >             return! loop (retry + 1) (ex |> SpiralSm.format_exception)
00:00:15 v #422 > >     }
00:00:15 v #423 > >     loop 1 "Async.retryAsync / invalid retries / retries: {retries}"
00:00:15 v #424 > >
00:00:15 v #425 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:15 v #426 > > //// test
00:00:15 v #427 > >
00:00:15 v #428 > > let retry_fn_test = ref 0
00:00:15 v #429 > > async {
00:00:15 v #430 > >     retry_fn_test.Value <- retry_fn_test.Value + 1
00:00:15 v #431 > >     return retry_fn_test.Value
00:00:15 v #432 > > }
00:00:15 v #433 > > |> retryAsync 3
00:00:15 v #434 > > |> Async.RunSynchronously
00:00:15 v #435 > > |> _assertEqual (Ok 1)
00:00:15 v #436 > >
00:00:15 v #437 > > ── [ 89.14ms - stdout ] ────────────────────────────────────────────────────────
00:00:15 v #438 > > │ Ok 1
00:00:15 v #439 > > │
00:00:15 v #440 > > │
00:00:15 v #441 > >
00:00:15 v #442 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:15 v #443 > > //// test
00:00:15 v #444 > >
00:00:15 v #445 > > let retry_fn_test = ref 0
00:00:15 v #446 > > async {
00:00:15 v #447 > >     return
00:00:15 v #448 > >         if retry_fn_test.Value >= 2
00:00:15 v #449 > >         then retry_fn_test.Value
00:00:15 v #450 > >         else
00:00:15 v #451 > >             retry_fn_test.Value <- retry_fn_test.Value + 1
00:00:15 v #452 > >             failwith "test"
00:00:15 v #453 > > }
00:00:15 v #454 > > |> retryAsync 3
00:00:15 v #455 > > |> Async.RunSynchronously
00:00:15 v #456 > > |> _assertEqual (Ok 2)
00:00:15 v #457 > >
00:00:15 v #458 > > ── [ 129.19ms - stdout ] ───────────────────────────────────────────────────────
00:00:15 v #459 > > │ 00:00:02 d #8 Async.retryAsync / retry: 1/3 / ex:
00:00:15 v #460 > > System.Exception: test
00:00:15 v #461 > > │ 00:00:02 d #9 Async.retryAsync / retry: 2/3 / ex:
00:00:15 v #462 > > System.Exception: test
00:00:15 v #463 > > │ Ok 2
00:00:15 v #464 > > │
00:00:15 v #465 > > │
00:00:15 v #466 > >
00:00:15 v #467 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:15 v #468 > > │ ## fold
00:00:15 v #469 > >
00:00:15 v #470 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:15 v #471 > > let fold folder state array =
00:00:15 v #472 > >     let rec loop acc i =
00:00:15 v #473 > >         async {
00:00:15 v #474 > >             if i < Array.length array then
00:00:15 v #475 > >                 let! newAcc = folder acc array.[[i]]
00:00:15 v #476 > >                 return! loop newAcc (i + 1)
00:00:15 v #477 > >             else
00:00:15 v #478 > >                 return acc
00:00:15 v #479 > >         }
00:00:15 v #480 > >     loop state 0
00:00:15 v #481 > 00:00:14 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 15919 }
00:00:15 v #482 > 00:00:14 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/fsharp/Async.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/fsharp/Async.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:16 v #483 > 00:00:15 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/fsharp/Async.dib.ipynb to html
00:00:16 v #484 > 00:00:15 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:16 v #485 > 00:00:15 v #7 !   validate(nb)
00:00:17 v #486 > 00:00:15 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:17 v #487 > 00:00:15 v #9 !   return _pygments_highlight(
00:00:17 v #488 > 00:00:16 v #10 ! [NbConvertApp] Writing 332803 bytes to /home/runner/work/polyglot/polyglot/lib/fsharp/Async.dib.html
00:00:17 v #489 > 00:00:16 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 894 }
00:00:17 v #490 > 00:00:16 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 894 }
00:00:17 v #491 > 00:00:16 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/fsharp/Async.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/fsharp/Async.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:17 v #492 > 00:00:16 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:00:17 v #493 > 00:00:16 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:00:17 v #494 > 00:00:16 d #16 spiral.run / dib / { exit_code = 0; result_length = 16872 }
00:00:17 d #495 runtime.execute_with_options_async / { exit_code = 0; output_length = 20460 }
00:00:17 d #3 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path Async.dib --retries 3
00:00:17 d #496 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path AsyncSeq.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path AsyncSeq.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:17 v #497 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "AsyncSeq.dib", "--retries", "3"])) }
00:00:17 v #498 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/fsharp/AsyncSeq.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/fsharp/AsyncSeq.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/fsharp/AsyncSeq.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/fsharp/AsyncSeq.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:00:18 v #499 > >
00:00:18 v #500 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:18 v #501 > > │ # AsyncSeq (Polyglot)
00:00:30 v #502 > >
00:00:30 v #503 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:30 v #504 > > #r
00:00:30 v #505 > > @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan
00:00:30 v #506 > > dard2.1/FSharp.Control.AsyncSeq.dll"
00:00:30 v #507 > > #r
00:00:30 v #508 > > @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6.
00:00:30 v #509 > > 0/System.Reactive.dll"
00:00:30 v #510 > > #r
00:00:30 v #511 > > @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib
00:00:30 v #512 > > netstandard2.0/System.Reactive.Linq.dll"
00:00:30 v #513 > >
00:00:30 v #514 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:30 v #515 > > #if !INTERACTIVE
00:00:30 v #516 > > open Lib
00:00:30 v #517 > > #endif
00:00:30 v #518 > >
00:00:30 v #519 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:30 v #520 > > open Common
00:00:30 v #521 > >
00:00:30 v #522 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:30 v #523 > > │ ## subscribeEvent
00:00:30 v #524 > >
00:00:30 v #525 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:30 v #526 > > let inline subscribeEvent (event: IEvent<'H, 'A>) map =
00:00:30 v #527 > >     let observable = System.Reactive.Linq.Observable.FromEventPattern<'H,
00:00:30 v #528 > > 'A>(event.AddHandler, event.RemoveHandler)
00:00:30 v #529 > >     System.Reactive.Linq.Observable.Select (observable, fun event -> map
00:00:30 v #530 > > event.EventArgs)
00:00:30 v #531 > >     |> FSharp.Control.AsyncSeq.ofObservableBuffered
00:00:31 v #532 > >
00:00:31 v #533 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:31 v #534 > > //// test
00:00:31 v #535 > >
00:00:31 v #536 > > type TestEvent () as self =
00:00:31 v #537 > >     member val Calls = [[]] with get, set
00:00:31 v #538 > >     member val Event = Event<ErrorEventHandler, ErrorEventArgs> () with get
00:00:31 v #539 > >
00:00:31 v #540 > >     member _.AddCall text =
00:00:31 v #541 > >         self.Calls <- self.Calls @ [[ text ]]
00:00:31 v #542 > >
00:00:31 v #543 > >     member _.EventInterface =
00:00:31 v #544 > >         { new IEvent<ErrorEventHandler, ErrorEventArgs> with
00:00:31 v #545 > >             member _.AddHandler handler =
00:00:31 v #546 > >                 self.AddCall "AddHandler"
00:00:31 v #547 > >                 self.Event.Publish.AddHandler handler
00:00:31 v #548 > >
00:00:31 v #549 > >             member _.RemoveHandler handler =
00:00:31 v #550 > >                 self.AddCall "RemoveHandler"
00:00:31 v #551 > >                 self.Event.Publish.RemoveHandler handler
00:00:31 v #552 > >
00:00:31 v #553 > >             member _.Subscribe observer =
00:00:31 v #554 > >                 self.AddCall "IObservable.Subscribe"
00:00:31 v #555 > >                 let disposable = self.Event.Publish.Subscribe observer
00:00:31 v #556 > >                 new_disposable (fun () ->
00:00:31 v #557 > >                     self.AddCall "IObservable.Dispose"
00:00:31 v #558 > >                     disposable.Dispose ()
00:00:31 v #559 > >                 )
00:00:31 v #560 > >         }
00:00:31 v #561 > >
00:00:31 v #562 > >     member _.Subscribe () =
00:00:31 v #563 > >         subscribeEvent
00:00:31 v #564 > >             self.EventInterface
00:00:31 v #565 > >             (fun args ->
00:00:31 v #566 > >                 let result = args.GetException () |> SpiralSm.format_exception
00:00:31 v #567 > >                 self.AddCall $"TestEvent.Subscribe({result})"
00:00:31 v #568 > >                 result
00:00:31 v #569 > >             )
00:00:31 v #570 > >
00:00:31 v #571 > >     member _.Iter subscription =
00:00:31 v #572 > >         subscription
00:00:31 v #573 > >         |> FSharp.Control.AsyncSeq.iteriAsync (fun i error -> async {
00:00:31 v #574 > >             self.AddCall $"TestEvent.Iter({i}: {error})"
00:00:31 v #575 > >         })
00:00:31 v #576 > >
00:00:31 v #577 > >     member _.WaitCall text = async {
00:00:31 v #578 > >         while self.Calls |> List.last <> text do
00:00:31 v #579 > >             do! Async.SwitchToThreadPool ()
00:00:31 v #580 > >     }
00:00:31 v #581 > >
00:00:31 v #582 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:31 v #583 > > //// test
00:00:31 v #584 > >
00:00:31 v #585 > > let testEvent = TestEvent ()
00:00:31 v #586 > >
00:00:31 v #587 > > async {
00:00:31 v #588 > >     testEvent.AddCall "1"
00:00:31 v #589 > >     let! child = testEvent.Subscribe () |> testEvent.Iter |> Async.StartChild
00:00:31 v #590 > >     do! testEvent.WaitCall "AddHandler"
00:00:31 v #591 > >     testEvent.AddCall "2"
00:00:31 v #592 > >     do! child
00:00:31 v #593 > >     testEvent.AddCall "3"
00:00:31 v #594 > > }
00:00:31 v #595 > > |> Async.runWithTimeout 300
00:00:31 v #596 > > |> _assertEqual None
00:00:31 v #597 > >
00:00:31 v #598 > > testEvent.Calls
00:00:31 v #599 > > |> Seq.toList
00:00:31 v #600 > > |> _assertEqual [[ "1"; "AddHandler"; "2"; "RemoveHandler" ]]
00:00:31 v #601 > >
00:00:31 v #602 > > ── [ 458.49ms - stdout ] ───────────────────────────────────────────────────────
00:00:31 v #603 > > │ 00:00:01 d #1 Async.runWithTimeoutAsync / timeout: 300
00:00:31 v #604 > > │ <null>
00:00:31 v #605 > > │
00:00:31 v #606 > > │ ["1"; "AddHandler"; "2"; "RemoveHandler"]
00:00:31 v #607 > > │
00:00:31 v #608 > > │
00:00:31 v #609 > >
00:00:31 v #610 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:31 v #611 > > //// test
00:00:31 v #612 > >
00:00:31 v #613 > > let testEvent = TestEvent ()
00:00:31 v #614 > >
00:00:31 v #615 > > async {
00:00:31 v #616 > >     testEvent.AddCall "1"
00:00:31 v #617 > >     let! child = testEvent.Subscribe () |> testEvent.Iter |> Async.StartChild
00:00:31 v #618 > >     do! testEvent.WaitCall "AddHandler"
00:00:31 v #619 > >     testEvent.AddCall "2"
00:00:31 v #620 > >     use _ = testEvent.EventInterface.Subscribe (fun args ->
00:00:31 v #621 > >         testEvent.AddCall $"testEvent.EventInterface.Subscribe({args})"
00:00:31 v #622 > >     )
00:00:31 v #623 > >     testEvent.AddCall "3"
00:00:31 v #624 > >     do! child
00:00:31 v #625 > >     testEvent.AddCall "4"
00:00:31 v #626 > > }
00:00:31 v #627 > > |> Async.runWithTimeout 300
00:00:31 v #628 > > |> _assertEqual None
00:00:31 v #629 > >
00:00:31 v #630 > > testEvent.Calls
00:00:31 v #631 > > |> _assertEqual [[ "1"; "AddHandler"; "2"; "IObservable.Subscribe"; "3";
00:00:31 v #632 > > "RemoveHandler"; "IObservable.Dispose" ]]
00:00:31 v #633 > >
00:00:31 v #634 > > ── [ 390.23ms - stdout ] ───────────────────────────────────────────────────────
00:00:31 v #635 > > │ 00:00:01 d #2 Async.runWithTimeoutAsync / timeout: 300
00:00:31 v #636 > > │ <null>
00:00:31 v #637 > > │
00:00:31 v #638 > > │ ["1"; "AddHandler"; "2"; "IObservable.Subscribe"; "3";
00:00:31 v #639 > > "RemoveHandler"; "IObservable.Dispose"]
00:00:31 v #640 > > │
00:00:31 v #641 > > │
00:00:31 v #642 > >
00:00:31 v #643 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:31 v #644 > > //// test
00:00:31 v #645 > >
00:00:31 v #646 > > let testEvent = TestEvent ()
00:00:31 v #647 > >
00:00:31 v #648 > > async {
00:00:31 v #649 > >     testEvent.AddCall "1"
00:00:31 v #650 > >     let! child = testEvent.Subscribe () |> testEvent.Iter |> Async.StartChild
00:00:31 v #651 > >     do! testEvent.WaitCall "AddHandler"
00:00:31 v #652 > >     testEvent.AddCall "2"
00:00:31 v #653 > >     use _ = testEvent.EventInterface.Subscribe (fun args ->
00:00:31 v #654 > >         async {
00:00:31 v #655 > >             do! testEvent.WaitCall "TestEvent.Iter(0: System.Exception: error)"
00:00:31 v #656 > >             testEvent.AddCall
00:00:31 v #657 > > $"testEvent.EventInterface.Subscribe({args.GetException () |>
00:00:31 v #658 > > SpiralSm.format_exception})"
00:00:31 v #659 > >         }
00:00:31 v #660 > >         |> Async.RunSynchronously
00:00:31 v #661 > >     )
00:00:31 v #662 > >     testEvent.AddCall "3"
00:00:31 v #663 > >     testEvent.Event.Trigger (null, ErrorEventArgs (Exception "error"))
00:00:31 v #664 > >     testEvent.AddCall "4"
00:00:31 v #665 > >     do! child
00:00:31 v #666 > >     testEvent.AddCall "5"
00:00:31 v #667 > > }
00:00:31 v #668 > > |> Async.runWithTimeout 300
00:00:31 v #669 > > |> _assertEqual None
00:00:31 v #670 > >
00:00:31 v #671 > > testEvent.Calls
00:00:31 v #672 > > |> _assertEqual [[
00:00:31 v #673 > >     "1"
00:00:31 v #674 > >     "AddHandler"
00:00:31 v #675 > >     "2"
00:00:31 v #676 > >     "IObservable.Subscribe"
00:00:31 v #677 > >     "3"
00:00:31 v #678 > >     "TestEvent.Subscribe(System.Exception: error)"
00:00:31 v #679 > >     "TestEvent.Iter(0: System.Exception: error)"
00:00:31 v #680 > >     "testEvent.EventInterface.Subscribe(System.Exception: error)"
00:00:31 v #681 > >     "4"
00:00:31 v #682 > >     "RemoveHandler"
00:00:31 v #683 > >     "IObservable.Dispose"
00:00:31 v #684 > > ]]
00:00:32 v #685 > >
00:00:32 v #686 > > ── [ 400.33ms - stdout ] ───────────────────────────────────────────────────────
00:00:32 v #687 > > │ 00:00:02 d #3 Async.runWithTimeoutAsync / timeout: 300
00:00:32 v #688 > > │ <null>
00:00:32 v #689 > > │
00:00:32 v #690 > > │ ["1"; "AddHandler"; "2"; "IObservable.Subscribe"; "3";
00:00:32 v #691 > > "TestEvent.Subscribe(System.Exception: error)";
00:00:32 v #692 > > │  "TestEvent.Iter(0: System.Exception: error)";
00:00:32 v #693 > > "testEvent.EventInterface.Subscribe(System.Exception: error)"; "4";
00:00:32 v #694 > > │  "RemoveHandler"; "IObservable.Dispose"]
00:00:32 v #695 > > │
00:00:32 v #696 > > │
00:00:32 v #697 > >
00:00:32 v #698 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:32 v #699 > > │ ## subscribeToken
00:00:32 v #700 > >
00:00:32 v #701 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:32 v #702 > > let subscribeToken (token : System.Threading.CancellationToken) =
00:00:32 v #703 > >     let tcs = new System.Threading.Tasks.TaskCompletionSource ()
00:00:32 v #704 > >     System.Action tcs.SetResult |> token.Register |> ignore
00:00:32 v #705 > >     let start = System.DateTime.Now.Ticks
00:00:32 v #706 > >     FSharp.Control.AsyncSeq.unfoldAsync
00:00:32 v #707 > >         (fun () -> async {
00:00:32 v #708 > >             do! tcs.Task |> Async.AwaitTask
00:00:32 v #709 > >             return Some (System.DateTime.Now.Ticks - start, ())
00:00:32 v #710 > >         })
00:00:32 v #711 > >         ()
00:00:32 v #712 > >
00:00:32 v #713 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:32 v #714 > > //// test
00:00:32 v #715 > >
00:00:32 v #716 > > let cts = new System.Threading.CancellationTokenSource ()
00:00:32 v #717 > >
00:00:32 v #718 > > async {
00:00:32 v #719 > >     let! child =
00:00:32 v #720 > >         cts.Token
00:00:32 v #721 > >         |> subscribeToken
00:00:32 v #722 > >         |> FSharp.Control.AsyncSeq.tryFirst
00:00:32 v #723 > >         |> Async.StartChild
00:00:32 v #724 > >
00:00:32 v #725 > >     do! Async.Sleep 100
00:00:32 v #726 > >     cts.Cancel ()
00:00:32 v #727 > >     return! child
00:00:32 v #728 > > }
00:00:32 v #729 > > |> Async.RunSynchronously
00:00:32 v #730 > > |> Option.get
00:00:32 v #731 > > |> fun x -> x > 900000
00:00:32 v #732 > > |> _assertEqual true
00:00:32 v #733 > >
00:00:32 v #734 > > ── [ 144.23ms - stdout ] ───────────────────────────────────────────────────────
00:00:32 v #735 > > │ true
00:00:32 v #736 > > │
00:00:32 v #737 > > │
00:00:32 v #738 > 00:00:15 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 8097 }
00:00:32 v #739 > 00:00:15 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/fsharp/AsyncSeq.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/fsharp/AsyncSeq.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:33 v #740 > 00:00:15 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/fsharp/AsyncSeq.dib.ipynb to html
00:00:33 v #741 > 00:00:15 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:33 v #742 > 00:00:15 v #7 !   validate(nb)
00:00:33 v #743 > 00:00:16 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:33 v #744 > 00:00:16 v #9 !   return _pygments_highlight(
00:00:33 v #745 > 00:00:16 v #10 ! [NbConvertApp] Writing 303150 bytes to /home/runner/work/polyglot/polyglot/lib/fsharp/AsyncSeq.dib.html
00:00:33 v #746 > 00:00:16 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 900 }
00:00:33 v #747 > 00:00:16 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 900 }
00:00:33 v #748 > 00:00:16 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/fsharp/AsyncSeq.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/fsharp/AsyncSeq.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:34 v #749 > 00:00:16 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:00:34 v #750 > 00:00:16 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:00:34 v #751 > 00:00:16 d #16 spiral.run / dib / { exit_code = 0; result_length = 9056 }
00:00:34 d #752 runtime.execute_with_options_async / { exit_code = 0; output_length = 12205 }
00:00:34 d #4 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path AsyncSeq.dib --retries 3
00:00:34 d #753 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path Common.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path Common.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:34 v #754 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "Common.dib", "--retries", "3"])) }
00:00:34 v #755 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/fsharp/Common.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/fsharp/Common.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/fsharp/Common.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/fsharp/Common.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:00:35 v #756 > >
00:00:35 v #757 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:35 v #758 > > │ # Common (Polyglot)
00:00:46 v #759 > >
00:00:46 v #760 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:46 v #761 > > #if !INTERACTIVE
00:00:46 v #762 > > open Lib
00:00:46 v #763 > > #endif
00:00:46 v #764 > >
00:00:46 v #765 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:46 v #766 > > let nl = System.Environment.NewLine
00:00:46 v #767 > > let q = @""""
00:00:46 v #768 > >
00:00:46 v #769 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:46 v #770 > > let inline cons head tail = head :: tail
00:00:46 v #771 > >
00:00:46 v #772 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:46 v #773 > > │ ## memoize
00:00:46 v #774 > >
00:00:46 v #775 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:46 v #776 > > let inline memoize fn =
00:00:46 v #777 > >     let result = lazy fn ()
00:00:46 v #778 > >     fun () -> result.Value
00:00:46 v #779 > >
00:00:46 v #780 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:46 v #781 > > │ ## TraceLevel
00:00:46 v #782 > >
00:00:46 v #783 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:46 v #784 > > type TraceLevel =
00:00:46 v #785 > >     | Verbose
00:00:46 v #786 > >     | Debug
00:00:46 v #787 > >     | Info
00:00:46 v #788 > >     | Warning
00:00:46 v #789 > >     | Critical
00:00:46 v #790 > >
00:00:46 v #791 > > let inline _locals () = ""
00:00:46 v #792 > >
00:00:46 v #793 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:46 v #794 > > │ ## trace
00:00:46 v #795 > >
00:00:46 v #796 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:46 v #797 > > let to_trace_level = function
00:00:46 v #798 > >     | Verbose -> SpiralTrace.TraceLevel.US0_0
00:00:46 v #799 > >     | Debug -> SpiralTrace.TraceLevel.US0_1
00:00:46 v #800 > >     | Info -> SpiralTrace.TraceLevel.US0_2
00:00:46 v #801 > >     | Warning -> SpiralTrace.TraceLevel.US0_3
00:00:46 v #802 > >     | Critical -> SpiralTrace.TraceLevel.US0_4
00:00:46 v #803 > >
00:00:46 v #804 > > let trace level fn locals =
00:00:46 v #805 > >     let level = level |> to_trace_level
00:00:46 v #806 > >     SpiralTrace.trace level fn locals
00:00:46 v #807 > >
00:00:46 v #808 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:46 v #809 > > //// test
00:00:46 v #810 > >
00:00:46 v #811 > > trace Debug (fun () -> "test") _locals
00:00:46 v #812 > >
00:00:46 v #813 > > ── [ 14.58ms - stdout ] ────────────────────────────────────────────────────────
00:00:46 v #814 > > │ 00:00:00 d #1 test
00:00:46 v #815 > > │
00:00:46 v #816 > 00:00:12 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 2118 }
00:00:46 v #817 > 00:00:12 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/fsharp/Common.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/fsharp/Common.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:47 v #818 > 00:00:13 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/fsharp/Common.dib.ipynb to html
00:00:47 v #819 > 00:00:13 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:47 v #820 > 00:00:13 v #7 !   validate(nb)
00:00:48 v #821 > 00:00:13 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:48 v #822 > 00:00:13 v #9 !   return _pygments_highlight(
00:00:48 v #823 > 00:00:13 v #10 ! [NbConvertApp] Writing 280765 bytes to /home/runner/work/polyglot/polyglot/lib/fsharp/Common.dib.html
00:00:48 v #824 > 00:00:13 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 896 }
00:00:48 v #825 > 00:00:13 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 896 }
00:00:48 v #826 > 00:00:13 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/fsharp/Common.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/fsharp/Common.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:48 v #827 > 00:00:14 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:00:48 v #828 > 00:00:14 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:00:48 v #829 > 00:00:14 d #16 spiral.run / dib / { exit_code = 0; result_length = 3073 }
00:00:48 d #830 runtime.execute_with_options_async / { exit_code = 0; output_length = 5846 }
00:00:48 d #5 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path Common.dib --retries 3
00:00:48 d #831 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path CommonFSharp.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path CommonFSharp.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:48 v #832 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "CommonFSharp.dib", "--retries", "3"])) }
00:00:48 v #833 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/fsharp/CommonFSharp.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/fsharp/CommonFSharp.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/fsharp/CommonFSharp.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/fsharp/CommonFSharp.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:00:49 v #834 > >
00:00:49 v #835 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:49 v #836 > > │ # CommonFSharp (Polyglot)
00:01:00 v #837 > >
00:01:00 v #838 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:00 v #839 > > open Common
00:01:00 v #840 > >
00:01:00 v #841 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:00 v #842 > > │ ## getUnionCaseName
00:01:00 v #843 > >
00:01:00 v #844 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:00 v #845 > > let inline getUnionCaseName<'T> (x: 'T) =
00:01:00 v #846 > >     match Reflection.FSharpValue.GetUnionFields(x, typeof<'T>) with
00:01:00 v #847 > >     | case, _ -> case.Name
00:01:00 v #848 > >
00:01:00 v #849 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:00 v #850 > > //// test
00:01:00 v #851 > >
00:01:00 v #852 > > TraceLevel.Critical
00:01:00 v #853 > > |> getUnionCaseName
00:01:00 v #854 > > |> _assertEqual (nameof TraceLevel.Critical)
00:01:00 v #855 > >
00:01:00 v #856 > > ── [ 46.63ms - stdout ] ────────────────────────────────────────────────────────
00:01:00 v #857 > > │ "Critical"
00:01:00 v #858 > > │
00:01:00 v #859 > > │
00:01:01 v #860 > 00:00:12 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 1002 }
00:01:01 v #861 > 00:00:12 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/fsharp/CommonFSharp.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/fsharp/CommonFSharp.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:01:01 v #862 > 00:00:13 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/fsharp/CommonFSharp.dib.ipynb to html
00:01:01 v #863 > 00:00:13 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:01:01 v #864 > 00:00:13 v #7 !   validate(nb)
00:01:02 v #865 > 00:00:13 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:01:02 v #866 > 00:00:13 v #9 !   return _pygments_highlight(
00:01:02 v #867 > 00:00:13 v #10 ! [NbConvertApp] Writing 275628 bytes to /home/runner/work/polyglot/polyglot/lib/fsharp/CommonFSharp.dib.html
00:01:02 v #868 > 00:00:13 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 908 }
00:01:02 v #869 > 00:00:13 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 908 }
00:01:02 v #870 > 00:00:13 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/fsharp/CommonFSharp.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/fsharp/CommonFSharp.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:01:02 v #871 > 00:00:14 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:01:02 v #872 > 00:00:14 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:01:02 v #873 > 00:00:14 d #16 spiral.run / dib / { exit_code = 0; result_length = 1969 }
00:01:02 d #874 runtime.execute_with_options_async / { exit_code = 0; output_length = 4728 }
00:01:02 d #6 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path CommonFSharp.dib --retries 3
00:01:02 d #875 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path FileSystem.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path FileSystem.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:01:02 v #876 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "FileSystem.dib", "--retries", "3"])) }
00:01:02 v #877 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/fsharp/FileSystem.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/fsharp/FileSystem.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/fsharp/FileSystem.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/fsharp/FileSystem.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:01:03 v #878 > >
00:01:03 v #879 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:03 v #880 > > │ # FileSystem (Polyglot)
00:01:06 v #881 > >
00:01:06 v #882 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:06 v #883 > > #r
00:01:06 v #884 > > @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan
00:01:06 v #885 > > dard2.1/FSharp.Control.AsyncSeq.dll"
00:01:06 v #886 > > #r
00:01:06 v #887 > > @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6.
00:01:06 v #888 > > 0/System.Reactive.dll"
00:01:06 v #889 > > #r
00:01:06 v #890 > > @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib
00:01:06 v #891 > > netstandard2.0/System.Reactive.Linq.dll"
00:01:06 v #892 > > #r
00:01:06 v #893 > > @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll"
00:01:15 v #894 > >
00:01:15 v #895 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:15 v #896 > > #if !INTERACTIVE
00:01:15 v #897 > > open Lib
00:01:15 v #898 > > #endif
00:01:15 v #899 > >
00:01:15 v #900 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:15 v #901 > > open Common
00:01:15 v #902 > > open SpiralFileSystem.Operators
00:01:15 v #903 > >
00:01:15 v #904 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:15 v #905 > > │ ## watchDirectory
00:01:15 v #906 > >
00:01:15 v #907 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:15 v #908 > > [[<RequireQualifiedAccess>]]
00:01:15 v #909 > > type FileSystemChangeType =
00:01:15 v #910 > >     | Failure
00:01:15 v #911 > >     | Changed
00:01:15 v #912 > >     | Created
00:01:15 v #913 > >     | Deleted
00:01:15 v #914 > >     | Renamed
00:01:15 v #915 > >
00:01:15 v #916 > > [[<RequireQualifiedAccess>]]
00:01:15 v #917 > > type FileSystemChange =
00:01:15 v #918 > >     | Failure of exn: exn
00:01:15 v #919 > >     | Changed of path: string * content: string option
00:01:15 v #920 > >     | Created of path: string * content: string option
00:01:15 v #921 > >     | Deleted of path: string
00:01:15 v #922 > >     | Renamed of oldPath: string * (string * string option)
00:01:15 v #923 > >
00:01:15 v #924 > >
00:01:15 v #925 > > let inline watchDirectoryWithFilter filter shouldReadContent path =
00:01:15 v #926 > >     let fullPath = path |> System.IO.Path.GetFullPath
00:01:15 v #927 > >     let _locals () = $"filter: {filter} / {_locals ()}"
00:01:15 v #928 > >
00:01:15 v #929 > >     let watcher =
00:01:15 v #930 > >         new System.IO.FileSystemWatcher (
00:01:15 v #931 > >             Path = fullPath,
00:01:15 v #932 > >             NotifyFilter = filter,
00:01:15 v #933 > >             EnableRaisingEvents = true,
00:01:15 v #934 > >             IncludeSubdirectories = true
00:01:15 v #935 > >         )
00:01:15 v #936 > >
00:01:15 v #937 > >     let inline getEventPath (path : string) =
00:01:15 v #938 > >         path |> SpiralSm.trim |> SpiralSm.replace fullPath "" |>
00:01:15 v #939 > > SpiralSm.trim_start [[| '/'; '\\' |]]
00:01:15 v #940 > >
00:01:15 v #941 > >     let inline ticks () =
00:01:15 v #942 > >         System.DateTime.UtcNow.Ticks
00:01:15 v #943 > >
00:01:15 v #944 > >     let changedStream =
00:01:15 v #945 > >         AsyncSeq.subscribeEvent
00:01:15 v #946 > >             watcher.Changed
00:01:15 v #947 > >             (fun event ->
00:01:15 v #948 > >                 ticks (),
00:01:15 v #949 > >                 [[ FileSystemChange.Changed (getEventPath event.FullPath, None)
00:01:15 v #950 > > ]]
00:01:15 v #951 > >             )
00:01:15 v #952 > >
00:01:15 v #953 > >     let deletedStream =
00:01:15 v #954 > >         AsyncSeq.subscribeEvent
00:01:15 v #955 > >             watcher.Deleted
00:01:15 v #956 > >             (fun event ->
00:01:15 v #957 > >                 ticks (),
00:01:15 v #958 > >                 [[ FileSystemChange.Deleted (getEventPath event.FullPath) ]]
00:01:15 v #959 > >             )
00:01:15 v #960 > >
00:01:15 v #961 > >     let createdStream =
00:01:15 v #962 > >         AsyncSeq.subscribeEvent
00:01:15 v #963 > >             watcher.Created
00:01:15 v #964 > >             (fun event ->
00:01:15 v #965 > >                 let path = getEventPath event.FullPath
00:01:15 v #966 > >                 ticks (), [[
00:01:15 v #967 > >                     FileSystemChange.Created (path, None)
00:01:15 v #968 > >                     if SpiralPlatform.is_windows () then
00:01:15 v #969 > >                         FileSystemChange.Changed (path, None)
00:01:15 v #970 > >                 ]])
00:01:15 v #971 > >
00:01:15 v #972 > >     let renamedStream =
00:01:15 v #973 > >         AsyncSeq.subscribeEvent
00:01:15 v #974 > >             watcher.Renamed
00:01:15 v #975 > >             (fun event ->
00:01:15 v #976 > >                 ticks (), [[
00:01:15 v #977 > >                     FileSystemChange.Renamed (
00:01:15 v #978 > >                         getEventPath event.OldFullPath,
00:01:15 v #979 > >                         (getEventPath event.FullPath, None)
00:01:15 v #980 > >                     )
00:01:15 v #981 > >                 ]]
00:01:15 v #982 > >             )
00:01:15 v #983 > >
00:01:15 v #984 > >     let failureStream =
00:01:15 v #985 > >         AsyncSeq.subscribeEvent
00:01:15 v #986 > >             watcher.Error
00:01:15 v #987 > >             (fun event -> ticks (), [[ FileSystemChange.Failure
00:01:15 v #988 > > (event.GetException ()) ]])
00:01:15 v #989 > >
00:01:15 v #990 > >     let stream =
00:01:15 v #991 > >         [[
00:01:15 v #992 > >             changedStream
00:01:15 v #993 > >             deletedStream
00:01:15 v #994 > >             createdStream
00:01:15 v #995 > >             renamedStream
00:01:15 v #996 > >             failureStream
00:01:15 v #997 > >         ]]
00:01:15 v #998 > >         |> FSharp.Control.AsyncSeq.mergeAll
00:01:15 v #999 > >         |> FSharp.Control.AsyncSeq.map (fun (t, events) ->
00:01:15 v #1000 > >             events
00:01:15 v #1001 > >             |> List.fold
00:01:15 v #1002 > >                 (fun (i, events) event ->
00:01:15 v #1003 > >                     i + 1L,
00:01:15 v #1004 > >                     (t + i, event) :: events)
00:01:15 v #1005 > >                 (0L, [[]])
00:01:15 v #1006 > >             |> snd
00:01:15 v #1007 > >             |> List.rev
00:01:15 v #1008 > >         )
00:01:15 v #1009 > >         |> FSharp.Control.AsyncSeq.concatSeq
00:01:15 v #1010 > >         |> FSharp.Control.AsyncSeq.mapAsyncParallel (fun (t, event) -> async {
00:01:15 v #1011 > >             match shouldReadContent event, event with
00:01:15 v #1012 > >             | true, FileSystemChange.Changed (path, _) ->
00:01:15 v #1013 > >                 do! Async.Sleep 5
00:01:15 v #1014 > >                 let! content = fullPath </> path |>
00:01:15 v #1015 > > SpiralFileSystem.read_all_text_retry_async
00:01:15 v #1016 > >                 return t, FileSystemChange.Changed (path, content)
00:01:15 v #1017 > >             | true, FileSystemChange.Created (path, _) ->
00:01:15 v #1018 > >                 do! Async.Sleep 5
00:01:15 v #1019 > >                 let! content = fullPath </> path |>
00:01:15 v #1020 > > SpiralFileSystem.read_all_text_retry_async
00:01:15 v #1021 > >                 return t, FileSystemChange.Created (path, content)
00:01:15 v #1022 > >             | true, FileSystemChange.Renamed (oldPath, (newPath, _)) ->
00:01:15 v #1023 > >                 let! content = fullPath </> newPath |>
00:01:15 v #1024 > > SpiralFileSystem.read_all_text_retry_async
00:01:15 v #1025 > >                 return t, FileSystemChange.Renamed (oldPath, (newPath, content))
00:01:15 v #1026 > >             | _ -> return t, event
00:01:15 v #1027 > >         })
00:01:15 v #1028 > >
00:01:15 v #1029 > >     let disposable =
00:01:15 v #1030 > >         new_disposable (fun () ->
00:01:15 v #1031 > >             trace Debug (fun () -> "FileSystem.watchWithFilter / Disposing watch
00:01:15 v #1032 > > stream") _locals
00:01:15 v #1033 > >             watcher.EnableRaisingEvents <- false
00:01:15 v #1034 > >             watcher.Dispose ()
00:01:15 v #1035 > >         )
00:01:15 v #1036 > >
00:01:15 v #1037 > >     stream, disposable
00:01:15 v #1038 > >
00:01:15 v #1039 > > let inline watchDirectory path =
00:01:15 v #1040 > >     watchDirectoryWithFilter
00:01:15 v #1041 > >         (System.IO.NotifyFilters.FileName
00:01:15 v #1042 > >         // ||| System.IO.NotifyFilters.DirectoryName
00:01:15 v #1043 > >         // ||| System.IO.NotifyFilters.Attributes
00:01:15 v #1044 > >         //// ||| System.IO.NotifyFilters.Size
00:01:15 v #1045 > >         ||| System.IO.NotifyFilters.LastWrite
00:01:15 v #1046 > >         //// ||| System.IO.NotifyFilters.LastAccess
00:01:15 v #1047 > >         // ||| System.IO.NotifyFilters.CreationTime
00:01:15 v #1048 > >         // ||| System.IO.NotifyFilters.Security
00:01:15 v #1049 > >         )
00:01:15 v #1050 > >         path
00:01:16 v #1051 > >
00:01:16 v #1052 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:16 v #1053 > > │ ### testEventsRaw (test)
00:01:16 v #1054 > >
00:01:16 v #1055 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:16 v #1056 > > //// test
00:01:16 v #1057 > >
00:01:16 v #1058 > > let inline testEventsRaw
00:01:16 v #1059 > >     (watchFn : (_ -> bool) -> string -> FSharp.Control.AsyncSeq<int64 *
00:01:16 v #1060 > > FileSystemChange> * IDisposable)
00:01:16 v #1061 > >     write
00:01:16 v #1062 > >     =
00:01:16 v #1063 > >     let struct (tempDir, tempDisposable) =
00:01:16 v #1064 > >         "FileSystem.testEventsRaw"
00:01:16 v #1065 > >         |> SpiralCrypto.hash_text
00:01:16 v #1066 > >         |> SpiralFileSystem.create_temp_dir'
00:01:16 v #1067 > >     let stream, disposable = watchFn (fun _ -> true) tempDir
00:01:16 v #1068 > >
00:01:16 v #1069 > >     let events = System.Collections.Concurrent.ConcurrentBag ()
00:01:16 v #1070 > >
00:01:16 v #1071 > >     let inline iter () =
00:01:16 v #1072 > >         stream
00:01:16 v #1073 > >         |> FSharp.Control.AsyncSeq.iterAsyncParallel (fun event -> async {
00:01:16 v #1074 > > events.Add event })
00:01:16 v #1075 > >
00:01:16 v #1076 > >     let run = async {
00:01:16 v #1077 > >         let! _ = iter () |> Async.StartChild
00:01:16 v #1078 > >         do! Async.Sleep 250
00:01:16 v #1079 > >         return! write tempDir
00:01:16 v #1080 > >     }
00:01:16 v #1081 > >
00:01:16 v #1082 > >     try
00:01:16 v #1083 > >         run
00:01:16 v #1084 > >         |> Async.runWithTimeout 60000
00:01:16 v #1085 > >         |> _assertEqual (Some ())
00:01:16 v #1086 > >     finally
00:01:16 v #1087 > >         disposable.Dispose ()
00:01:16 v #1088 > >         tempDisposable.Dispose ()
00:01:16 v #1089 > >
00:01:16 v #1090 > >     let eventsLog =
00:01:16 v #1091 > >         events
00:01:16 v #1092 > >         |> Seq.toList
00:01:16 v #1093 > >         |> List.sortBy fst
00:01:16 v #1094 > >         |> List.fold
00:01:16 v #1095 > >             (fun (prev, acc) (ticks, event) ->
00:01:16 v #1096 > >                 ticks, (ticks, (if prev = 0L then 0L else ticks - prev), event)
00:01:16 v #1097 > > :: acc
00:01:16 v #1098 > >             )
00:01:16 v #1099 > >             (0L, [[]])
00:01:16 v #1100 > >         |> snd
00:01:16 v #1101 > >         |> List.rev
00:01:16 v #1102 > >         |> List.map (fun (diff, n, event) -> $"{n} / {diff} / {event}" |>
00:01:16 v #1103 > > SpiralSm.ellipsis_end 100L)
00:01:16 v #1104 > >         |> SpiralSm.concat "\n"
00:01:16 v #1105 > >     let _locals () = $"eventsLog: \n{eventsLog} / {_locals ()}"
00:01:16 v #1106 > >     trace Debug (fun () -> "FileSystem.testEventsRaw") _locals
00:01:16 v #1107 > >
00:01:16 v #1108 > >     events
00:01:16 v #1109 > >     |> Seq.toList
00:01:16 v #1110 > >     |> List.sortBy fst
00:01:16 v #1111 > >     |> List.map snd
00:01:16 v #1112 > >     |> List.fold
00:01:16 v #1113 > >         (fun acc event ->
00:01:16 v #1114 > >             match acc, event with
00:01:16 v #1115 > >             | FileSystemChange.Changed (lastPath, Some lastContent) as lastEvent
00:01:16 v #1116 > > :: acc,
00:01:16 v #1117 > >                 FileSystemChange.Changed (path, Some content)
00:01:16 v #1118 > >                 when lastPath = path && content |> SpiralSm.starts_with
00:01:16 v #1119 > > lastContent
00:01:16 v #1120 > >                 ->
00:01:16 v #1121 > >                 event :: acc
00:01:16 v #1122 > >             | _ -> event :: acc
00:01:16 v #1123 > >         )
00:01:16 v #1124 > >         [[]]
00:01:16 v #1125 > >     |> List.rev
00:01:16 v #1126 > >
00:01:16 v #1127 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:16 v #1128 > > │ #### fast (test)
00:01:16 v #1129 > >
00:01:16 v #1130 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:16 v #1131 > > //// test
00:01:16 v #1132 > >
00:01:16 v #1133 > > let inline write path = async {
00:01:16 v #1134 > >     let n = 2
00:01:16 v #1135 > >
00:01:16 v #1136 > >     for i = 1 to n do
00:01:16 v #1137 > >         do! $"a{i}" |> SpiralFileSystem.write_all_text_async (path </>
00:01:16 v #1138 > > $"file{i}.txt")
00:01:16 v #1139 > >
00:01:16 v #1140 > >     do! Async.Sleep 250
00:01:16 v #1141 > >
00:01:16 v #1142 > >     for i = 1 to n do
00:01:16 v #1143 > >         do! $"b{i}" |> SpiralFileSystem.write_all_text_async (path </>
00:01:16 v #1144 > > $"file{i}.txt")
00:01:16 v #1145 > >
00:01:16 v #1146 > >     do! Async.Sleep 250
00:01:16 v #1147 > >
00:01:16 v #1148 > >     for i = 1 to n do
00:01:16 v #1149 > >         do! path </> $"file{i}.txt" |> SpiralFileSystem.move_file_async (path
00:01:16 v #1150 > > </> $"file_{i}.txt") |> Async.Ignore
00:01:16 v #1151 > >
00:01:16 v #1152 > >     do! Async.Sleep 250
00:01:16 v #1153 > >
00:01:16 v #1154 > >     for i = 1 to n do
00:01:16 v #1155 > >         do! $"c{i}" |> SpiralFileSystem.write_all_text_async (path </>
00:01:16 v #1156 > > $"file_{i}.txt")
00:01:16 v #1157 > >
00:01:16 v #1158 > >     do! Async.Sleep 250
00:01:16 v #1159 > >
00:01:16 v #1160 > >     for i = 1 to n do
00:01:16 v #1161 > >         do! SpiralFileSystem.delete_file_async (path </> $"file_{i}.txt") |>
00:01:16 v #1162 > > Async.Ignore
00:01:16 v #1163 > >
00:01:16 v #1164 > >     do! Async.Sleep 250
00:01:16 v #1165 > > }
00:01:16 v #1166 > >
00:01:16 v #1167 > > let inline run () =
00:01:16 v #1168 > >     let events = testEventsRaw watchDirectory write
00:01:16 v #1169 > >
00:01:16 v #1170 > >     events
00:01:16 v #1171 > >     |> _sequenceEqual [[
00:01:16 v #1172 > >         FileSystemChange.Created ("file1.txt", Some "a1")
00:01:16 v #1173 > >         FileSystemChange.Changed ("file1.txt", Some "a1")
00:01:16 v #1174 > >         FileSystemChange.Created ("file2.txt", Some "a2")
00:01:16 v #1175 > >         FileSystemChange.Changed ("file2.txt", Some "a2")
00:01:16 v #1176 > >
00:01:16 v #1177 > >         FileSystemChange.Changed ("file1.txt", Some "b1")
00:01:16 v #1178 > >         FileSystemChange.Changed ("file2.txt", Some "b2")
00:01:16 v #1179 > >
00:01:16 v #1180 > >         FileSystemChange.Renamed ("file1.txt", ("file_1.txt", Some "b1"))
00:01:16 v #1181 > >         FileSystemChange.Renamed ("file2.txt", ("file_2.txt", Some "b2"))
00:01:16 v #1182 > >
00:01:16 v #1183 > >         FileSystemChange.Changed ("file_1.txt", Some "c1")
00:01:16 v #1184 > >         FileSystemChange.Changed ("file_2.txt", Some "c2")
00:01:16 v #1185 > >
00:01:16 v #1186 > >         FileSystemChange.Deleted "file_1.txt"
00:01:16 v #1187 > >         FileSystemChange.Deleted "file_2.txt"
00:01:16 v #1188 > >     ]]
00:01:16 v #1189 > >
00:01:16 v #1190 > > run
00:01:16 v #1191 > > |> retry_fn 3
00:01:16 v #1192 > > |> _assertEqual (Some ())
00:01:18 v #1193 > >
00:01:18 v #1194 > > ── [ 2.50s - stdout ] ──────────────────────────────────────────────────────────
00:01:18 v #1195 > > │ Some ()
00:01:18 v #1196 > > │
00:01:18 v #1197 > > │ 00:00:04 d #1 FileSystem.watchWithFilter / Disposing
00:01:18 v #1198 > > watch stream / filter: FileName, LastWrite
00:01:18 v #1199 > > │ 00:00:04 d #2 FileSystem.testEventsRaw / eventsLog:
00:01:18 v #1200 > > │ 0 / 638724022562983555 / Created ("file1.txt", Some "a1")
00:01:18 v #1201 > > │ 12113 / 638724022562995668 / Changed ("file1.txt", Some "a1")
00:01:18 v #1202 > > │ 2017 / 638724022562997685 / Created ("file2.txt", Some "a2")
00:01:18 v #1203 > > │ 45 / 638724022562997730 / Changed ("file2.txt", Some "a2")
00:01:18 v #1204 > > │ 2488125 / 638724022565485855 / Changed ("file1.txt", Some
00:01:18 v #1205 > > "b1")
00:01:18 v #1206 > > │ 761 / 638724022565486616 / Changed ("file1.txt", Some "b1")
00:01:18 v #1207 > > │ 4541 / 638724022565491157 / Changed ("file2.txt", Some "b2")
00:01:18 v #1208 > > │ 195 / 638724022565491352 / Changed ("file2.txt", Some "b2")
00:01:18 v #1209 > > │ 2551155 / 638724022568042507 / Renamed ("file1.txt",
00:01:18 v #1210 > > ("file_1.txt", Some "b1"))
00:01:18 v #1211 > > │ 7375 / 638724022568049882 / Renamed ("file2.txt",
00:01:18 v #1212 > > ("file_2.txt", Some "b2"))
00:01:18 v #1213 > > │ 2520606 / 638724022570570488 / Changed ("file_1.txt", Some
00:01:18 v #1214 > > "c1")
00:01:18 v #1215 > > │ 881 / 638724022570571369 / Changed ("file_1.txt", Some "c1")
00:01:18 v #1216 > > │ 4430 / 638724022570575799 / Changed ("file_2.txt", Some "c2")
00:01:18 v #1217 > > │ 265 / 638724022570576064 / Changed ("file_2.txt", Some "c2")
00:01:18 v #1218 > > │ 2528556 / 638724022573104620 / Deleted "file_1.txt"
00:01:18 v #1219 > > │ 935 / 638724022573105555 / Deleted "file_2.txt"
00:01:18 v #1220 > > │ [Created ("file1.txt", Some "a1"); Changed ("file1.txt", Some
00:01:18 v #1221 > > "a1"); Created ("file2.txt", Some "a2");
00:01:18 v #1222 > > │  Changed ("file2.txt", Some "a2"); Changed ("file1.txt", Some
00:01:18 v #1223 > > "b1"); Changed ("file2.txt", Some "b2");
00:01:18 v #1224 > > │  Renamed ("file1.txt", ("file_1.txt", Some "b1")); Renamed
00:01:18 v #1225 > > ("file2.txt", ("file_2.txt", Some "b2"));
00:01:18 v #1226 > > │  Changed ("file_1.txt", Some "c1"); Changed ("file_2.txt",
00:01:18 v #1227 > > Some "c2"); Deleted "file_1.txt"; Deleted "file_2.txt"]
00:01:18 v #1228 > > │
00:01:18 v #1229 > > │ Some ()
00:01:18 v #1230 > > │
00:01:18 v #1231 > > │
00:01:18 v #1232 > >
00:01:18 v #1233 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:18 v #1234 > > │ #### slow (test)
00:01:18 v #1235 > >
00:01:18 v #1236 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:18 v #1237 > > //// test
00:01:18 v #1238 > >
00:01:18 v #1239 > > let inline write path = async {
00:01:18 v #1240 > >     let n = 2
00:01:18 v #1241 > >
00:01:18 v #1242 > >     let contents =
00:01:18 v #1243 > >         [[ 1 .. n ]]
00:01:18 v #1244 > >         |> List.map (string >> String.replicate 1_000_000)
00:01:18 v #1245 > >
00:01:18 v #1246 > >     for i = 1 to n do
00:01:18 v #1247 > >         do! $"{contents.[[i - 1]]}a" |> SpiralFileSystem.write_all_text_async
00:01:18 v #1248 > > (path </> $"file{i}.txt")
00:01:18 v #1249 > >
00:01:18 v #1250 > >     do! Async.Sleep 1500
00:01:18 v #1251 > >
00:01:18 v #1252 > >     for i = 1 to n do
00:01:18 v #1253 > >         do! $"{contents.[[i - 1]]}b" |> SpiralFileSystem.write_all_text_async
00:01:18 v #1254 > > (path </> $"file{i}.txt")
00:01:18 v #1255 > >
00:01:18 v #1256 > >     do! Async.Sleep 1500
00:01:18 v #1257 > >
00:01:18 v #1258 > >     for i = 1 to n do
00:01:18 v #1259 > >         do! path </> $"file{i}.txt" |> SpiralFileSystem.move_file_async (path
00:01:18 v #1260 > > </> $"file_{i}.txt") |> Async.Ignore
00:01:18 v #1261 > >
00:01:18 v #1262 > >     do! Async.Sleep 1500
00:01:18 v #1263 > >
00:01:18 v #1264 > >     for i = 1 to n do
00:01:18 v #1265 > >         do! $"{contents.[[i - 1]]}c" |> SpiralFileSystem.write_all_text_async
00:01:18 v #1266 > > (path </> $"file_{i}.txt")
00:01:18 v #1267 > >
00:01:18 v #1268 > >     do! Async.Sleep 1500
00:01:18 v #1269 > >
00:01:18 v #1270 > >     for i = 1 to n do
00:01:18 v #1271 > >         do! SpiralFileSystem.delete_file_async (path </> $"file_{i}.txt") |>
00:01:18 v #1272 > > Async.Ignore
00:01:18 v #1273 > >
00:01:18 v #1274 > >     do! Async.Sleep 1500
00:01:18 v #1275 > > }
00:01:18 v #1276 > >
00:01:18 v #1277 > > let inline run () =
00:01:18 v #1278 > >     let events =
00:01:18 v #1279 > >         testEventsRaw watchDirectory write
00:01:18 v #1280 > >         |> List.map (function
00:01:18 v #1281 > >             | FileSystemChange.Changed (path, Some content) ->
00:01:18 v #1282 > >                 FileSystemChange.Changed (path, content |> Seq.distinct |>
00:01:18 v #1283 > > Seq.map string |> SpiralSm.concat "" |> Some)
00:01:18 v #1284 > >             | FileSystemChange.Created (path, Some content) ->
00:01:18 v #1285 > >                 FileSystemChange.Created (path, content |> Seq.distinct |>
00:01:18 v #1286 > > Seq.map string |> SpiralSm.concat "" |> Some)
00:01:18 v #1287 > >             | FileSystemChange.Renamed (oldPath, (newPath, Some content)) ->
00:01:18 v #1288 > >                 FileSystemChange.Renamed (
00:01:18 v #1289 > >                     oldPath,
00:01:18 v #1290 > >                     (newPath, content |> Seq.distinct |> Seq.map string |>
00:01:18 v #1291 > > SpiralSm.concat "" |> Some)
00:01:18 v #1292 > >                 )
00:01:18 v #1293 > >             | event -> event
00:01:18 v #1294 > >         )
00:01:18 v #1295 > >
00:01:18 v #1296 > >     events
00:01:18 v #1297 > >     |> _sequenceEqual [[
00:01:18 v #1298 > >         FileSystemChange.Created ("file1.txt", Some "1a")
00:01:18 v #1299 > >         FileSystemChange.Changed ("file1.txt", Some "1a")
00:01:18 v #1300 > >         FileSystemChange.Created ("file2.txt", Some "2a")
00:01:18 v #1301 > >         FileSystemChange.Changed ("file2.txt", Some "2a")
00:01:18 v #1302 > >
00:01:18 v #1303 > >         FileSystemChange.Changed ("file1.txt", Some "1b")
00:01:18 v #1304 > >         FileSystemChange.Changed ("file2.txt", Some "2b")
00:01:18 v #1305 > >
00:01:18 v #1306 > >         FileSystemChange.Renamed ("file1.txt", ("file_1.txt", Some "1b"))
00:01:18 v #1307 > >         FileSystemChange.Renamed ("file2.txt", ("file_2.txt", Some "2b"))
00:01:18 v #1308 > >
00:01:18 v #1309 > >         FileSystemChange.Changed ("file_1.txt", Some "1c")
00:01:18 v #1310 > >         FileSystemChange.Changed ("file_2.txt", Some "2c")
00:01:18 v #1311 > >
00:01:18 v #1312 > >         FileSystemChange.Deleted "file_1.txt"
00:01:18 v #1313 > >         FileSystemChange.Deleted "file_2.txt"
00:01:18 v #1314 > >     ]]
00:01:18 v #1315 > >
00:01:18 v #1316 > > run
00:01:18 v #1317 > > |> retry_fn 5
00:01:18 v #1318 > > |> _assertEqual (Some ())
00:01:29 v #1319 > >
00:01:29 v #1320 > > ── [ 10.31s - stdout ] ─────────────────────────────────────────────────────────
00:01:29 v #1321 > > │ Some ()
00:01:29 v #1322 > > │
00:01:29 v #1323 > > │ 00:00:12 d #3 FileSystem.watchWithFilter / Disposing
00:01:29 v #1324 > > watch stream / filter: FileName, LastWrite
00:01:29 v #1325 > > │ 00:00:14 d #4 FileSystem.testEventsRaw / eventsLog:
00:01:29 v #1326 > > │ 0 / 638724022589072923 / Created
00:01:29 v #1327 > > │   ("file1.txt",
00:01:29 v #1328 > > │  ...11111111111111111111111111111111111111111111111a")
00:01:29 v #1329 > > │ 2690 / 638724022589075613 / Changed
00:01:29 v #1330 > > │
00:01:29 v #1331 > > ("file1.txt"...11111111111111111111111111111111111111111111111a")
00:01:29 v #1332 > > │ 233 / 638724022589075846 / Changed
00:01:29 v #1333 > > │
00:01:29 v #1334 > > ("file1.txt",...11111111111111111111111111111111111111111111111a")
00:01:29 v #1335 > > │ 46 / 638724022589075892 / Changed
00:01:29 v #1336 > > │   ("file1.txt",
00:01:29 v #1337 > > │ ...11111111111111111111111111111111111111111111111a")
00:01:29 v #1338 > > │ 363 / 638724022589076255 / Changed
00:01:29 v #1339 > > │
00:01:29 v #1340 > > ("file1.txt",...11111111111111111111111111111111111111111111111a")
00:01:29 v #1341 > > │ 51 / 638724022589076306 / Changed
00:01:29 v #1342 > > │   ("file1.txt",
00:01:29 v #1343 > > │ ...11111111111111111111111111111111111111111111111a")
00:01:29 v #1344 > > │ 56 / 638724022589076362 / Changed
00:01:29 v #1345 > > │   ("file1.txt",
00:01:29 v #1346 > > │ ...11111111111111111111111111111111111111111111111a")
00:01:29 v #1347 > > │ 174 / 638724022589076536 / Changed
00:01:29 v #1348 > > │
00:01:29 v #1349 > > ("file1.txt",...11111111111111111111111111111111111111111111111a")
00:01:29 v #1350 > > │ 187 / 638724022589076723 / Changed
00:01:29 v #1351 > > │
00:01:29 v #1352 > > ("file1.txt",...11111111111111111111111111111111111111111111111a")
00:01:29 v #1353 > > │ 159 / 638724022589076882 / Changed
00:01:29 v #1354 > > │
00:01:29 v #1355 > > ("file1.txt",...11111111111111111111111111111111111111111111111a")
00:01:29 v #1356 > > │ 194 / 638724022589077076 / Changed
00:01:29 v #1357 > > │
00:01:29 v #1358 > > ("file1.txt",...11111111111111111111111111111111111111111111111a")
00:01:29 v #1359 > > │ 60 / 638724022589077136 / Changed
00:01:29 v #1360 > > │   ("file1.txt",
00:01:29 v #1361 > > │ ...11111111111111111111111111111111111111111111111a")
00:01:29 v #1362 > > │ 309 / 638724022589077445 / Changed
00:01:29 v #1363 > > │
00:01:29 v #1364 > > ("file1.txt",...11111111111111111111111111111111111111111111111a")
00:01:29 v #1365 > > │ 613 / 638724022589078058 / Changed
00:01:29 v #1366 > > │
00:01:29 v #1367 > > ("file1.txt",...11111111111111111111111111111111111111111111111a")
00:01:29 v #1368 > > │ 187 / 638724022589078245 / Changed
00:01:29 v #1369 > > │
00:01:29 v #1370 > > ("file1.txt",...11111111111111111111111111111111111111111111111a")
00:01:29 v #1371 > > │ 72 / 638724022589078317 / Changed
00:01:29 v #1372 > > │   ("file1.txt",
00:01:29 v #1373 > > │ ...11111111111111111111111111111111111111111111111a")
00:01:29 v #1374 > > │ 264 / 638724022589078581 / Changed
00:01:29 v #1375 > > │
00:01:29 v #1376 > > ("file1.txt",...11111111111111111111111111111111111111111111111a")
00:01:29 v #1377 > > │ 488 / 638724022589079069 / Changed
00:01:29 v #1378 > > │
00:01:29 v #1379 > > ("file1.txt",...11111111111111111111111111111111111111111111111a")
00:01:29 v #1380 > > │ 118 / 638724022589079187 / Changed
00:01:29 v #1381 > > │
00:01:29 v #1382 > > ("file1.txt",...11111111111111111111111111111111111111111111111a")
00:01:29 v #1383 > > │ 246 / 638724022589079433 / Changed
00:01:29 v #1384 > > │
00:01:29 v #1385 > > ("file1.txt",...11111111111111111111111111111111111111111111111a")
00:01:29 v #1386 > > │ 56 / 638724022589079489 / Changed
00:01:29 v #1387 > > │   ("file1.txt",
00:01:29 v #1388 > > │ ...11111111111111111111111111111111111111111111111a")
00:01:29 v #1389 > > │ 249 / 638724022589079738 / Changed
00:01:29 v #1390 > > │
00:01:29 v #1391 > > ("file1.txt",...11111111111111111111111111111111111111111111111a")
00:01:29 v #1392 > > │ 126 / 638724022589079864 / Changed
00:01:29 v #1393 > > │
00:01:29 v #1394 > > ("file1.txt",...11111111111111111111111111111111111111111111111a")
00:01:29 v #1395 > > │ 327 / 638724022589080191 / Changed
00:01:29 v #1396 > > │
00:01:29 v #1397 > > ("file1.txt",...11111111111111111111111111111111111111111111111a")
00:01:29 v #1398 > > │ 51 / 638724022589080242 / Changed
00:01:29 v #1399 > > │   ("file1.txt",
00:01:29 v #1400 > > │ ...11111111111111111111111111111111111111111111111a")
00:01:29 v #1401 > > │ 251 / 638724022589080493 / Changed
00:01:29 v #1402 > > │
00:01:29 v #1403 > > ("file1.txt",...11111111111111111111111111111111111111111111111a")
00:01:29 v #1404 > > │ 187 / 638724022589080680 / Changed
00:01:29 v #1405 > > │
00:01:29 v #1406 > > ("file1.txt",...11111111111111111111111111111111111111111111111a")
00:01:29 v #1407 > > │ 49 / 638724022589080729 / Changed
00:01:29 v #1408 > > │   ("file1.txt",
00:01:29 v #1409 > > │ ...11111111111111111111111111111111111111111111111a")
00:01:29 v #1410 > > │ 222 / 638724022589080951 / Changed
00:01:29 v #1411 > > │
00:01:29 v #1412 > > ("file1.txt",...11111111111111111111111111111111111111111111111a")
00:01:29 v #1413 > > │ 179 / 638724022589081130 / Changed
00:01:29 v #1414 > > │
00:01:29 v #1415 > > ("file1.txt",...11111111111111111111111111111111111111111111111a")
00:01:29 v #1416 > > │ 133 / 638724022589081263 / Changed
00:01:29 v #1417 > > │
00:01:29 v #1418 > > ("file1.txt",...11111111111111111111111111111111111111111111111a")
00:01:29 v #1419 > > │ 45 / 638724022589081308 / Changed
00:01:29 v #1420 > > │   ("file1.txt",
00:01:29 v #1421 > > │ ...11111111111111111111111111111111111111111111111a")
00:01:29 v #1422 > > │ 373 / 638724022589081681 / Changed
00:01:29 v #1423 > > │
00:01:29 v #1424 > > ("file1.txt",...11111111111111111111111111111111111111111111111a")
00:01:29 v #1425 > > │ 53 / 638724022589081734 / Changed
00:01:29 v #1426 > > │   ("file1.txt",
00:01:29 v #1427 > > │ ...11111111111111111111111111111111111111111111111a")
00:01:29 v #1428 > > │ 216 / 638724022589081950 / Changed
00:01:29 v #1429 > > │
00:01:29 v #1430 > > ("file1.txt",...11111111111111111111111111111111111111111111111a")
00:01:29 v #1431 > > │ 204 / 638724022589082154 / Changed
00:01:29 v #1432 > > │
00:01:29 v #1433 > > ("file1.txt",...11111111111111111111111111111111111111111111111a")
00:01:29 v #1434 > > │ 50 / 638724022589082204 / Changed
00:01:29 v #1435 > > │   ("file1.txt",
00:01:29 v #1436 > > │ ...11111111111111111111111111111111111111111111111a")
00:01:29 v #1437 > > │ 88 / 638724022589082292 / Changed
00:01:29 v #1438 > > │   ("file1.txt",
00:01:29 v #1439 > > │ ...11111111111111111111111111111111111111111111111a")
00:01:29 v #1440 > > │ 337 / 638724022589082629 / Changed
00:01:29 v #1441 > > │
00:01:29 v #1442 > > ("file1.txt",...11111111111111111111111111111111111111111111111a")
00:01:29 v #1443 > > │ 219 / 638724022589082848 / Changed
00:01:29 v #1444 > > │
00:01:29 v #1445 > > ("file1.txt",...11111111111111111111111111111111111111111111111a")
00:01:29 v #1446 > > │ 184 / 638724022589083032 / Changed
00:01:29 v #1447 > > │
00:01:29 v #1448 > > ("file1.txt",...11111111111111111111111111111111111111111111111a")
00:01:29 v #1449 > > │ 47 / 638724022589083079 / Changed
00:01:29 v #1450 > > │   ("file1.txt",
00:01:29 v #1451 > > │ ...11111111111111111111111111111111111111111111111a")
00:01:29 v #1452 > > │ 233 / 638724022589083312 / Changed
00:01:29 v #1453 > > │
00:01:29 v #1454 > > ("file1.txt",...11111111111111111111111111111111111111111111111a")
00:01:29 v #1455 > > │ 403 / 638724022589083715 / Changed
00:01:29 v #1456 > > │
00:01:29 v #1457 > > ("file1.txt",...11111111111111111111111111111111111111111111111a")
00:01:29 v #1458 > > │ 70 / 638724022589083785 / Changed
00:01:29 v #1459 > > │   ("file1.txt",
00:01:29 v #1460 > > │ ...11111111111111111111111111111111111111111111111a")
00:01:29 v #1461 > > │ 473 / 638724022589084258 / Changed
00:01:29 v #1462 > > │
00:01:29 v #1463 > > ("file1.txt",...11111111111111111111111111111111111111111111111a")
00:01:29 v #1464 > > │ 50 / 638724022589084308 / Changed
00:01:29 v #1465 > > │   ("file1.txt",
00:01:29 v #1466 > > │ ...11111111111111111111111111111111111111111111111a")
00:01:29 v #1467 > > │ 217 / 638724022589084525 / Changed
00:01:29 v #1468 > > │
00:01:29 v #1469 > > ("file1.txt",...11111111111111111111111111111111111111111111111a")
00:01:29 v #1470 > > │ 181 / 638724022589084706 / Changed
00:01:29 v #1471 > > │
00:01:29 v #1472 > > ("file1.txt",...11111111111111111111111111111111111111111111111a")
00:01:29 v #1473 > > │ 49 / 638724022589084755 / Changed
00:01:29 v #1474 > > │   ("file1.txt",
00:01:29 v #1475 > > │ ...11111111111111111111111111111111111111111111111a")
00:01:29 v #1476 > > │ 225 / 638724022589084980 / Changed
00:01:29 v #1477 > > │
00:01:29 v #1478 > > ("file1.txt",...11111111111111111111111111111111111111111111111a")
00:01:29 v #1479 > > │ 122 / 638724022589085102 / Changed
00:01:29 v #1480 > > │
00:01:29 v #1481 > > ("file1.txt",...11111111111111111111111111111111111111111111111a")
00:01:29 v #1482 > > │ 46 / 638724022589085148 / Changed
00:01:29 v #1483 > > │   ("file1.txt",
00:01:29 v #1484 > > │ ...11111111111111111111111111111111111111111111111a")
00:01:29 v #1485 > > │ 370 / 638724022589085518 / Changed
00:01:29 v #1486 > > │
00:01:29 v #1487 > > ("file1.txt",...11111111111111111111111111111111111111111111111a")
00:01:29 v #1488 > > │ 181 / 638724022589085699 / Changed
00:01:29 v #1489 > > │
00:01:29 v #1490 > > ("file1.txt",...11111111111111111111111111111111111111111111111a")
00:01:29 v #1491 > > │ 50 / 638724022589085749 / Changed
00:01:29 v #1492 > > │   ("file1.txt",
00:01:29 v #1493 > > │ ...11111111111111111111111111111111111111111111111a")
00:01:29 v #1494 > > │ 42 / 638724022589085791 / Changed
00:01:29 v #1495 > > │   ("file1.txt",
00:01:29 v #1496 > > │ ...11111111111111111111111111111111111111111111111a")
00:01:29 v #1497 > > │ 11271 / 638724022589097062 / Created
00:01:29 v #1498 > > │
00:01:29 v #1499 > > ("file2.txt...22222222222222222222222222222222222222222222222a")
00:01:29 v #1500 > > │ 121 / 638724022589097183 / Changed
00:01:29 v #1501 > > │
00:01:29 v #1502 > > ("file2.txt",...22222222222222222222222222222222222222222222222a")
00:01:29 v #1503 > > │ 11769 / 638724022589108952 / Changed
00:01:29 v #1504 > > │
00:01:29 v #1505 > > ("file2.txt...22222222222222222222222222222222222222222222222a")
00:01:29 v #1506 > > │ 137 / 638724022589109089 / Changed
00:01:29 v #1507 > > │
00:01:29 v #1508 > > ("file2.txt",...22222222222222222222222222222222222222222222222a")
00:01:29 v #1509 > > │ 51 / 638724022589109140 / Changed
00:01:29 v #1510 > > │   ("file2.txt",
00:01:29 v #1511 > > │ ...22222222222222222222222222222222222222222222222a")
00:01:29 v #1512 > > │ 228 / 638724022589109368 / Changed
00:01:29 v #1513 > > │
00:01:29 v #1514 > > ("file2.txt",...22222222222222222222222222222222222222222222222a")
00:01:29 v #1515 > > │ 57 / 638724022589109425 / Changed
00:01:29 v #1516 > > │   ("file2.txt",
00:01:29 v #1517 > > │ ...22222222222222222222222222222222222222222222222a")
00:01:29 v #1518 > > │ 479 / 638724022589109904 / Changed
00:01:29 v #1519 > > │
00:01:29 v #1520 > > ("file2.txt",...22222222222222222222222222222222222222222222222a")
00:01:29 v #1521 > > │ 63 / 638724022589109967 / Changed
00:01:29 v #1522 > > │   ("file2.txt",
00:01:29 v #1523 > > │ ...22222222222222222222222222222222222222222222222a")
00:01:29 v #1524 > > │ 294 / 638724022589110261 / Changed
00:01:29 v #1525 > > │
00:01:29 v #1526 > > ("file2.txt",...22222222222222222222222222222222222222222222222a")
00:01:29 v #1527 > > │ 58 / 638724022589110319 / Changed
00:01:29 v #1528 > > │   ("file2.txt",
00:01:29 v #1529 > > │ ...22222222222222222222222222222222222222222222222a")
00:01:29 v #1530 > > │ 45 / 638724022589110364 / Changed
00:01:29 v #1531 > > │   ("file2.txt",
00:01:29 v #1532 > > │ ...22222222222222222222222222222222222222222222222a")
00:01:29 v #1533 > > │ 192 / 638724022589110556 / Changed
00:01:29 v #1534 > > │
00:01:29 v #1535 > > ("file2.txt",...22222222222222222222222222222222222222222222222a")
00:01:29 v #1536 > > │ 52 / 638724022589110608 / Changed
00:01:29 v #1537 > > │   ("file2.txt",
00:01:29 v #1538 > > │ ...22222222222222222222222222222222222222222222222a")
00:01:29 v #1539 > > │ 235 / 638724022589110843 / Changed
00:01:29 v #1540 > > │
00:01:29 v #1541 > > ("file2.txt",...22222222222222222222222222222222222222222222222a")
00:01:29 v #1542 > > │ 53 / 638724022589110896 / Changed
00:01:29 v #1543 > > │   ("file2.txt",
00:01:29 v #1544 > > │ ...22222222222222222222222222222222222222222222222a")
00:01:29 v #1545 > > │ 191 / 638724022589111087 / Changed
00:01:29 v #1546 > > │
00:01:29 v #1547 > > ("file2.txt",...22222222222222222222222222222222222222222222222a")
00:01:29 v #1548 > > │ 149 / 638724022589111236 / Changed
00:01:29 v #1549 > > │
00:01:29 v #1550 > > ("file2.txt",...22222222222222222222222222222222222222222222222a")
00:01:29 v #1551 > > │ 49 / 638724022589111285 / Changed
00:01:29 v #1552 > > │   ("file2.txt",
00:01:29 v #1553 > > │ ...22222222222222222222222222222222222222222222222a")
00:01:29 v #1554 > > │ 139 / 638724022589111424 / Changed
00:01:29 v #1555 > > │
00:01:29 v #1556 > > ("file2.txt",...22222222222222222222222222222222222222222222222a")
00:01:29 v #1557 > > │ 122 / 638724022589111546 / Changed
00:01:29 v #1558 > > │
00:01:29 v #1559 > > ("file2.txt",...22222222222222222222222222222222222222222222222a")
00:01:29 v #1560 > > │ 127 / 638724022589111673 / Changed
00:01:29 v #1561 > > │
00:01:29 v #1562 > > ("file2.txt",...22222222222222222222222222222222222222222222222a")
00:01:29 v #1563 > > │ 181 / 638724022589111854 / Changed
00:01:29 v #1564 > > │
00:01:29 v #1565 > > ("file2.txt",...22222222222222222222222222222222222222222222222a")
00:01:29 v #1566 > > │ 123 / 638724022589111977 / Changed
00:01:29 v #1567 > > │
00:01:29 v #1568 > > ("file2.txt",...22222222222222222222222222222222222222222222222a")
00:01:29 v #1569 > > │ 169 / 638724022589112146 / Changed
00:01:29 v #1570 > > │
00:01:29 v #1571 > > ("file2.txt",...22222222222222222222222222222222222222222222222a")
00:01:29 v #1572 > > │ 121 / 638724022589112267 / Changed
00:01:29 v #1573 > > │
00:01:29 v #1574 > > ("file2.txt",...22222222222222222222222222222222222222222222222a")
00:01:29 v #1575 > > │ 130 / 638724022589112397 / Changed
00:01:29 v #1576 > > │
00:01:29 v #1577 > > ("file2.txt",...22222222222222222222222222222222222222222222222a")
00:01:29 v #1578 > > │ 207 / 638724022589112604 / Changed
00:01:29 v #1579 > > │
00:01:29 v #1580 > > ("file2.txt",...22222222222222222222222222222222222222222222222a")
00:01:29 v #1581 > > │ 124 / 638724022589112728 / Changed
00:01:29 v #1582 > > │
00:01:29 v #1583 > > ("file2.txt",...22222222222222222222222222222222222222222222222a")
00:01:29 v #1584 > > │ 196 / 638724022589112924 / Changed
00:01:29 v #1585 > > │
00:01:29 v #1586 > > ("file2.txt",...22222222222222222222222222222222222222222222222a")
00:01:29 v #1587 > > │ 54 / 638724022589112978 / Changed
00:01:29 v #1588 > > │   ("file2.txt",
00:01:29 v #1589 > > │ ...22222222222222222222222222222222222222222222222a")
00:01:29 v #1590 > > │ 197 / 638724022589113175 / Changed
00:01:29 v #1591 > > │
00:01:29 v #1592 > > ("file2.txt",...22222222222222222222222222222222222222222222222a")
00:01:29 v #1593 > > │ 356 / 638724022589113531 / Changed
00:01:29 v #1594 > > │
00:01:29 v #1595 > > ("file2.txt",...22222222222222222222222222222222222222222222222a")
00:01:29 v #1596 > > │ 15071800 / 638724022604185331 / Changed
00:01:29 v #1597 > > │
00:01:29 v #1598 > > ("file1....11111111111111111111111111111111111111111111111b")
00:01:29 v #1599 > > │ 372 / 638724022604185703 / Changed
00:01:29 v #1600 > > │
00:01:29 v #1601 > > ("file1.txt",...11111111111111111111111111111111111111111111111b")
00:01:29 v #1602 > > │ 464 / 638724022604186167 / Changed
00:01:29 v #1603 > > │
00:01:29 v #1604 > > ("file1.txt",...11111111111111111111111111111111111111111111111b")
00:01:29 v #1605 > > │ 3897 / 638724022604190064 / Changed
00:01:29 v #1606 > > │
00:01:29 v #1607 > > ("file1.txt"...11111111111111111111111111111111111111111111111b")
00:01:29 v #1608 > > │ 74 / 638724022604190138 / Changed
00:01:29 v #1609 > > │   ("file1.txt",
00:01:29 v #1610 > > │ ...11111111111111111111111111111111111111111111111b")
00:01:29 v #1611 > > │ 53 / 638724022604190191 / Changed
00:01:29 v #1612 > > │   ("file1.txt",
00:01:29 v #1613 > > │ ...11111111111111111111111111111111111111111111111b")
00:01:29 v #1614 > > │ 909 / 638724022604191100 / Changed
00:01:29 v #1615 > > │
00:01:29 v #1616 > > ("file1.txt",...11111111111111111111111111111111111111111111111b")
00:01:29 v #1617 > > │ 86 / 638724022604191186 / Changed
00:01:29 v #1618 > > │   ("file1.txt",
00:01:29 v #1619 > > │ ...11111111111111111111111111111111111111111111111b")
00:01:29 v #1620 > > │ 54 / 638724022604191240 / Changed
00:01:29 v #1621 > > │   ("file1.txt",
00:01:29 v #1622 > > │ ...11111111111111111111111111111111111111111111111b")
00:01:29 v #1623 > > │ 859 / 638724022604192099 / Changed
00:01:29 v #1624 > > │
00:01:29 v #1625 > > ("file1.txt",...11111111111111111111111111111111111111111111111b")
00:01:29 v #1626 > > │ 105 / 638724022604192204 / Changed
00:01:29 v #1627 > > │
00:01:29 v #1628 > > ("file1.txt",...11111111111111111111111111111111111111111111111b")
00:01:29 v #1629 > > │ 43 / 638724022604192247 / Changed
00:01:29 v #1630 > > │   ("file1.txt",
00:01:29 v #1631 > > │ ...11111111111111111111111111111111111111111111111b")
00:01:29 v #1632 > > │ 358 / 638724022604192605 / Changed
00:01:29 v #1633 > > │
00:01:29 v #1634 > > ("file1.txt",...11111111111111111111111111111111111111111111111b")
00:01:29 v #1635 > > │ 123 / 638724022604192728 / Changed
00:01:29 v #1636 > > │
00:01:29 v #1637 > > ("file1.txt",...11111111111111111111111111111111111111111111111b")
00:01:29 v #1638 > > │ 217 / 638724022604192945 / Changed
00:01:29 v #1639 > > │
00:01:29 v #1640 > > ("file1.txt",...11111111111111111111111111111111111111111111111b")
00:01:29 v #1641 > > │ 214 / 638724022604193159 / Changed
00:01:29 v #1642 > > │
00:01:29 v #1643 > > ("file1.txt",...11111111111111111111111111111111111111111111111b")
00:01:29 v #1644 > > │ 63 / 638724022604193222 / Changed
00:01:29 v #1645 > > │   ("file1.txt",
00:01:29 v #1646 > > │ ...11111111111111111111111111111111111111111111111b")
00:01:29 v #1647 > > │ 200 / 638724022604193422 / Changed
00:01:29 v #1648 > > │
00:01:29 v #1649 > > ("file1.txt",...11111111111111111111111111111111111111111111111b")
00:01:29 v #1650 > > │ 51 / 638724022604193473 / Changed
00:01:29 v #1651 > > │   ("file1.txt",
00:01:29 v #1652 > > │ ...11111111111111111111111111111111111111111111111b")
00:01:29 v #1653 > > │ 200 / 638724022604193673 / Changed
00:01:29 v #1654 > > │
00:01:29 v #1655 > > ("file1.txt",...11111111111111111111111111111111111111111111111b")
00:01:29 v #1656 > > │ 52 / 638724022604193725 / Changed
00:01:29 v #1657 > > │   ("file1.txt",
00:01:29 v #1658 > > │ ...11111111111111111111111111111111111111111111111b")
00:01:29 v #1659 > > │ 168 / 638724022604193893 / Changed
00:01:29 v #1660 > > │
00:01:29 v #1661 > > ("file1.txt",...11111111111111111111111111111111111111111111111b")
00:01:29 v #1662 > > │ 227 / 638724022604194120 / Changed
00:01:29 v #1663 > > │
00:01:29 v #1664 > > ("file1.txt",...11111111111111111111111111111111111111111111111b")
00:01:29 v #1665 > > │ 231 / 638724022604194351 / Changed
00:01:29 v #1666 > > │
00:01:29 v #1667 > > ("file1.txt",...11111111111111111111111111111111111111111111111b")
00:01:29 v #1668 > > │ 58 / 638724022604194409 / Changed
00:01:29 v #1669 > > │   ("file1.txt",
00:01:29 v #1670 > > │ ...11111111111111111111111111111111111111111111111b")
00:01:29 v #1671 > > │ 174 / 638724022604194583 / Changed
00:01:29 v #1672 > > │
00:01:29 v #1673 > > ("file1.txt",...11111111111111111111111111111111111111111111111b")
00:01:29 v #1674 > > │ 52 / 638724022604194635 / Changed
00:01:29 v #1675 > > │   ("file1.txt",
00:01:29 v #1676 > > │ ...11111111111111111111111111111111111111111111111b")
00:01:29 v #1677 > > │ 216 / 638724022604194851 / Changed
00:01:29 v #1678 > > │
00:01:29 v #1679 > > ("file1.txt",...11111111111111111111111111111111111111111111111b")
00:01:29 v #1680 > > │ 55 / 638724022604194906 / Changed
00:01:29 v #1681 > > │   ("file1.txt",
00:01:29 v #1682 > > │ ...11111111111111111111111111111111111111111111111b")
00:01:29 v #1683 > > │ 292 / 638724022604195198 / Changed
00:01:29 v #1684 > > │
00:01:29 v #1685 > > ("file1.txt",...11111111111111111111111111111111111111111111111b")
00:01:29 v #1686 > > │ 100 / 638724022604195298 / Changed
00:01:29 v #1687 > > │
00:01:29 v #1688 > > ("file1.txt",...11111111111111111111111111111111111111111111111b")
00:01:29 v #1689 > > │ 205 / 638724022604195503 / Changed
00:01:29 v #1690 > > │
00:01:29 v #1691 > > ("file1.txt",...11111111111111111111111111111111111111111111111b")
00:01:29 v #1692 > > │ 56 / 638724022604195559 / Changed
00:01:29 v #1693 > > │   ("file1.txt",
00:01:29 v #1694 > > │ ...11111111111111111111111111111111111111111111111b")
00:01:29 v #1695 > > │ 175 / 638724022604195734 / Changed
00:01:29 v #1696 > > │
00:01:29 v #1697 > > ("file1.txt",...11111111111111111111111111111111111111111111111b")
00:01:29 v #1698 > > │ 208 / 638724022604195942 / Changed
00:01:29 v #1699 > > │
00:01:29 v #1700 > > ("file1.txt",...11111111111111111111111111111111111111111111111b")
00:01:29 v #1701 > > │ 53 / 638724022604195995 / Changed
00:01:29 v #1702 > > │   ("file1.txt",
00:01:29 v #1703 > > │ ...11111111111111111111111111111111111111111111111b")
00:01:29 v #1704 > > │ 187 / 638724022604196182 / Changed
00:01:29 v #1705 > > │
00:01:29 v #1706 > > ("file1.txt",...11111111111111111111111111111111111111111111111b")
00:01:29 v #1707 > > │ 51 / 638724022604196233 / Changed
00:01:29 v #1708 > > │   ("file1.txt",
00:01:29 v #1709 > > │ ...11111111111111111111111111111111111111111111111b")
00:01:29 v #1710 > > │ 196 / 638724022604196429 / Changed
00:01:29 v #1711 > > │
00:01:29 v #1712 > > ("file1.txt",...11111111111111111111111111111111111111111111111b")
00:01:29 v #1713 > > │ 70 / 638724022604196499 / Changed
00:01:29 v #1714 > > │   ("file1.txt",
00:01:29 v #1715 > > │ ...11111111111111111111111111111111111111111111111b")
00:01:29 v #1716 > > │ 158 / 638724022604196657 / Changed
00:01:29 v #1717 > > │
00:01:29 v #1718 > > ("file1.txt",...11111111111111111111111111111111111111111111111b")
00:01:29 v #1719 > > │ 46 / 638724022604196703 / Changed
00:01:29 v #1720 > > │   ("file1.txt",
00:01:29 v #1721 > > │ ...11111111111111111111111111111111111111111111111b")
00:01:29 v #1722 > > │ 648 / 638724022604197351 / Changed
00:01:29 v #1723 > > │
00:01:29 v #1724 > > ("file1.txt",...11111111111111111111111111111111111111111111111b")
00:01:29 v #1725 > > │ 62 / 638724022604197413 / Changed
00:01:29 v #1726 > > │   ("file1.txt",
00:01:29 v #1727 > > │ ...11111111111111111111111111111111111111111111111b")
00:01:29 v #1728 > > │ 45 / 638724022604197458 / Changed
00:01:29 v #1729 > > │   ("file1.txt",
00:01:29 v #1730 > > │ ...11111111111111111111111111111111111111111111111b")
00:01:29 v #1731 > > │ 3596 / 638724022604201054 / Changed
00:01:29 v #1732 > > │
00:01:29 v #1733 > > ("file1.txt"...11111111111111111111111111111111111111111111111b")
00:01:29 v #1734 > > │ 121 / 638724022604201175 / Changed
00:01:29 v #1735 > > │
00:01:29 v #1736 > > ("file1.txt",...11111111111111111111111111111111111111111111111b")
00:01:29 v #1737 > > │ 36774 / 638724022604237949 / Changed
00:01:29 v #1738 > > │
00:01:29 v #1739 > > ("file2.txt...22222222222222222222222222222222222222222222222b")
00:01:29 v #1740 > > │ 187 / 638724022604238136 / Changed
00:01:29 v #1741 > > │
00:01:29 v #1742 > > ("file2.txt",...22222222222222222222222222222222222222222222222b")
00:01:29 v #1743 > > │ 390 / 638724022604238526 / Changed
00:01:29 v #1744 > > │
00:01:29 v #1745 > > ("file2.txt",...22222222222222222222222222222222222222222222222b")
00:01:29 v #1746 > > │ 644 / 638724022604239170 / Changed
00:01:29 v #1747 > > │
00:01:29 v #1748 > > ("file2.txt",...22222222222222222222222222222222222222222222222b")
00:01:29 v #1749 > > │ 80 / 638724022604239250 / Changed
00:01:29 v #1750 > > │   ("file2.txt",
00:01:29 v #1751 > > │ ...22222222222222222222222222222222222222222222222b")
00:01:29 v #1752 > > │ 44 / 638724022604239294 / Changed
00:01:29 v #1753 > > │   ("file2.txt",
00:01:29 v #1754 > > │ ...22222222222222222222222222222222222222222222222b")
00:01:29 v #1755 > > │ 209 / 638724022604239503 / Changed
00:01:29 v #1756 > > │
00:01:29 v #1757 > > ("file2.txt",...22222222222222222222222222222222222222222222222b")
00:01:29 v #1758 > > │ 64 / 638724022604239567 / Changed
00:01:29 v #1759 > > │   ("file2.txt",
00:01:29 v #1760 > > │ ...22222222222222222222222222222222222222222222222b")
00:01:29 v #1761 > > │ 181 / 638724022604239748 / Changed
00:01:29 v #1762 > > │
00:01:29 v #1763 > > ("file2.txt",...22222222222222222222222222222222222222222222222b")
00:01:29 v #1764 > > │ 174 / 638724022604239922 / Changed
00:01:29 v #1765 > > │
00:01:29 v #1766 > > ("file2.txt",...22222222222222222222222222222222222222222222222b")
00:01:29 v #1767 > > │ 384 / 638724022604240306 / Changed
00:01:29 v #1768 > > │
00:01:29 v #1769 > > ("file2.txt",...22222222222222222222222222222222222222222222222b")
00:01:29 v #1770 > > │ 61 / 638724022604240367 / Changed
00:01:29 v #1771 > > │   ("file2.txt",
00:01:29 v #1772 > > │ ...22222222222222222222222222222222222222222222222b")
00:01:29 v #1773 > > │ 2660 / 638724022604243027 / Changed
00:01:29 v #1774 > > │
00:01:29 v #1775 > > ("file2.txt"...22222222222222222222222222222222222222222222222b")
00:01:29 v #1776 > > │ 112 / 638724022604243139 / Changed
00:01:29 v #1777 > > │
00:01:29 v #1778 > > ("file2.txt",...22222222222222222222222222222222222222222222222b")
00:01:29 v #1779 > > │ 336 / 638724022604243475 / Changed
00:01:29 v #1780 > > │
00:01:29 v #1781 > > ("file2.txt",...22222222222222222222222222222222222222222222222b")
00:01:29 v #1782 > > │ 74 / 638724022604243549 / Changed
00:01:29 v #1783 > > │   ("file2.txt",
00:01:29 v #1784 > > │ ...22222222222222222222222222222222222222222222222b")
00:01:29 v #1785 > > │ 135 / 638724022604243684 / Changed
00:01:29 v #1786 > > │
00:01:29 v #1787 > > ("file2.txt",...22222222222222222222222222222222222222222222222b")
00:01:29 v #1788 > > │ 202 / 638724022604243886 / Changed
00:01:29 v #1789 > > │
00:01:29 v #1790 > > ("file2.txt",...22222222222222222222222222222222222222222222222b")
00:01:29 v #1791 > > │ 44 / 638724022604243930 / Changed
00:01:29 v #1792 > > │   ("file2.txt",
00:01:29 v #1793 > > │ ...22222222222222222222222222222222222222222222222b")
00:01:29 v #1794 > > │ 225 / 638724022604244155 / Changed
00:01:29 v #1795 > > │
00:01:29 v #1796 > > ("file2.txt",...22222222222222222222222222222222222222222222222b")
00:01:29 v #1797 > > │ 117 / 638724022604244272 / Changed
00:01:29 v #1798 > > │
00:01:29 v #1799 > > ("file2.txt",...22222222222222222222222222222222222222222222222b")
00:01:29 v #1800 > > │ 235 / 638724022604244507 / Changed
00:01:29 v #1801 > > │
00:01:29 v #1802 > > ("file2.txt",...22222222222222222222222222222222222222222222222b")
00:01:29 v #1803 > > │ 399 / 638724022604244906 / Changed
00:01:29 v #1804 > > │
00:01:29 v #1805 > > ("file2.txt",...22222222222222222222222222222222222222222222222b")
00:01:29 v #1806 > > │ 209 / 638724022604245115 / Changed
00:01:29 v #1807 > > │
00:01:29 v #1808 > > ("file2.txt",...22222222222222222222222222222222222222222222222b")
00:01:29 v #1809 > > │ 160 / 638724022604245275 / Changed
00:01:29 v #1810 > > │
00:01:29 v #1811 > > ("file2.txt",...22222222222222222222222222222222222222222222222b")
00:01:29 v #1812 > > │ 40 / 638724022604245315 / Changed
00:01:29 v #1813 > > │   ("file2.txt",
00:01:29 v #1814 > > │ ...22222222222222222222222222222222222222222222222b")
00:01:29 v #1815 > > │ 328 / 638724022604245643 / Changed
00:01:29 v #1816 > > │
00:01:29 v #1817 > > ("file2.txt",...22222222222222222222222222222222222222222222222b")
00:01:29 v #1818 > > │ 46 / 638724022604245689 / Changed
00:01:29 v #1819 > > │   ("file2.txt",
00:01:29 v #1820 > > │ ...22222222222222222222222222222222222222222222222b")
00:01:29 v #1821 > > │ 456 / 638724022604246145 / Changed
00:01:29 v #1822 > > │
00:01:29 v #1823 > > ("file2.txt",...22222222222222222222222222222222222222222222222b")
00:01:29 v #1824 > > │ 52 / 638724022604246197 / Changed
00:01:29 v #1825 > > │   ("file2.txt",
00:01:29 v #1826 > > │ ...22222222222222222222222222222222222222222222222b")
00:01:29 v #1827 > > │ 297 / 638724022604246494 / Changed
00:01:29 v #1828 > > │
00:01:29 v #1829 > > ("file2.txt",...22222222222222222222222222222222222222222222222b")
00:01:29 v #1830 > > │ 29 / 638724022604246523 / Changed
00:01:29 v #1831 > > │   ("file2.txt",
00:01:29 v #1832 > > │ ...22222222222222222222222222222222222222222222222b")
00:01:29 v #1833 > > │ 258 / 638724022604246781 / Changed
00:01:29 v #1834 > > │
00:01:29 v #1835 > > ("file2.txt",...22222222222222222222222222222222222222222222222b")
00:01:29 v #1836 > > │ 44 / 638724022604246825 / Changed
00:01:29 v #1837 > > │   ("file2.txt",
00:01:29 v #1838 > > │ ...22222222222222222222222222222222222222222222222b")
00:01:29 v #1839 > > │ 323 / 638724022604247148 / Changed
00:01:29 v #1840 > > │
00:01:29 v #1841 > > ("file2.txt",...22222222222222222222222222222222222222222222222b")
00:01:29 v #1842 > > │ 28 / 638724022604247176 / Changed
00:01:29 v #1843 > > │   ("file2.txt",
00:01:29 v #1844 > > │ ...22222222222222222222222222222222222222222222222b")
00:01:29 v #1845 > > │ 339 / 638724022604247515 / Changed
00:01:29 v #1846 > > │
00:01:29 v #1847 > > ("file2.txt",...22222222222222222222222222222222222222222222222b")
00:01:29 v #1848 > > │ 52 / 638724022604247567 / Changed
00:01:29 v #1849 > > │   ("file2.txt",
00:01:29 v #1850 > > │ ...22222222222222222222222222222222222222222222222b")
00:01:29 v #1851 > > │ 694 / 638724022604248261 / Changed
00:01:29 v #1852 > > │
00:01:29 v #1853 > > ("file2.txt",...22222222222222222222222222222222222222222222222b")
00:01:29 v #1854 > > │ 55 / 638724022604248316 / Changed
00:01:29 v #1855 > > │   ("file2.txt",
00:01:29 v #1856 > > │ ...22222222222222222222222222222222222222222222222b")
00:01:29 v #1857 > > │ 237 / 638724022604248553 / Changed
00:01:29 v #1858 > > │
00:01:29 v #1859 > > ("file2.txt",...22222222222222222222222222222222222222222222222b")
00:01:29 v #1860 > > │ 129 / 638724022604248682 / Changed
00:01:29 v #1861 > > │
00:01:29 v #1862 > > ("file2.txt",...22222222222222222222222222222222222222222222222b")
00:01:29 v #1863 > > │ 50819 / 638724022604299501 / Changed
00:01:29 v #1864 > > │
00:01:29 v #1865 > > ("file2.txt...22222222222222222222222222222222222222222222222b")
00:01:29 v #1866 > > │ 14987611 / 638724022619287112 / Renamed
00:01:29 v #1867 > > │
00:01:29 v #1868 > > ("file1....1111111111111111111111111111111111111111111111b"))
00:01:29 v #1869 > > │ 405 / 638724022619287517 / Renamed
00:01:29 v #1870 > > │
00:01:29 v #1871 > > ("file2.txt",...2222222222222222222222222222222222222222222222b"))
00:01:29 v #1872 > > │ 15055668 / 638724022634343185 / Changed
00:01:29 v #1873 > > │
00:01:29 v #1874 > > ("file_1...11111111111111111111111111111111111111111111111c")
00:01:29 v #1875 > > │ 377 / 638724022634343562 / Changed
00:01:29 v #1876 > > │
00:01:29 v #1877 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c")
00:01:29 v #1878 > > │ 760 / 638724022634344322 / Changed
00:01:29 v #1879 > > │
00:01:29 v #1880 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c")
00:01:29 v #1881 > > │ 346 / 638724022634344668 / Changed
00:01:29 v #1882 > > │
00:01:29 v #1883 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c")
00:01:29 v #1884 > > │ 91 / 638724022634344759 / Changed
00:01:29 v #1885 > > │
00:01:29 v #1886 > > ("file_1.txt",...11111111111111111111111111111111111111111111111c")
00:01:29 v #1887 > > │ 1725 / 638724022634346484 / Changed
00:01:29 v #1888 > > │
00:01:29 v #1889 > > ("file_1.txt...11111111111111111111111111111111111111111111111c")
00:01:29 v #1890 > > │ 118 / 638724022634346602 / Changed
00:01:29 v #1891 > > │
00:01:29 v #1892 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c")
00:01:29 v #1893 > > │ 51 / 638724022634346653 / Changed
00:01:29 v #1894 > > │
00:01:29 v #1895 > > ("file_1.txt",...11111111111111111111111111111111111111111111111c")
00:01:29 v #1896 > > │ 217 / 638724022634346870 / Changed
00:01:29 v #1897 > > │
00:01:29 v #1898 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c")
00:01:29 v #1899 > > │ 400 / 638724022634347270 / Changed
00:01:29 v #1900 > > │
00:01:29 v #1901 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c")
00:01:29 v #1902 > > │ 61 / 638724022634347331 / Changed
00:01:29 v #1903 > > │
00:01:29 v #1904 > > ("file_1.txt",...11111111111111111111111111111111111111111111111c")
00:01:29 v #1905 > > │ 151 / 638724022634347482 / Changed
00:01:29 v #1906 > > │
00:01:29 v #1907 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c")
00:01:29 v #1908 > > │ 45 / 638724022634347527 / Changed
00:01:29 v #1909 > > │
00:01:29 v #1910 > > ("file_1.txt",...11111111111111111111111111111111111111111111111c")
00:01:29 v #1911 > > │ 178 / 638724022634347705 / Changed
00:01:29 v #1912 > > │
00:01:29 v #1913 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c")
00:01:29 v #1914 > > │ 175 / 638724022634347880 / Changed
00:01:29 v #1915 > > │
00:01:29 v #1916 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c")
00:01:29 v #1917 > > │ 160 / 638724022634348040 / Changed
00:01:29 v #1918 > > │
00:01:29 v #1919 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c")
00:01:29 v #1920 > > │ 133 / 638724022634348173 / Changed
00:01:29 v #1921 > > │
00:01:29 v #1922 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c")
00:01:29 v #1923 > > │ 157 / 638724022634348330 / Changed
00:01:29 v #1924 > > │
00:01:29 v #1925 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c")
00:01:29 v #1926 > > │ 43 / 638724022634348373 / Changed
00:01:29 v #1927 > > │
00:01:29 v #1928 > > ("file_1.txt",...11111111111111111111111111111111111111111111111c")
00:01:29 v #1929 > > │ 823 / 638724022634349196 / Changed
00:01:29 v #1930 > > │
00:01:29 v #1931 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c")
00:01:29 v #1932 > > │ 111 / 638724022634349307 / Changed
00:01:29 v #1933 > > │
00:01:29 v #1934 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c")
00:01:29 v #1935 > > │ 287 / 638724022634349594 / Changed
00:01:29 v #1936 > > │
00:01:29 v #1937 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c")
00:01:29 v #1938 > > │ 173 / 638724022634349767 / Changed
00:01:29 v #1939 > > │
00:01:29 v #1940 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c")
00:01:29 v #1941 > > │ 406 / 638724022634350173 / Changed
00:01:29 v #1942 > > │
00:01:29 v #1943 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c")
00:01:29 v #1944 > > │ 83 / 638724022634350256 / Changed
00:01:29 v #1945 > > │
00:01:29 v #1946 > > ("file_1.txt",...11111111111111111111111111111111111111111111111c")
00:01:29 v #1947 > > │ 342 / 638724022634350598 / Changed
00:01:29 v #1948 > > │
00:01:29 v #1949 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c")
00:01:29 v #1950 > > │ 261 / 638724022634350859 / Changed
00:01:29 v #1951 > > │
00:01:29 v #1952 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c")
00:01:29 v #1953 > > │ 93 / 638724022634350952 / Changed
00:01:29 v #1954 > > │
00:01:29 v #1955 > > ("file_1.txt",...11111111111111111111111111111111111111111111111c")
00:01:29 v #1956 > > │ 223 / 638724022634351175 / Changed
00:01:29 v #1957 > > │
00:01:29 v #1958 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c")
00:01:29 v #1959 > > │ 1159 / 638724022634352334 / Changed
00:01:29 v #1960 > > │
00:01:29 v #1961 > > ("file_1.txt...11111111111111111111111111111111111111111111111c")
00:01:29 v #1962 > > │ 68 / 638724022634352402 / Changed
00:01:29 v #1963 > > │
00:01:29 v #1964 > > ("file_1.txt",...11111111111111111111111111111111111111111111111c")
00:01:29 v #1965 > > │ 43 / 638724022634352445 / Changed
00:01:29 v #1966 > > │
00:01:29 v #1967 > > ("file_1.txt",...11111111111111111111111111111111111111111111111c")
00:01:29 v #1968 > > │ 188 / 638724022634352633 / Changed
00:01:29 v #1969 > > │
00:01:29 v #1970 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c")
00:01:29 v #1971 > > │ 44 / 638724022634352677 / Changed
00:01:29 v #1972 > > │
00:01:29 v #1973 > > ("file_1.txt",...11111111111111111111111111111111111111111111111c")
00:01:29 v #1974 > > │ 268 / 638724022634352945 / Changed
00:01:29 v #1975 > > │
00:01:29 v #1976 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c")
00:01:29 v #1977 > > │ 50 / 638724022634352995 / Changed
00:01:29 v #1978 > > │
00:01:29 v #1979 > > ("file_1.txt",...11111111111111111111111111111111111111111111111c")
00:01:29 v #1980 > > │ 655 / 638724022634353650 / Changed
00:01:29 v #1981 > > │
00:01:29 v #1982 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c")
00:01:29 v #1983 > > │ 69 / 638724022634353719 / Changed
00:01:29 v #1984 > > │
00:01:29 v #1985 > > ("file_1.txt",...11111111111111111111111111111111111111111111111c")
00:01:29 v #1986 > > │ 223 / 638724022634353942 / Changed
00:01:29 v #1987 > > │
00:01:29 v #1988 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c")
00:01:29 v #1989 > > │ 158 / 638724022634354100 / Changed
00:01:29 v #1990 > > │
00:01:29 v #1991 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c")
00:01:29 v #1992 > > │ 154 / 638724022634354254 / Changed
00:01:29 v #1993 > > │
00:01:29 v #1994 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c")
00:01:29 v #1995 > > │ 186 / 638724022634354440 / Changed
00:01:29 v #1996 > > │
00:01:29 v #1997 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c")
00:01:29 v #1998 > > │ 53 / 638724022634354493 / Changed
00:01:29 v #1999 > > │
00:01:29 v #2000 > > ("file_1.txt",...11111111111111111111111111111111111111111111111c")
00:01:29 v #2001 > > │ 180 / 638724022634354673 / Changed
00:01:29 v #2002 > > │
00:01:29 v #2003 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c")
00:01:29 v #2004 > > │ 147 / 638724022634354820 / Changed
00:01:29 v #2005 > > │
00:01:29 v #2006 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c")
00:01:29 v #2007 > > │ 149 / 638724022634354969 / Changed
00:01:29 v #2008 > > │
00:01:29 v #2009 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c")
00:01:29 v #2010 > > │ 128 / 638724022634355097 / Changed
00:01:29 v #2011 > > │
00:01:29 v #2012 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c")
00:01:29 v #2013 > > │ 157 / 638724022634355254 / Changed
00:01:29 v #2014 > > │
00:01:29 v #2015 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c")
00:01:29 v #2016 > > │ 160 / 638724022634355414 / Changed
00:01:29 v #2017 > > │
00:01:29 v #2018 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c")
00:01:29 v #2019 > > │ 60 / 638724022634355474 / Changed
00:01:29 v #2020 > > │
00:01:29 v #2021 > > ("file_1.txt",...11111111111111111111111111111111111111111111111c")
00:01:29 v #2022 > > │ 212 / 638724022634355686 / Changed
00:01:29 v #2023 > > │
00:01:29 v #2024 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c")
00:01:29 v #2025 > > │ 172 / 638724022634355858 / Changed
00:01:29 v #2026 > > │
00:01:29 v #2027 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c")
00:01:29 v #2028 > > │ 43 / 638724022634355901 / Changed
00:01:29 v #2029 > > │
00:01:29 v #2030 > > ("file_1.txt",...11111111111111111111111111111111111111111111111c")
00:01:29 v #2031 > > │ 193 / 638724022634356094 / Changed
00:01:29 v #2032 > > │
00:01:29 v #2033 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c")
00:01:29 v #2034 > > │ 228 / 638724022634356322 / Changed
00:01:29 v #2035 > > │
00:01:29 v #2036 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c")
00:01:29 v #2037 > > │ 185 / 638724022634356507 / Changed
00:01:29 v #2038 > > │
00:01:29 v #2039 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c")
00:01:29 v #2040 > > │ 59 / 638724022634356566 / Changed
00:01:29 v #2041 > > │
00:01:29 v #2042 > > ("file_1.txt",...11111111111111111111111111111111111111111111111c")
00:01:29 v #2043 > > │ 199 / 638724022634356765 / Changed
00:01:29 v #2044 > > │
00:01:29 v #2045 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c")
00:01:29 v #2046 > > │ 161 / 638724022634356926 / Changed
00:01:29 v #2047 > > │
00:01:29 v #2048 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c")
00:01:29 v #2049 > > │ 246 / 638724022634357172 / Changed
00:01:29 v #2050 > > │
00:01:29 v #2051 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c")
00:01:29 v #2052 > > │ 49 / 638724022634357221 / Changed
00:01:29 v #2053 > > │
00:01:29 v #2054 > > ("file_1.txt",...11111111111111111111111111111111111111111111111c")
00:01:29 v #2055 > > │ 169 / 638724022634357390 / Changed
00:01:29 v #2056 > > │
00:01:29 v #2057 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c")
00:01:29 v #2058 > > │ 47 / 638724022634357437 / Changed
00:01:29 v #2059 > > │
00:01:29 v #2060 > > ("file_1.txt",...11111111111111111111111111111111111111111111111c")
00:01:29 v #2061 > > │ 188 / 638724022634357625 / Changed
00:01:29 v #2062 > > │
00:01:29 v #2063 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c")
00:01:29 v #2064 > > │ 190 / 638724022634357815 / Changed
00:01:29 v #2065 > > │
00:01:29 v #2066 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c")
00:01:29 v #2067 > > │ 49 / 638724022634357864 / Changed
00:01:29 v #2068 > > │
00:01:29 v #2069 > > ("file_1.txt",...11111111111111111111111111111111111111111111111c")
00:01:29 v #2070 > > │ 221 / 638724022634358085 / Changed
00:01:29 v #2071 > > │
00:01:29 v #2072 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c")
00:01:29 v #2073 > > │ 175 / 638724022634358260 / Changed
00:01:29 v #2074 > > │
00:01:29 v #2075 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c")
00:01:29 v #2076 > > │ 47 / 638724022634358307 / Changed
00:01:29 v #2077 > > │
00:01:29 v #2078 > > ("file_1.txt",...11111111111111111111111111111111111111111111111c")
00:01:29 v #2079 > > │ 935 / 638724022634359242 / Changed
00:01:29 v #2080 > > │
00:01:29 v #2081 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c")
00:01:29 v #2082 > > │ 82 / 638724022634359324 / Changed
00:01:29 v #2083 > > │
00:01:29 v #2084 > > ("file_1.txt",...11111111111111111111111111111111111111111111111c")
00:01:29 v #2085 > > │ 38 / 638724022634359362 / Changed
00:01:29 v #2086 > > │
00:01:29 v #2087 > > ("file_1.txt",...11111111111111111111111111111111111111111111111c")
00:01:29 v #2088 > > │ 188 / 638724022634359550 / Changed
00:01:29 v #2089 > > │
00:01:29 v #2090 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c")
00:01:29 v #2091 > > │ 158 / 638724022634359708 / Changed
00:01:29 v #2092 > > │
00:01:29 v #2093 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c")
00:01:29 v #2094 > > │ 170 / 638724022634359878 / Changed
00:01:29 v #2095 > > │
00:01:29 v #2096 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c")
00:01:29 v #2097 > > │ 151 / 638724022634360029 / Changed
00:01:29 v #2098 > > │
00:01:29 v #2099 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c")
00:01:29 v #2100 > > │ 149 / 638724022634360178 / Changed
00:01:29 v #2101 > > │
00:01:29 v #2102 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c")
00:01:29 v #2103 > > │ 160 / 638724022634360338 / Changed
00:01:29 v #2104 > > │
00:01:29 v #2105 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c")
00:01:29 v #2106 > > │ 163 / 638724022634360501 / Changed
00:01:29 v #2107 > > │
00:01:29 v #2108 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c")
00:01:29 v #2109 > > │ 172 / 638724022634360673 / Changed
00:01:29 v #2110 > > │
00:01:29 v #2111 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c")
00:01:29 v #2112 > > │ 47 / 638724022634360720 / Changed
00:01:29 v #2113 > > │
00:01:29 v #2114 > > ("file_1.txt",...11111111111111111111111111111111111111111111111c")
00:01:29 v #2115 > > │ 29453 / 638724022634390173 / Changed
00:01:29 v #2116 > > │
00:01:29 v #2117 > > ("file_2.tx...22222222222222222222222222222222222222222222222c")
00:01:29 v #2118 > > │ 193 / 638724022634390366 / Changed
00:01:29 v #2119 > > │
00:01:29 v #2120 > > ("file_2.txt"...22222222222222222222222222222222222222222222222c")
00:01:29 v #2121 > > │ 364 / 638724022634390730 / Changed
00:01:29 v #2122 > > │
00:01:29 v #2123 > > ("file_2.txt"...22222222222222222222222222222222222222222222222c")
00:01:29 v #2124 > > │ 61 / 638724022634390791 / Changed
00:01:29 v #2125 > > │
00:01:29 v #2126 > > ("file_2.txt",...22222222222222222222222222222222222222222222222c")
00:01:29 v #2127 > > │ 305 / 638724022634391096 / Changed
00:01:29 v #2128 > > │
00:01:29 v #2129 > > ("file_2.txt"...22222222222222222222222222222222222222222222222c")
00:01:29 v #2130 > > │ 93 / 638724022634391189 / Changed
00:01:29 v #2131 > > │
00:01:29 v #2132 > > ("file_2.txt",...22222222222222222222222222222222222222222222222c")
00:01:29 v #2133 > > │ 53 / 638724022634391242 / Changed
00:01:29 v #2134 > > │
00:01:29 v #2135 > > ("file_2.txt",...22222222222222222222222222222222222222222222222c")
00:01:29 v #2136 > > │ 268 / 638724022634391510 / Changed
00:01:29 v #2137 > > │
00:01:29 v #2138 > > ("file_2.txt"...22222222222222222222222222222222222222222222222c")
00:01:29 v #2139 > > │ 200 / 638724022634391710 / Changed
00:01:29 v #2140 > > │
00:01:29 v #2141 > > ("file_2.txt"...22222222222222222222222222222222222222222222222c")
00:01:29 v #2142 > > │ 40 / 638724022634391750 / Changed
00:01:29 v #2143 > > │
00:01:29 v #2144 > > ("file_2.txt",...22222222222222222222222222222222222222222222222c")
00:01:29 v #2145 > > │ 217 / 638724022634391967 / Changed
00:01:29 v #2146 > > │
00:01:29 v #2147 > > ("file_2.txt"...22222222222222222222222222222222222222222222222c")
00:01:29 v #2148 > > │ 174 / 638724022634392141 / Changed
00:01:29 v #2149 > > │
00:01:29 v #2150 > > ("file_2.txt"...22222222222222222222222222222222222222222222222c")
00:01:29 v #2151 > > │ 53 / 638724022634392194 / Changed
00:01:29 v #2152 > > │
00:01:29 v #2153 > > ("file_2.txt",...22222222222222222222222222222222222222222222222c")
00:01:29 v #2154 > > │ 201 / 638724022634392395 / Changed
00:01:29 v #2155 > > │
00:01:29 v #2156 > > ("file_2.txt"...22222222222222222222222222222222222222222222222c")
00:01:29 v #2157 > > │ 212 / 638724022634392607 / Changed
00:01:29 v #2158 > > │
00:01:29 v #2159 > > ("file_2.txt"...22222222222222222222222222222222222222222222222c")
00:01:29 v #2160 > > │ 43 / 638724022634392650 / Changed
00:01:29 v #2161 > > │
00:01:29 v #2162 > > ("file_2.txt",...22222222222222222222222222222222222222222222222c")
00:01:29 v #2163 > > │ 249 / 638724022634392899 / Changed
00:01:29 v #2164 > > │
00:01:29 v #2165 > > ("file_2.txt"...22222222222222222222222222222222222222222222222c")
00:01:29 v #2166 > > │ 231 / 638724022634393130 / Changed
00:01:29 v #2167 > > │
00:01:29 v #2168 > > ("file_2.txt"...22222222222222222222222222222222222222222222222c")
00:01:29 v #2169 > > │ 130 / 638724022634393260 / Changed
00:01:29 v #2170 > > │
00:01:29 v #2171 > > ("file_2.txt"...22222222222222222222222222222222222222222222222c")
00:01:29 v #2172 > > │ 171 / 638724022634393431 / Changed
00:01:29 v #2173 > > │
00:01:29 v #2174 > > ("file_2.txt"...22222222222222222222222222222222222222222222222c")
00:01:29 v #2175 > > │ 60 / 638724022634393491 / Changed
00:01:29 v #2176 > > │
00:01:29 v #2177 > > ("file_2.txt",...22222222222222222222222222222222222222222222222c")
00:01:29 v #2178 > > │ 237 / 638724022634393728 / Changed
00:01:29 v #2179 > > │
00:01:29 v #2180 > > ("file_2.txt"...22222222222222222222222222222222222222222222222c")
00:01:29 v #2181 > > │ 775 / 638724022634394503 / Changed
00:01:29 v #2182 > > │
00:01:29 v #2183 > > ("file_2.txt"...22222222222222222222222222222222222222222222222c")
00:01:29 v #2184 > > │ 61 / 638724022634394564 / Changed
00:01:29 v #2185 > > │
00:01:29 v #2186 > > ("file_2.txt",...22222222222222222222222222222222222222222222222c")
00:01:29 v #2187 > > │ 211 / 638724022634394775 / Changed
00:01:29 v #2188 > > │
00:01:29 v #2189 > > ("file_2.txt"...22222222222222222222222222222222222222222222222c")
00:01:29 v #2190 > > │ 168 / 638724022634394943 / Changed
00:01:29 v #2191 > > │
00:01:29 v #2192 > > ("file_2.txt"...22222222222222222222222222222222222222222222222c")
00:01:29 v #2193 > > │ 43 / 638724022634394986 / Changed
00:01:29 v #2194 > > │
00:01:29 v #2195 > > ("file_2.txt",...22222222222222222222222222222222222222222222222c")
00:01:29 v #2196 > > │ 186 / 638724022634395172 / Changed
00:01:29 v #2197 > > │
00:01:29 v #2198 > > ("file_2.txt"...22222222222222222222222222222222222222222222222c")
00:01:29 v #2199 > > │ 43 / 638724022634395215 / Changed
00:01:29 v #2200 > > │
00:01:29 v #2201 > > ("file_2.txt",...22222222222222222222222222222222222222222222222c")
00:01:29 v #2202 > > │ 247 / 638724022634395462 / Changed
00:01:29 v #2203 > > │
00:01:29 v #2204 > > ("file_2.txt"...22222222222222222222222222222222222222222222222c")
00:01:29 v #2205 > > │ 186 / 638724022634395648 / Changed
00:01:29 v #2206 > > │
00:01:29 v #2207 > > ("file_2.txt"...22222222222222222222222222222222222222222222222c")
00:01:29 v #2208 > > │ 155 / 638724022634395803 / Changed
00:01:29 v #2209 > > │
00:01:29 v #2210 > > ("file_2.txt"...22222222222222222222222222222222222222222222222c")
00:01:29 v #2211 > > │ 159 / 638724022634395962 / Changed
00:01:29 v #2212 > > │
00:01:29 v #2213 > > ("file_2.txt"...22222222222222222222222222222222222222222222222c")
00:01:29 v #2214 > > │ 192 / 638724022634396154 / Changed
00:01:29 v #2215 > > │
00:01:29 v #2216 > > ("file_2.txt"...22222222222222222222222222222222222222222222222c")
00:01:29 v #2217 > > │ 257 / 638724022634396411 / Changed
00:01:29 v #2218 > > │
00:01:29 v #2219 > > ("file_2.txt"...22222222222222222222222222222222222222222222222c")
00:01:29 v #2220 > > │ 139 / 638724022634396550 / Changed
00:01:29 v #2221 > > │
00:01:29 v #2222 > > ("file_2.txt"...22222222222222222222222222222222222222222222222c")
00:01:29 v #2223 > > │ 165 / 638724022634396715 / Changed
00:01:29 v #2224 > > │
00:01:29 v #2225 > > ("file_2.txt"...22222222222222222222222222222222222222222222222c")
00:01:29 v #2226 > > │ 45 / 638724022634396760 / Changed
00:01:29 v #2227 > > │
00:01:29 v #2228 > > ("file_2.txt",...22222222222222222222222222222222222222222222222c")
00:01:29 v #2229 > > │ 199 / 638724022634396959 / Changed
00:01:29 v #2230 > > │
00:01:29 v #2231 > > ("file_2.txt"...22222222222222222222222222222222222222222222222c")
00:01:29 v #2232 > > │ 27 / 638724022634396986 / Changed
00:01:29 v #2233 > > │
00:01:29 v #2234 > > ("file_2.txt",...22222222222222222222222222222222222222222222222c")
00:01:29 v #2235 > > │ 224 / 638724022634397210 / Changed
00:01:29 v #2236 > > │
00:01:29 v #2237 > > ("file_2.txt"...22222222222222222222222222222222222222222222222c")
00:01:29 v #2238 > > │ 47 / 638724022634397257 / Changed
00:01:29 v #2239 > > │
00:01:29 v #2240 > > ("file_2.txt",...22222222222222222222222222222222222222222222222c")
00:01:29 v #2241 > > │ 239 / 638724022634397496 / Changed
00:01:29 v #2242 > > │
00:01:29 v #2243 > > ("file_2.txt"...22222222222222222222222222222222222222222222222c")
00:01:29 v #2244 > > │ 176 / 638724022634397672 / Changed
00:01:29 v #2245 > > │
00:01:29 v #2246 > > ("file_2.txt"...22222222222222222222222222222222222222222222222c")
00:01:29 v #2247 > > │ 47 / 638724022634397719 / Changed
00:01:29 v #2248 > > │
00:01:29 v #2249 > > ("file_2.txt",...22222222222222222222222222222222222222222222222c")
00:01:29 v #2250 > > │ 444 / 638724022634398163 / Changed
00:01:29 v #2251 > > │
00:01:29 v #2252 > > ("file_2.txt"...22222222222222222222222222222222222222222222222c")
00:01:29 v #2253 > > │ 43 / 638724022634398206 / Changed
00:01:29 v #2254 > > │
00:01:29 v #2255 > > ("file_2.txt",...22222222222222222222222222222222222222222222222c")
00:01:29 v #2256 > > │ 37342 / 638724022634435548 / Changed
00:01:29 v #2257 > > │
00:01:29 v #2258 > > ("file_2.tx...22222222222222222222222222222222222222222222222c")
00:01:29 v #2259 > > │ 15036089 / 638724022649471637 / Deleted "file_1.txt"
00:01:29 v #2260 > > │ 2768 / 638724022649474405 / Deleted "file_2.txt"
00:01:29 v #2261 > > │ [Created ("file1.txt", Some "1a"); Changed ("file1.txt", Some
00:01:29 v #2262 > > "1a"); Created ("file2.txt", Some "2a");
00:01:29 v #2263 > > │  Changed ("file2.txt", Some "2a"); Changed ("file1.txt", Some
00:01:29 v #2264 > > "1b"); Changed ("file2.txt", Some "2b");
00:01:29 v #2265 > > │  Renamed ("file1.txt", ("file_1.txt", Some "1b")); Renamed
00:01:29 v #2266 > > ("file2.txt", ("file_2.txt", Some "2b"));
00:01:29 v #2267 > > │  Changed ("file_1.txt", Some "1c"); Changed ("file_2.txt",
00:01:29 v #2268 > > Some "2c"); Deleted "file_1.txt"; Deleted "file_2.txt"]
00:01:29 v #2269 > > │
00:01:29 v #2270 > > │ Some ()
00:01:29 v #2271 > > │
00:01:29 v #2272 > > │
00:01:29 v #2273 > >
00:01:29 v #2274 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:29 v #2275 > > │ ### testEventsSorted (test)
00:01:29 v #2276 > >
00:01:29 v #2277 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:29 v #2278 > > //// test
00:01:29 v #2279 > >
00:01:29 v #2280 > > let inline sortEvent event =
00:01:29 v #2281 > >     match event with
00:01:29 v #2282 > >     | FileSystemChange.Failure _ -> 0
00:01:29 v #2283 > >     | FileSystemChange.Created _ -> 1
00:01:29 v #2284 > >     | FileSystemChange.Changed _ -> 2
00:01:29 v #2285 > >     | FileSystemChange.Renamed (_oldPath, _) -> 3
00:01:29 v #2286 > >     | FileSystemChange.Deleted _ -> 4
00:01:29 v #2287 > >
00:01:29 v #2288 > > let inline formatEvents events =
00:01:29 v #2289 > >     events
00:01:29 v #2290 > >     |> Seq.toList
00:01:29 v #2291 > >     |> List.sortBy (snd >> sortEvent)
00:01:29 v #2292 > >     |> List.choose (fun (ticks, event) ->
00:01:29 v #2293 > >         match event with
00:01:29 v #2294 > >         | FileSystemChange.Failure _ ->
00:01:29 v #2295 > >             None
00:01:29 v #2296 > >         | FileSystemChange.Changed (path, _) ->
00:01:29 v #2297 > >             Some (ticks, System.IO.Path.GetFileName path, nameof
00:01:29 v #2298 > > FileSystemChangeType.Changed)
00:01:29 v #2299 > >         | FileSystemChange.Created (path, _) ->
00:01:29 v #2300 > >             Some (ticks, System.IO.Path.GetFileName path, nameof
00:01:29 v #2301 > > FileSystemChangeType.Created)
00:01:29 v #2302 > >         | FileSystemChange.Deleted path ->
00:01:29 v #2303 > >             Some (ticks, System.IO.Path.GetFileName path, nameof
00:01:29 v #2304 > > FileSystemChangeType.Deleted)
00:01:29 v #2305 > >         | FileSystemChange.Renamed (_oldPath, (path, _)) ->
00:01:29 v #2306 > >             Some (ticks, System.IO.Path.GetFileName path, nameof
00:01:29 v #2307 > > FileSystemChangeType.Renamed)
00:01:29 v #2308 > >     )
00:01:29 v #2309 > >     |> List.sortBy (fun (_, path, _) -> path)
00:01:29 v #2310 > >     |> List.distinctBy (fun (_, path, event) -> path, event)
00:01:29 v #2311 > >
00:01:29 v #2312 > > let inline testEventsSorted
00:01:29 v #2313 > >     (watchFn : string -> FSharp.Control.AsyncSeq<int64 * FileSystemChange> *
00:01:29 v #2314 > > IDisposable)
00:01:29 v #2315 > >     write
00:01:29 v #2316 > >     =
00:01:29 v #2317 > >     let struct (tempDir, tempDisposable) =
00:01:29 v #2318 > >         "FileSystem.testEventsSorted"
00:01:29 v #2319 > >         |> SpiralCrypto.hash_text
00:01:29 v #2320 > >         |> SpiralFileSystem.create_temp_dir'
00:01:29 v #2321 > >     let stream, disposable = watchFn tempDir
00:01:29 v #2322 > >
00:01:29 v #2323 > >     let events = System.Collections.Concurrent.ConcurrentBag ()
00:01:29 v #2324 > >
00:01:29 v #2325 > >     let inline iter () =
00:01:29 v #2326 > >         stream
00:01:29 v #2327 > >         |> FSharp.Control.AsyncSeq.iterAsyncParallel (fun event -> async {
00:01:29 v #2328 > > events.Add event })
00:01:29 v #2329 > >
00:01:29 v #2330 > >     let run = async {
00:01:29 v #2331 > >         let! _ = iter () |> Async.StartChild
00:01:29 v #2332 > >         do! Async.Sleep 250
00:01:29 v #2333 > >         return! write tempDir
00:01:29 v #2334 > >     }
00:01:29 v #2335 > >
00:01:29 v #2336 > >     try
00:01:29 v #2337 > >         run
00:01:29 v #2338 > >         |> Async.runWithTimeout 5000
00:01:29 v #2339 > >         |> _assertEqual (Some ())
00:01:29 v #2340 > >     finally
00:01:29 v #2341 > >         disposable.Dispose ()
00:01:29 v #2342 > >         tempDisposable.Dispose ()
00:01:29 v #2343 > >
00:01:29 v #2344 > >     let events = formatEvents events
00:01:29 v #2345 > >
00:01:29 v #2346 > >     let eventMap =
00:01:29 v #2347 > >         events
00:01:29 v #2348 > >         |> List.map (fun (ticks, path, event) -> path, (event, ticks))
00:01:29 v #2349 > >         |> List.groupBy fst
00:01:29 v #2350 > >         |> List.map (fun (path, events) ->
00:01:29 v #2351 > >             let event, _ticks =
00:01:29 v #2352 > >                 events
00:01:29 v #2353 > >                 |> List.map snd
00:01:29 v #2354 > >                 |> List.sortByDescending snd
00:01:29 v #2355 > >                 |> List.head
00:01:29 v #2356 > >
00:01:29 v #2357 > >             path, event
00:01:29 v #2358 > >         )
00:01:29 v #2359 > >         |> Map.ofList
00:01:29 v #2360 > >
00:01:29 v #2361 > >     let eventList =
00:01:29 v #2362 > >         events
00:01:29 v #2363 > >         |> List.map (fun (_ticks, path, event) -> path, event)
00:01:29 v #2364 > >
00:01:29 v #2365 > >     eventMap, eventList
00:01:29 v #2366 > >
00:01:29 v #2367 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:29 v #2368 > > │ #### create and delete (test)
00:01:29 v #2369 > >
00:01:29 v #2370 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:29 v #2371 > > //// test
00:01:29 v #2372 > >
00:01:29 v #2373 > > let inline write path = async {
00:01:29 v #2374 > >     let n = 3
00:01:29 v #2375 > >
00:01:29 v #2376 > >     for i = 1 to n do
00:01:29 v #2377 > >         do! $"{i}" |> SpiralFileSystem.write_all_text_async (path </>
00:01:29 v #2378 > > $"file{i}.txt")
00:01:29 v #2379 > >
00:01:29 v #2380 > >     for i = 1 to n do
00:01:29 v #2381 > >         do! SpiralFileSystem.delete_file_async (path </> $"file{i}.txt") |>
00:01:29 v #2382 > > Async.Ignore
00:01:29 v #2383 > >
00:01:29 v #2384 > >     do! Async.Sleep 150
00:01:29 v #2385 > > }
00:01:29 v #2386 > >
00:01:29 v #2387 > > let inline run () =
00:01:29 v #2388 > >     let eventMap, eventList = testEventsSorted (watchDirectory (fun _ -> false))
00:01:29 v #2389 > > write
00:01:29 v #2390 > >
00:01:29 v #2391 > >     [[
00:01:29 v #2392 > >         "file1.txt", nameof FileSystemChangeType.Created
00:01:29 v #2393 > >         "file1.txt", nameof FileSystemChangeType.Changed
00:01:29 v #2394 > >         "file1.txt", nameof FileSystemChangeType.Deleted
00:01:29 v #2395 > >
00:01:29 v #2396 > >         "file2.txt", nameof FileSystemChangeType.Created
00:01:29 v #2397 > >         "file2.txt", nameof FileSystemChangeType.Changed
00:01:29 v #2398 > >         "file2.txt", nameof FileSystemChangeType.Deleted
00:01:29 v #2399 > >
00:01:29 v #2400 > >         "file3.txt", nameof FileSystemChangeType.Created
00:01:29 v #2401 > >         "file3.txt", nameof FileSystemChangeType.Changed
00:01:29 v #2402 > >         "file3.txt", nameof FileSystemChangeType.Deleted
00:01:29 v #2403 > >     ]]
00:01:29 v #2404 > >     |> _sequenceEqual eventList
00:01:29 v #2405 > >
00:01:29 v #2406 > >     [[
00:01:29 v #2407 > >         "file1.txt", nameof FileSystemChangeType.Deleted
00:01:29 v #2408 > >         "file2.txt", nameof FileSystemChangeType.Deleted
00:01:29 v #2409 > >         "file3.txt", nameof FileSystemChangeType.Deleted
00:01:29 v #2410 > >     ]]
00:01:29 v #2411 > >     |> Map.ofList
00:01:29 v #2412 > >     |> _sequenceEqual eventMap
00:01:29 v #2413 > >
00:01:29 v #2414 > > run
00:01:29 v #2415 > > |> retry_fn 3
00:01:29 v #2416 > > |> _assertEqual (Some ())
00:01:30 v #2417 > >
00:01:30 v #2418 > > ── [ 957.31ms - stdout ] ───────────────────────────────────────────────────────
00:01:30 v #2419 > > │ Some ()
00:01:30 v #2420 > > │
00:01:30 v #2421 > > │ 00:00:15 d #5 FileSystem.watchWithFilter / Disposing
00:01:30 v #2422 > > watch stream / filter: FileName, LastWrite
00:01:30 v #2423 > > │ [("file1.txt", "Created"); ("file1.txt", "Changed");
00:01:30 v #2424 > > ("file1.txt", "Deleted"); ("file2.txt", "Created");
00:01:30 v #2425 > > │  ("file2.txt", "Changed"); ("file2.txt", "Deleted");
00:01:30 v #2426 > > ("file3.txt", "Created"); ("file3.txt", "Changed");
00:01:30 v #2427 > > │  ("file3.txt", "Deleted")]
00:01:30 v #2428 > > │
00:01:30 v #2429 > > │ map [("file1.txt", "Deleted"); ("file2.txt", "Deleted");
00:01:30 v #2430 > > ("file3.txt", "Deleted")]
00:01:30 v #2431 > > │
00:01:30 v #2432 > > │ Some ()
00:01:30 v #2433 > > │
00:01:30 v #2434 > > │
00:01:30 v #2435 > >
00:01:30 v #2436 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:30 v #2437 > > │ #### change (test)
00:01:30 v #2438 > >
00:01:30 v #2439 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:30 v #2440 > > //// test
00:01:30 v #2441 > >
00:01:30 v #2442 > > let inline write path = async {
00:01:30 v #2443 > >     let n = 2
00:01:30 v #2444 > >
00:01:30 v #2445 > >     for i = 1 to n do
00:01:30 v #2446 > >         do! $"{i}" |> SpiralFileSystem.write_all_text_async (path </>
00:01:30 v #2447 > > $"file{i}.txt")
00:01:30 v #2448 > >
00:01:30 v #2449 > >     for i = 1 to n do
00:01:30 v #2450 > >         do! "" |> SpiralFileSystem.write_all_text_async (path </>
00:01:30 v #2451 > > $"file{i}.txt")
00:01:30 v #2452 > >
00:01:30 v #2453 > >     for i = 1 to n do
00:01:30 v #2454 > >         do! SpiralFileSystem.delete_file_async (path </> $"file{i}.txt") |>
00:01:30 v #2455 > > Async.Ignore
00:01:30 v #2456 > >
00:01:30 v #2457 > >     do! Async.Sleep 150
00:01:30 v #2458 > > }
00:01:30 v #2459 > >
00:01:30 v #2460 > > let inline run () =
00:01:30 v #2461 > >     let eventMap, eventList = testEventsSorted (watchDirectory (fun _ -> false))
00:01:30 v #2462 > > write
00:01:30 v #2463 > >
00:01:30 v #2464 > >     [[
00:01:30 v #2465 > >         "file1.txt", nameof FileSystemChangeType.Created
00:01:30 v #2466 > >         "file1.txt", nameof FileSystemChangeType.Changed
00:01:30 v #2467 > >         "file1.txt", nameof FileSystemChangeType.Deleted
00:01:30 v #2468 > >
00:01:30 v #2469 > >         "file2.txt", nameof FileSystemChangeType.Created
00:01:30 v #2470 > >         "file2.txt", nameof FileSystemChangeType.Changed
00:01:30 v #2471 > >         "file2.txt", nameof FileSystemChangeType.Deleted
00:01:30 v #2472 > >     ]]
00:01:30 v #2473 > >     |> _sequenceEqual eventList
00:01:30 v #2474 > >
00:01:30 v #2475 > >     [[
00:01:30 v #2476 > >         "file1.txt", nameof FileSystemChangeType.Deleted
00:01:30 v #2477 > >         "file2.txt", nameof FileSystemChangeType.Deleted
00:01:30 v #2478 > >     ]]
00:01:30 v #2479 > >     |> Map.ofList
00:01:30 v #2480 > >     |> _sequenceEqual eventMap
00:01:30 v #2481 > >
00:01:30 v #2482 > > run
00:01:30 v #2483 > > |> retry_fn 3
00:01:30 v #2484 > > |> _assertEqual (Some ())
00:01:31 v #2485 > >
00:01:31 v #2486 > > ── [ 1.05s - stdout ] ──────────────────────────────────────────────────────────
00:01:31 v #2487 > > │ Some ()
00:01:31 v #2488 > > │
00:01:31 v #2489 > > │ 00:00:16 d #6 FileSystem.watchWithFilter / Disposing
00:01:31 v #2490 > > watch stream / filter: FileName, LastWrite
00:01:31 v #2491 > > │ [("file1.txt", "Created"); ("file1.txt", "Changed");
00:01:31 v #2492 > > ("file1.txt", "Deleted"); ("file2.txt", "Created");
00:01:31 v #2493 > > │  ("file2.txt", "Changed"); ("file2.txt", "Deleted")]
00:01:31 v #2494 > > │
00:01:31 v #2495 > > │ map [("file1.txt", "Deleted"); ("file2.txt", "Deleted")]
00:01:31 v #2496 > > │
00:01:31 v #2497 > > │ Some ()
00:01:31 v #2498 > > │
00:01:31 v #2499 > > │
00:01:31 v #2500 > >
00:01:31 v #2501 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:31 v #2502 > > │ #### rename (test)
00:01:31 v #2503 > >
00:01:31 v #2504 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:31 v #2505 > > //// test
00:01:31 v #2506 > >
00:01:31 v #2507 > > let inline write path = async {
00:01:31 v #2508 > >     let n = 2
00:01:31 v #2509 > >
00:01:31 v #2510 > >     for i = 1 to n do
00:01:31 v #2511 > >         do! $"{i}" |> SpiralFileSystem.write_all_text_async (path </>
00:01:31 v #2512 > > $"file{i}.txt")
00:01:31 v #2513 > >
00:01:31 v #2514 > >     for i = 1 to n do
00:01:31 v #2515 > >         do! path </> $"file{i}.txt" |> SpiralFileSystem.move_file_async (path
00:01:31 v #2516 > > </> $"file_{i}.txt") |> Async.Ignore
00:01:31 v #2517 > >
00:01:31 v #2518 > >     for i = 1 to n do
00:01:31 v #2519 > >         do! SpiralFileSystem.delete_file_async (path </> $"file_{i}.txt") |>
00:01:31 v #2520 > > Async.Ignore
00:01:31 v #2521 > >
00:01:31 v #2522 > >     do! Async.Sleep 150
00:01:31 v #2523 > > }
00:01:31 v #2524 > >
00:01:31 v #2525 > > let inline run () =
00:01:31 v #2526 > >     let eventMap, eventList = testEventsSorted (watchDirectory (fun _ -> false))
00:01:31 v #2527 > > write
00:01:31 v #2528 > >
00:01:31 v #2529 > >     [[
00:01:31 v #2530 > >         "file1.txt", nameof FileSystemChangeType.Created
00:01:31 v #2531 > >         "file1.txt", nameof FileSystemChangeType.Changed
00:01:31 v #2532 > >         "file2.txt", nameof FileSystemChangeType.Created
00:01:31 v #2533 > >         "file2.txt", nameof FileSystemChangeType.Changed
00:01:31 v #2534 > >
00:01:31 v #2535 > >         "file_1.txt", nameof FileSystemChangeType.Renamed
00:01:31 v #2536 > >         "file_1.txt", nameof FileSystemChangeType.Deleted
00:01:31 v #2537 > >
00:01:31 v #2538 > >         "file_2.txt", nameof FileSystemChangeType.Renamed
00:01:31 v #2539 > >         "file_2.txt", nameof FileSystemChangeType.Deleted
00:01:31 v #2540 > >     ]]
00:01:31 v #2541 > >     |> _sequenceEqual eventList
00:01:31 v #2542 > >
00:01:31 v #2543 > >     [[
00:01:31 v #2544 > >         "file1.txt", nameof FileSystemChangeType.Changed
00:01:31 v #2545 > >         "file2.txt", nameof FileSystemChangeType.Changed
00:01:31 v #2546 > >         "file_1.txt", nameof FileSystemChangeType.Deleted
00:01:31 v #2547 > >         "file_2.txt", nameof FileSystemChangeType.Deleted
00:01:31 v #2548 > >     ]]
00:01:31 v #2549 > >     |> Map.ofList
00:01:31 v #2550 > >     |> _sequenceEqual eventMap
00:01:31 v #2551 > >
00:01:31 v #2552 > > run
00:01:31 v #2553 > > |> retry_fn 3
00:01:31 v #2554 > > |> _assertEqual (Some ())
00:01:32 v #2555 > >
00:01:32 v #2556 > > ── [ 1.10s - stdout ] ──────────────────────────────────────────────────────────
00:01:32 v #2557 > > │ Some ()
00:01:32 v #2558 > > │
00:01:32 v #2559 > > │ 00:00:17 d #7 FileSystem.watchWithFilter / Disposing
00:01:32 v #2560 > > watch stream / filter: FileName, LastWrite
00:01:32 v #2561 > > │ [("file1.txt", "Created"); ("file1.txt", "Changed");
00:01:32 v #2562 > > ("file2.txt", "Created"); ("file2.txt", "Changed");
00:01:32 v #2563 > > │  ("file_1.txt", "Renamed"); ("file_1.txt", "Deleted");
00:01:32 v #2564 > > ("file_2.txt", "Renamed"); ("file_2.txt", "Deleted")]
00:01:32 v #2565 > > │
00:01:32 v #2566 > > │ map [("file1.txt", "Changed"); ("file2.txt", "Changed");
00:01:32 v #2567 > > ("file_1.txt", "Deleted"); ("file_2.txt", "Deleted")]
00:01:32 v #2568 > > │
00:01:32 v #2569 > > │ Some ()
00:01:32 v #2570 > > │
00:01:32 v #2571 > > │
00:01:32 v #2572 > >
00:01:32 v #2573 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:32 v #2574 > > │ #### full (test)
00:01:32 v #2575 > >
00:01:32 v #2576 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:32 v #2577 > > //// test
00:01:32 v #2578 > >
00:01:32 v #2579 > > let inline write path = async {
00:01:32 v #2580 > >     let n = 2
00:01:32 v #2581 > >
00:01:32 v #2582 > >     for i = 1 to n do
00:01:32 v #2583 > >         do! $"{i}" |> SpiralFileSystem.write_all_text_async (path </>
00:01:32 v #2584 > > $"file{i}.txt")
00:01:32 v #2585 > >
00:01:32 v #2586 > >     for i = 1 to n do
00:01:32 v #2587 > >         do! "" |> SpiralFileSystem.write_all_text_async (path </>
00:01:32 v #2588 > > $"file{i}.txt")
00:01:32 v #2589 > >
00:01:32 v #2590 > >     for i = 1 to n do
00:01:32 v #2591 > >         do! path </> $"file{i}.txt" |> SpiralFileSystem.move_file_async (path
00:01:32 v #2592 > > </> $"file_{i}.txt") |> Async.Ignore
00:01:32 v #2593 > >
00:01:32 v #2594 > >     for i = 1 to n do
00:01:32 v #2595 > >         do! $"{i}" |> SpiralFileSystem.write_all_text_async (path </>
00:01:32 v #2596 > > $"file_{i}.txt")
00:01:32 v #2597 > >
00:01:32 v #2598 > >     for i = 1 to n do
00:01:32 v #2599 > >         do! SpiralFileSystem.delete_file_async (path </> $"file_{i}.txt") |>
00:01:32 v #2600 > > Async.Ignore
00:01:32 v #2601 > >
00:01:32 v #2602 > >     do! Async.Sleep 150
00:01:32 v #2603 > > }
00:01:32 v #2604 > >
00:01:32 v #2605 > > let inline run () =
00:01:32 v #2606 > >     let eventMap, eventList = testEventsSorted (watchDirectory (fun _ -> false))
00:01:32 v #2607 > > write
00:01:32 v #2608 > >
00:01:32 v #2609 > >     [[
00:01:32 v #2610 > >         "file1.txt", nameof FileSystemChangeType.Created
00:01:32 v #2611 > >         "file1.txt", nameof FileSystemChangeType.Changed
00:01:32 v #2612 > >         "file2.txt", nameof FileSystemChangeType.Created
00:01:32 v #2613 > >         "file2.txt", nameof FileSystemChangeType.Changed
00:01:32 v #2614 > >
00:01:32 v #2615 > >         "file_1.txt", nameof FileSystemChangeType.Changed
00:01:32 v #2616 > >         "file_1.txt", nameof FileSystemChangeType.Renamed
00:01:32 v #2617 > >         "file_1.txt", nameof FileSystemChangeType.Deleted
00:01:32 v #2618 > >
00:01:32 v #2619 > >         "file_2.txt", nameof FileSystemChangeType.Changed
00:01:32 v #2620 > >         "file_2.txt", nameof FileSystemChangeType.Renamed
00:01:32 v #2621 > >         "file_2.txt", nameof FileSystemChangeType.Deleted
00:01:32 v #2622 > >     ]]
00:01:32 v #2623 > >     |> _sequenceEqual eventList
00:01:32 v #2624 > >
00:01:32 v #2625 > >     [[
00:01:32 v #2626 > >         "file1.txt", nameof FileSystemChangeType.Changed
00:01:32 v #2627 > >         "file2.txt", nameof FileSystemChangeType.Changed
00:01:32 v #2628 > >         "file_1.txt", nameof FileSystemChangeType.Deleted
00:01:32 v #2629 > >         "file_2.txt", nameof FileSystemChangeType.Deleted
00:01:32 v #2630 > >     ]]
00:01:32 v #2631 > >     |> Map.ofList
00:01:32 v #2632 > >     |> _sequenceEqual eventMap
00:01:32 v #2633 > >
00:01:32 v #2634 > > run
00:01:32 v #2635 > > |> retry_fn 3
00:01:32 v #2636 > > |> _assertEqual (Some ())
00:01:33 v #2637 > >
00:01:33 v #2638 > > ── [ 1.26s - stdout ] ──────────────────────────────────────────────────────────
00:01:33 v #2639 > > │ Some ()
00:01:33 v #2640 > > │
00:01:33 v #2641 > > │ 00:00:18 d #8 FileSystem.watchWithFilter / Disposing
00:01:33 v #2642 > > watch stream / filter: FileName, LastWrite
00:01:33 v #2643 > > │ [("file1.txt", "Created"); ("file1.txt", "Changed");
00:01:33 v #2644 > > ("file2.txt", "Created"); ("file2.txt", "Changed");
00:01:33 v #2645 > > │  ("file_1.txt", "Changed"); ("file_1.txt", "Renamed");
00:01:33 v #2646 > > ("file_1.txt", "Deleted"); ("file_2.txt", "Changed");
00:01:33 v #2647 > > │  ("file_2.txt", "Renamed"); ("file_2.txt", "Deleted")]
00:01:33 v #2648 > > │
00:01:33 v #2649 > > │ map [("file1.txt", "Changed"); ("file2.txt", "Changed");
00:01:33 v #2650 > > ("file_1.txt", "Deleted"); ("file_2.txt", "Deleted")]
00:01:33 v #2651 > > │
00:01:33 v #2652 > > │ Some ()
00:01:33 v #2653 > > │
00:01:33 v #2654 > > │
00:01:33 v #2655 > 00:00:31 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 76971 }
00:01:33 v #2656 > 00:00:31 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/fsharp/FileSystem.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/fsharp/FileSystem.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:01:34 v #2657 > 00:00:32 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/fsharp/FileSystem.dib.ipynb to html
00:01:34 v #2658 > 00:00:32 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:01:34 v #2659 > 00:00:32 v #7 !   validate(nb)
00:01:35 v #2660 > 00:00:32 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:01:35 v #2661 > 00:00:32 v #9 !   return _pygments_highlight(
00:01:35 v #2662 > 00:00:32 v #10 ! [NbConvertApp] Writing 413991 bytes to /home/runner/work/polyglot/polyglot/lib/fsharp/FileSystem.dib.html
00:01:35 v #2663 > 00:00:33 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 904 }
00:01:35 v #2664 > 00:00:33 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 904 }
00:01:35 v #2665 > 00:00:33 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/fsharp/FileSystem.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/fsharp/FileSystem.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:01:35 v #2666 > 00:00:33 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:01:35 v #2667 > 00:00:33 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:01:35 v #2668 > 00:00:33 d #16 spiral.run / dib / { exit_code = 0; result_length = 77934 }
00:01:35 d #2669 runtime.execute_with_options_async / { exit_code = 0; output_length = 84179 }
00:01:35 d #7 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path FileSystem.dib --retries 3
00:01:35 d #2670 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path Runtime.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path Runtime.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:01:35 v #2671 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "Runtime.dib", "--retries", "3"])) }
00:01:35 v #2672 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/fsharp/Runtime.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/fsharp/Runtime.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/fsharp/Runtime.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/fsharp/Runtime.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:01:37 v #2673 > >
00:01:37 v #2674 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:37 v #2675 > > │ # Runtime (Polyglot)
00:01:39 v #2676 > >
00:01:39 v #2677 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:39 v #2678 > > #r
00:01:39 v #2679 > > @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan
00:01:39 v #2680 > > dard2.1/FSharp.Control.AsyncSeq.dll"
00:01:39 v #2681 > > #r
00:01:39 v #2682 > > @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6.
00:01:39 v #2683 > > 0/System.Reactive.dll"
00:01:39 v #2684 > > #r
00:01:39 v #2685 > > @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib
00:01:39 v #2686 > > netstandard2.0/System.Reactive.Linq.dll"
00:01:39 v #2687 > > #r
00:01:39 v #2688 > > @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll"
00:01:49 v #2689 > >
00:01:49 v #2690 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:49 v #2691 > > #if !INTERACTIVE
00:01:49 v #2692 > > open Lib
00:01:49 v #2693 > > #endif
00:01:49 v #2694 > >
00:01:49 v #2695 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:49 v #2696 > > open Common
00:01:49 v #2697 > >
00:01:49 v #2698 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:49 v #2699 > > //// test
00:01:49 v #2700 > >
00:01:49 v #2701 > > open SpiralFileSystem.Operators
00:01:49 v #2702 > >
00:01:49 v #2703 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:49 v #2704 > > │ ## parseArgs
00:01:49 v #2705 > >
00:01:49 v #2706 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:49 v #2707 > > let inline parseArgs<'T when 'T :> Argu.IArgParserTemplate> args =
00:01:49 v #2708 > >     let assemblyName =
00:01:49 v #2709 > > System.Reflection.Assembly.GetEntryAssembly().GetName().Name
00:01:49 v #2710 > >     let errorHandler : Argu.IExiter =
00:01:49 v #2711 > >         if [[ "Microsoft.DotNet.Interactive.App"; "dotnet-repl" ]] |>
00:01:49 v #2712 > > List.contains assemblyName
00:01:49 v #2713 > >         then Argu.ExceptionExiter ()
00:01:49 v #2714 > >         else Argu.ProcessExiter (function Argu.ErrorCode.HelpText -> None | _ ->
00:01:49 v #2715 > > Some System.ConsoleColor.Red)
00:01:49 v #2716 > >
00:01:49 v #2717 > >     let parser =
00:01:49 v #2718 > >         Argu.ArgumentParser.Create<'T> (
00:01:49 v #2719 > >             programName = $"{assemblyName}{SpiralPlatform.get_executable_suffix
00:01:49 v #2720 > > ()}",
00:01:49 v #2721 > >             errorHandler = errorHandler
00:01:49 v #2722 > >         )
00:01:49 v #2723 > >
00:01:49 v #2724 > >     parser.ParseCommandLine args
00:01:49 v #2725 > >
00:01:49 v #2726 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:49 v #2727 > > //// test
00:01:49 v #2728 > >
00:01:49 v #2729 > > [[<RequireQualifiedAccess>]]
00:01:49 v #2730 > > type Arguments =
00:01:49 v #2731 > >     | [[<Argu.ArguAttributes.MainCommand; Argu.ArguAttributes.ExactlyOnce;
00:01:49 v #2732 > > Argu.ArguAttributes.Last>]]
00:01:49 v #2733 > >         Paths of paths : string list
00:01:49 v #2734 > >
00:01:49 v #2735 > >     interface Argu.IArgParserTemplate with
00:01:49 v #2736 > >         member s.Usage =
00:01:49 v #2737 > >             match s with
00:01:49 v #2738 > >             | Paths _ -> nameof Paths
00:01:49 v #2739 > >
00:01:49 v #2740 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:49 v #2741 > > //// test
00:01:49 v #2742 > >
00:01:49 v #2743 > > Argu.ArgumentParser.Create<Arguments>().PrintUsage ()
00:01:49 v #2744 > >
00:01:49 v #2745 > > ── [ 81.25ms - return value ] ──────────────────────────────────────────────────
00:01:49 v #2746 > > │ "USAGE: dotnet-repl [--help] <paths>...
00:01:49 v #2747 > > │
00:01:49 v #2748 > > │ PATHS:
00:01:49 v #2749 > > │
00:01:49 v #2750 > > │     <paths>...            Paths
00:01:49 v #2751 > > │
00:01:49 v #2752 > > │ OPTIONS:
00:01:49 v #2753 > > │
00:01:49 v #2754 > > │     --help                display this list of options.
00:01:49 v #2755 > > │ "
00:01:49 v #2756 > > │
00:01:49 v #2757 > >
00:01:49 v #2758 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:49 v #2759 > > //// test
00:01:49 v #2760 > >
00:01:49 v #2761 > > fun () -> parseArgs<Arguments> [[||]] |> ignore
00:01:49 v #2762 > > |> _throwsC (fun ex _ ->
00:01:49 v #2763 > >     SpiralSm.format_exception ex
00:01:49 v #2764 > >     |> _stringContains "Argu.ArguParseException: ERROR: missing parameter
00:01:49 v #2765 > > '<paths>...'."
00:01:49 v #2766 > > )
00:01:49 v #2767 > >
00:01:49 v #2768 > > ── [ 40.48ms - stdout ] ────────────────────────────────────────────────────────
00:01:49 v #2769 > > │ <fun:it@3-3>
00:01:49 v #2770 > > │
00:01:49 v #2771 > > │ "Argu.ArguParseException: ERROR: missing parameter
00:01:49 v #2772 > > '<paths>...'.
00:01:49 v #2773 > > │ USAGE: dotnet-repl [--help] <paths>...
00:01:49 v #2774 > > │
00:01:49 v #2775 > > │ PATHS:
00:01:49 v #2776 > > │
00:01:49 v #2777 > > │     <paths>...            Paths
00:01:49 v #2778 > > │
00:01:49 v #2779 > > │ OPTIONS:
00:01:49 v #2780 > > │
00:01:49 v #2781 > > │     --help                display this list of options.
00:01:49 v #2782 > > │ "
00:01:49 v #2783 > > │
00:01:49 v #2784 > > │
00:01:49 v #2785 > >
00:01:49 v #2786 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:49 v #2787 > > let inline parseAllArgs<'T when 'T :> Argu.IArgParserTemplate> args =
00:01:49 v #2788 > >     args
00:01:49 v #2789 > >     |> parseArgs<'T>
00:01:49 v #2790 > >     |> fun results -> results.GetAllResults ()
00:01:49 v #2791 > >
00:01:49 v #2792 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:49 v #2793 > > //// test
00:01:49 v #2794 > >
00:01:49 v #2795 > > [[<RequireQualifiedAccess>]]
00:01:49 v #2796 > > type Arguments =
00:01:49 v #2797 > >     | [[<Argu.ArguAttributes.MainCommand; Argu.ArguAttributes.ExactlyOnce;
00:01:49 v #2798 > > Argu.ArguAttributes.Last>]]
00:01:49 v #2799 > >         Paths of paths : string list
00:01:49 v #2800 > >
00:01:49 v #2801 > >     interface Argu.IArgParserTemplate with
00:01:49 v #2802 > >         member s.Usage =
00:01:49 v #2803 > >             match s with
00:01:49 v #2804 > >             | Paths _ -> nameof Paths
00:01:49 v #2805 > >
00:01:49 v #2806 > > parseAllArgs<Arguments> [[| "a b"; "c" |]]
00:01:49 v #2807 > > |> _assertEqual [[ Arguments.Paths [[ "a b"; "c" ]] ]]
00:01:49 v #2808 > >
00:01:49 v #2809 > > ── [ 71.85ms - stdout ] ────────────────────────────────────────────────────────
00:01:49 v #2810 > > │ [Paths ["a b"; "c"]]
00:01:49 v #2811 > > │
00:01:49 v #2812 > > │
00:01:49 v #2813 > >
00:01:49 v #2814 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:49 v #2815 > > let inline parseArgsMap<'T when 'T :> Argu.IArgParserTemplate> args =
00:01:49 v #2816 > >     args
00:01:49 v #2817 > >     |> parseAllArgs<'T>
00:01:49 v #2818 > >     |> List.groupBy CommonFSharp.getUnionCaseName<'T>
00:01:49 v #2819 > >     |> Map.ofList
00:01:49 v #2820 > >
00:01:49 v #2821 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:49 v #2822 > > //// test
00:01:49 v #2823 > >
00:01:49 v #2824 > > parseArgsMap<Arguments> [[| "a b"; "c" |]]
00:01:49 v #2825 > > |> _assertEqual (
00:01:49 v #2826 > >     [[ nameof Arguments.Paths, [[ Arguments.Paths [[ "a b"; "c" ]] ]] ]]
00:01:49 v #2827 > >     |> Map.ofList
00:01:49 v #2828 > > )
00:01:49 v #2829 > >
00:01:49 v #2830 > > ── [ 35.74ms - stdout ] ────────────────────────────────────────────────────────
00:01:49 v #2831 > > │ map [("Paths", [Paths ["a b"; "c"]])]
00:01:49 v #2832 > > │
00:01:49 v #2833 > > │
00:01:50 v #2834 > 00:00:14 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 5715 }
00:01:50 v #2835 > 00:00:14 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/fsharp/Runtime.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/fsharp/Runtime.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:01:50 v #2836 > 00:00:14 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/fsharp/Runtime.dib.ipynb to html
00:01:50 v #2837 > 00:00:14 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:01:50 v #2838 > 00:00:14 v #7 !   validate(nb)
00:01:51 v #2839 > 00:00:15 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:01:51 v #2840 > 00:00:15 v #9 !   return _pygments_highlight(
00:01:51 v #2841 > 00:00:15 v #10 ! [NbConvertApp] Writing 292952 bytes to /home/runner/work/polyglot/polyglot/lib/fsharp/Runtime.dib.html
00:01:51 v #2842 > 00:00:15 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 898 }
00:01:51 v #2843 > 00:00:15 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 898 }
00:01:51 v #2844 > 00:00:15 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/fsharp/Runtime.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/fsharp/Runtime.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:01:51 v #2845 > 00:00:15 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:01:51 v #2846 > 00:00:15 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:01:51 v #2847 > 00:00:15 d #16 spiral.run / dib / { exit_code = 0; result_length = 6672 }
00:01:51 d #2848 runtime.execute_with_options_async / { exit_code = 0; output_length = 9656 }
00:01:51 d #8 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path Runtime.dib --retries 3
00:01:51 v #27 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 d #1 writeDibCode / output: Fs / path: Async.dib
00:00:00 d #1 writeDibCode / output: Fs / path: CommonFSharp.dib
00:00:00 d #1 writeDibCode / output: Fs / path: Common.dib
00:00:00 d #1 writeDibCode / output: Fs / path: AsyncSeq.dib
00:00:00 d #2 parseDibCode / output: Fs / file: Async.dib
00:00:00 d #3 parseDibCode / output: Fs / file: Common.dib
00:00:00 d #4 parseDibCode / output: Fs / file: CommonFSharp.dib
00:00:00 d #2 parseDibCode / output: Fs / file: AsyncSeq.dib
00:00:00 d #5 writeDibCode / output: Fs / path: FileSystem.dib
00:00:00 d #5 writeDibCode / output: Fs / path: Runtime.dib
00:00:00 d #6 parseDibCode / output: Fs / file: Runtime.dib
00:00:00 d #6 parseDibCode / output: Fs / file: FileSystem.dib
In [ ]:
{ pwsh ../deps/spiral/apps/wasm/build.ps1 -fast 1 } | Invoke-Block
00:00:00 d #1 writeDibCode / output: Spi / path: spiral_wasm.dib
00:00:00 d #2 parseDibCode / output: Spi / file: spiral_wasm.dib
00:00:00 v #1 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"; options = { command = dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = Some <fun:compiler@87-4>; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:00:00 v #2 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #2 > 00:00:00 d #1 pwd: /home/runner/work/polyglot/polyglot
00:00:00 v #3 > 00:00:00 d #2 dllPath: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release
00:00:00 v #4 > 00:00:00 d #3 targetDir: /home/runner/work/polyglot/polyglot/target/spiral_Eval
00:00:00 v #3 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #4 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #5 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #6 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #7 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #8 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #9 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #10 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #11 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #12 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #13 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #14 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #15 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #16 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #17 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #18 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #19 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #20 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #21 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #22 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #23 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #24 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #25 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #5 > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:00 v #26 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #27 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #28 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:01 v #1 Supervisor.sendJson / port: 13805 / json: {"Ping":true} / result:
00:00:01 v #2 Supervisor.awaitCompiler / Ping / result: 'Some null' / port: 13805 / retry: 1
00:00:01 v #6 > Server bound to: http://localhost:13805
00:00:01 v #29 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:01 d #3 Supervisor.buildFile / takeWhileInclusive / path: spiral_wasm.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:01 d #4 Supervisor.buildFile / AsyncSeq.scan / path: spiral_wasm.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:01 d #5 Supervisor.buildFile / takeWhileInclusive / path: spiral_wasm.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:01 v #6 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # spiral_wasm\nopen rust.rust_operators\nopen rust\nopen sm\u0027_operat...main args\u0027 : ()\n","uri":"file:///home/runner/work/polyglot/spiral/apps/wasm/spiral_wasm.spi"}} / result:
00:00:01 v #7 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/spiral/apps/wasm/spiral_wasm.spi"}} / result:
00:00:01 d #8 Supervisor.buildFile / AsyncSeq.scan / path: spiral_wasm.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:01 d #9 Supervisor.buildFile / takeWhileInclusive / path: spiral_wasm.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:02 d #10 Supervisor.buildFile / AsyncSeq.scan / path: spiral_wasm.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:02 d #11 Supervisor.buildFile / takeWhileInclusive / path: spiral_wasm.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:02 d #12 Supervisor.buildFile / AsyncSeq.scan / path: spiral_wasm.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:02 d #13 Supervisor.buildFile / takeWhileInclusive / path: spiral_wasm.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:03 d #14 Supervisor.buildFile / AsyncSeq.scan / path: spiral_wasm.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:03 d #15 Supervisor.buildFile / takeWhileInclusive / path: spiral_wasm.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:03 d #16 Supervisor.buildFile / AsyncSeq.scan / path: spiral_wasm.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:03 d #17 Supervisor.buildFile / takeWhileInclusive / path: spiral_wasm.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:04 d #18 Supervisor.buildFile / AsyncSeq.scan / path: spiral_wasm.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:04 d #19 Supervisor.buildFile / takeWhileInclusive / path: spiral_wasm.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:04 d #20 Supervisor.buildFile / AsyncSeq.scan / path: spiral_wasm.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:04 d #21 Supervisor.buildFile / takeWhileInclusive / path: spiral_wasm.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:05 d #22 Supervisor.buildFile / AsyncSeq.scan / path: spiral_wasm.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:05 d #23 Supervisor.buildFile / takeWhileInclusive / path: spiral_wasm.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:05 d #24 Supervisor.buildFile / AsyncSeq.scan / path: spiral_wasm.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("&$0")>]
type Ref<'T> = class end
#else
type Ref<'T> = 'T
#endif

#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("clap::Command")>]
#endif
type clap_Command = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("clap::builder::ValueRange")>]
#endif
type clap_builder_ValueRange = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("clap::Arg")>]
#endif
type clap_Arg = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("Vec<$0>")>]
#endif
type Vec<'T> = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>]
type std_string_String = class end
#else
type std_string_String = string
#endif

#if FABLE_COMPILER
[...         #endif
#if FABLE_COMPILER_TYPESCRIPT
            match v344 with Ok x -> x | Error e -> failwith $"resultm.unwrap' / e: {e}"
            #endif
#if FABLE_COMPILER_PYTHON
            match v344 with Ok x -> x | Error e -> failwith $"resultm.unwrap' / e: {e}"
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            match v344 with Ok x -> x | Error e -> failwith $"resultm.unwrap' / e: {e}"
            #endif
#else
            match v344 with Ok x -> x | Error e -> failwith $"resultm.unwrap' / e: {e}"
            #endif
            // run_target_args' is_unit
            ()
        | _ ->
            ()
    0
let v0 : ((string []) -> int32) = closure0()
let main args = v0 args
()

00:00:05 d #25 Supervisor.buildFile / takeWhileInclusive / path: spiral_wasm.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("&$0")>]
type Ref<'T> = class end
#else
type Ref<'T> = 'T
#endif

#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("clap::Command")>]
#endif
type clap_Command = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("clap::builder::ValueRange")>]
#endif
type clap_builder_ValueRange = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("clap::Arg")>]
#endif
type clap_Arg = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("Vec<$0>")>]
#endif
type Vec<'T> = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>]
type std_string_String = class end
#else
type std_string_String = string
#endif

#if FABLE_COMPILER
[...         #endif
#if FABLE_COMPILER_TYPESCRIPT
            match v344 with Ok x -> x | Error e -> failwith $"resultm.unwrap' / e: {e}"
            #endif
#if FABLE_COMPILER_PYTHON
            match v344 with Ok x -> x | Error e -> failwith $"resultm.unwrap' / e: {e}"
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            match v344 with Ok x -> x | Error e -> failwith $"resultm.unwrap' / e: {e}"
            #endif
#else
            match v344 with Ok x -> x | Error e -> failwith $"resultm.unwrap' / e: {e}"
            #endif
            // run_target_args' is_unit
            ()
        | _ ->
            ()
    0
let v0 : ((string []) -> int32) = closure0()
let main args = v0 args
()

00:00:05 d #26 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite
00:00:05 v #30 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 d #1 persistCodeProject / packages: [Fable.Core] / modules: [lib/spiral/common.fsx; lib/spiral/sm.fsx; lib/spiral/crypto.fsx; ... ] / name: spiral_wasm / hash:  / code.Length: 232460
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/target/Builder/spiral_wasm
polyglot/lib/spiral/lib.ps1/GetTargetDir / targetDir: /home/runner/work/polyglot/polyglot/target/Builder/spiral_wasm
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot
polyglot/lib/spiral/lib.ps1/BuildFable / TargetDir: /home/runner/work/polyglot/polyglot/target/Builder/spiral_wasm / ProjectName: spiral_wasm / Language: rs / Runtime:  / root: /home/runner/work/polyglot/polyglot
Fable 5.0.0-alpha.2: F# to Rust compiler (status: alpha)

Thanks to the contributor! @delneg
Stand with Ukraine! https://standwithukraine.com.ua/

Parsing target/Builder/spiral_wasm/spiral_wasm.fsproj...
Project and references (14 source files) parsed in 3114ms

Started Fable compilation...

Fable compilation finished in 8716ms

./lib/spiral/sm.fsx(556,0): (556,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/common.fsx(2117,0): (2117,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/async_.fsx(250,0): (250,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/threading.fsx(139,0): (139,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/crypto.fsx(2344,0): (2344,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/date_time.fsx(2527,0): (2527,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/platform.fsx(120,0): (120,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/networking.fsx(4935,0): (4935,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/trace.fsx(2150,0): (2150,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/runtime.fsx(7101,0): (7101,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/file_system.fsx(17438,0): (17438,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/fsharp/Common.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/target/Builder/spiral_wasm/target/rs/lib/fsharp/Common.rs / to: /home/runner/work/polyglot/polyglot/lib/fsharp/Common.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/common.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/target/Builder/spiral_wasm/target/rs/lib/spiral/common.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/common.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/date_time.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/target/Builder/spiral_wasm/target/rs/lib/spiral/date_time.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/date_time.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/async_.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/target/Builder/spiral_wasm/target/rs/lib/spiral/async_.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/async_.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/platform.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/target/Builder/spiral_wasm/target/rs/lib/spiral/platform.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/platform.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/runtime.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/target/Builder/spiral_wasm/target/rs/lib/spiral/runtime.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/runtime.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/threading.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/target/Builder/spiral_wasm/target/rs/lib/spiral/threading.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/threading.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/networking.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/target/Builder/spiral_wasm/target/rs/lib/spiral/networking.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/networking.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/file_system.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/target/Builder/spiral_wasm/target/rs/lib/spiral/file_system.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/file_system.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/sm.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/target/Builder/spiral_wasm/target/rs/lib/spiral/sm.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/sm.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/crypto.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/target/Builder/spiral_wasm/target/rs/lib/spiral/crypto.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/crypto.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/trace.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/target/Builder/spiral_wasm/target/rs/lib/spiral/trace.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/trace.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/lib.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/target/Builder/spiral_wasm/target/rs/lib/spiral/lib.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/lib.rs
spiral/apps/wasm/build.ps1 / path: /home/runner/work/polyglot/polyglot/target/Builder/spiral_wasm/target/rs/spiral_wasm.rs
 Downloading crates ...
  Downloaded async-broadcast v0.5.1
  Downloaded actix_derive v0.6.2
  Downloaded arbitrary v1.4.1
  Downloaded block-buffer v0.9.0
  Downloaded ident_case v1.0.1
  Downloaded bitcoin-internals v0.2.0
  Downloaded atty v0.2.14
  Downloaded hex v0.3.2
  Downloaded heck v0.4.1
  Downloaded json-patch v2.0.0
  Downloaded phf_shared v0.10.0
  Downloaded indexmap v1.9.3
  Downloaded proc-macro-crate v1.3.1
  Downloaded serde_repr v0.1.19
  Downloaded scroll_derive v0.11.1
  Downloaded signal-hook-mio v0.2.4
  Downloaded smawk v0.3.2
  Downloaded smart-default v0.6.0
  Downloaded serde_with v3.12.0
  Downloaded signal-hook v0.3.17
  Downloaded sync_wrapper v0.1.2
  Downloaded strum v0.24.1
  Downloaded rustls v0.23.20
  Downloaded rustix v0.38.42
  Downloaded color-eyre v0.6.3
  Downloaded gimli v0.26.2
  Downloaded zstd v0.11.2+zstd.1.5.2
  Downloaded waker-fn v1.2.0
  Downloaded near-account-id v1.0.0
  Downloaded near-abi v0.4.3
  Downloaded serde_with_macros v3.12.0
  Downloaded ordered-stream v0.2.0
  Downloaded pbkdf2 v0.11.0
  Downloaded near-gas v0.2.5
  Downloaded sha3 v0.10.8
  Downloaded newline-converter v0.3.0
  Downloaded scroll v0.11.0
  Downloaded near-socialdb-client v0.3.2
  Downloaded near-sandbox-utils v0.9.0
  Downloaded near_schemafy_core v0.7.0
  Downloaded near-token v0.2.1
  Downloaded num-rational v0.3.2
  Downloaded opentelemetry-otlp v0.15.0
  Downloaded opentelemetry-semantic-conventions v0.14.0
  Downloaded near-workspaces v0.11.1
  Downloaded serde_yaml v0.9.34+deprecated
  Downloaded plain v0.2.3
  Downloaded opentelemetry_sdk v0.22.1
  Downloaded opentelemetry-proto v0.5.0
  Downloaded tracing-opentelemetry v0.23.0
  Downloaded tonic v0.11.0
  Downloaded near-primitives v0.23.0
  Downloaded easy-ext v1.0.2
  Downloaded proc-macro-crate v3.2.0
  Downloaded near-sdk v5.7.0
  Downloaded secp256k1-sys v0.8.1
  Downloaded nix v0.26.4
  Downloaded near-cli-rs v0.11.1
  Downloaded opentelemetry v0.22.0
  Downloaded num-bigint v0.3.3
  Downloaded tracing-indicatif v0.3.8
  Downloaded textwrap v0.16.1
  Downloaded num-rational v0.4.2
  Downloaded num-complex v0.4.6
  Downloaded nom-supreme v0.6.0
  Downloaded near-sdk-macros v5.7.0
  Downloaded near-performance-metrics v0.23.0
  Downloaded near-parameters v0.23.0
  Downloaded near-gas v0.3.0
  Downloaded near-fmt v0.23.0
  Downloaded near-async-derive v0.23.0
  Downloaded tokio-io-timeout v1.2.0
  Downloaded num v0.4.3
  Downloaded near_schemafy_lib v0.7.0
  Downloaded near-token v0.3.0
  Downloaded tracing-error v0.2.1
  Downloaded tracing-appender v0.2.3
  Downloaded near-jsonrpc-primitives v0.23.0
  Downloaded tokio-retry v0.3.0
  Downloaded near-stdx v0.23.0
  Downloaded near-primitives-core v0.23.0
  Downloaded near-crypto v0.23.0
  Downloaded near-sandbox-utils v0.8.0
  Downloaded near-config-utils v0.23.0
  Downloaded new_debug_unreachable v1.0.6
  Downloaded near-time v0.23.0
  Downloaded near-sys v0.2.2
  Downloaded near-sandbox-utils v0.13.0
  Downloaded near-rpc-error-macro v0.23.0
  Downloaded near-rpc-error-core v0.23.0
  Downloaded near-o11y v0.23.0
  Downloaded near-jsonrpc-client v0.10.1
  Downloaded near-chain-configs v0.23.0
  Downloaded prettyplease v0.1.25
  Downloaded protobuf v2.28.0
  Downloaded opaque-debug v0.3.1
  Downloaded near-async v0.23.0
  Downloaded miniz_oxide v0.8.2
  Downloaded miniz_oxide v0.7.4
  Downloaded linux-raw-sys v0.3.8
  Downloaded smart-default v0.7.1
  Downloaded zvariant_utils v1.0.1
  Downloaded zbus v3.15.2
  Downloaded winnow v0.6.22
  Downloaded wasmparser v0.211.1
  Downloaded names v0.14.0
  Downloaded zvariant v3.15.2
  Downloaded zip v0.5.13
  Downloaded xml-rs v0.8.25
  Downloaded memmap2 v0.5.10
  Downloaded linux-keyutils v0.2.4
  Downloaded zvariant_derive v3.15.2
  Downloaded zbus_names v2.6.1
  Downloaded zbus_macros v3.15.2
  Downloaded vt100 v0.15.2
  Downloaded near-abi-client-macros v0.1.1
  Downloaded near-abi-client-impl v0.1.1
  Downloaded near-abi-client v0.1.1
  Downloaded memoffset v0.7.1
  Downloaded zstd-safe v5.0.2+zstd.1.5.2
  Downloaded xdg-home v1.3.0
  Downloaded wasmparser v0.83.0
  Downloaded urlencoding v2.1.3
  Downloaded uriparse v0.6.4
  Downloaded unicode-normalization v0.1.22
  Downloaded unicode-linebreak v0.1.5
  Downloaded uint v0.9.5
  Downloaded term v0.7.0
  Downloaded csv v1.3.1
  Downloaded uuid v0.8.2
  Downloaded ureq v2.12.1
  Downloaded rustix v0.37.28
  Downloaded symbolic-debuginfo v8.8.0
  Downloaded portable-atomic v1.10.0
  Downloaded polling v2.8.0
  Downloaded libloading v0.8.6
  Downloaded string_cache v0.8.7
  Downloaded curve25519-dalek v4.1.3
  Downloaded slipped10 v0.4.6
  Downloaded sha2 v0.9.9
  Downloaded symbolic-common v8.8.0
  Downloaded strum_macros v0.24.3
  Downloaded password-hash v0.4.2
  Downloaded scroll v0.10.2
  Downloaded socket2 v0.4.10
  Downloaded gimli v0.28.1
  Downloaded color-spantrace v0.2.1
  Downloaded shellexpand v3.1.0
  Downloaded reed-solomon-erasure v4.0.2
  Downloaded prost-derive v0.12.6
  Downloaded pdb v0.7.0
  Downloaded hyper v0.14.32
  Downloaded h2 v0.3.26
  Downloaded crossterm v0.25.0
  Downloaded prost v0.12.6
  Downloaded primitive-types v0.10.1
  Downloaded prettytable v0.10.0
  Downloaded owo-colors v3.5.0
  Downloaded secret-service v3.1.0
  Downloaded secp256k1 v0.27.0
  Downloaded prometheus v0.13.4
  Downloaded http v0.2.12
  Downloaded goblin v0.5.4
  Downloaded ed25519-dalek v2.1.1
  Downloaded darling_core v0.20.10
  Downloaded cc v1.2.7
  Downloaded backtrace v0.3.71
  Downloaded axum v0.6.20
  Downloaded inquire v0.7.5
  Downloaded glob v0.3.2
  Downloaded colored v2.2.0
  Downloaded bip39 v2.1.0
  Downloaded keyring v2.3.3
  Downloaded keccak v0.1.5
  Downloaded interactive-clap-derive v0.2.10
  Downloaded indicatif v0.17.9
  Downloaded encode_unicode v1.0.0
  Downloaded cargo-near v0.6.4
  Downloaded futures-lite v1.13.0
  Downloaded enum-map-derive v0.17.0
  Downloaded enum-map v2.7.3
  Downloaded ed25519 v2.2.3
  Downloaded easy-ext v0.2.9
  Downloaded csv-core v0.1.11
  Downloaded borsh v1.5.3
  Downloaded bitcoin_hashes v0.13.0
  Downloaded ordered-float v4.6.0
  Downloaded jsonptr v0.4.7
  Downloaded json_comments v0.2.2
  Downloaded http-body v0.4.6
  Downloaded fs2 v0.4.3
  Downloaded fluent-uri v0.1.4
  Downloaded elementtree v0.7.0
  Downloaded derivative v2.2.0
  Downloaded debugid v0.7.3
  Downloaded darling_macro v0.20.10
  Downloaded darling v0.20.10
  Downloaded curve25519-dalek-derive v0.1.1
  Downloaded convert_case v0.5.0
  Downloaded bs58 v0.5.1
  Downloaded bs58 v0.4.0
  Downloaded brownstone v1.1.0
  Downloaded borsh-derive v1.5.3
  Downloaded blake2 v0.10.6
  Downloaded axum-core v0.3.4
  Downloaded async-lock v2.8.0
  Downloaded async-io v1.13.0
  Downloaded addr2line v0.21.0
  Downloaded joinery v2.1.0
  Downloaded io-lifetimes v1.0.11
  Downloaded interactive-clap v0.2.10
  Downloaded indent_write v2.2.0
  Downloaded hyper-timeout v0.4.1
  Downloaded hmac v0.9.0
  Downloaded hex-conservative v0.1.2
  Downloaded fuzzy-matcher v0.3.7
  Downloaded fixed-hash v0.7.0
  Downloaded fastrand v1.9.0
  Downloaded event-listener v2.5.3
  Downloaded enumflags2_derive v0.7.10
  Downloaded enumflags2 v0.7.10
  Downloaded dmsort v1.0.2
  Downloaded dirs v5.0.1
  Downloaded digest v0.9.0
  Downloaded crypto-mac v0.9.1
  Downloaded crypto-hash v0.3.4
  Downloaded cargo-util v0.1.2
  Downloaded async-stream v0.3.6
  Downloaded async-executor v1.13.1
  Downloaded actix v0.13.5
  Downloaded fallible-iterator v0.2.0
  Downloaded derive_arbitrary v1.4.1
  Downloaded constant_time_eq v0.1.5
  Downloaded binary-install v0.2.0
  Downloaded async-recursion v1.1.1
  Downloaded async-fs v1.6.0
  Downloaded adler v1.0.2
  Downloaded async-stream-impl v0.3.6
  Downloaded actix-rt v2.10.0
  Downloaded actix-macros v0.2.4
  Downloaded Inflector v0.11.4
  Downloaded openssl-src v300.4.1+3.4.0
   Compiling libc v0.2.169
   Compiling serde v1.0.217
   Compiling syn v2.0.94
   Compiling version_check v0.9.5
   Compiling shlex v1.3.0
   Compiling once_cell v1.20.2
   Compiling jobserver v0.1.32
   Compiling generic-array v0.14.7
   Compiling smallvec v1.13.2
   Compiling cc v1.2.7
   Compiling futures-core v0.3.31
   Compiling pkg-config v0.3.31
   Compiling lock_api v0.4.12
   Compiling parking_lot_core v0.9.10
   Compiling scopeguard v1.2.0
   Compiling getrandom v0.2.15
   Compiling bytes v1.9.0
   Compiling parking_lot v0.12.3
   Compiling byteorder v1.5.0
   Compiling log v0.4.22
   Compiling signal-hook-registry v1.4.2
   Compiling hashbrown v0.15.2
   Compiling equivalent v1.0.1
   Compiling toml_datetime v0.6.8
   Compiling futures-sink v0.3.31
   Compiling socket2 v0.5.8
   Compiling mio v1.0.3
   Compiling indexmap v2.7.0
   Compiling synstructure v0.13.1
   Compiling tracing-core v0.1.33
   Compiling subtle v2.6.1
   Compiling rand_core v0.6.4
   Compiling futures-channel v0.3.31
   Compiling crypto-common v0.1.6
   Compiling num-traits v0.2.19
   Compiling anyhow v1.0.95
   Compiling block-buffer v0.10.4
   Compiling syn v1.0.109
   Compiling fnv v1.0.7
   Compiling cfg_aliases v0.2.1
   Compiling digest v0.10.7
   Compiling winnow v0.6.22
   Compiling zstd-sys v2.0.13+zstd.1.5.6
   Compiling rustversion v1.0.19
   Compiling serde_derive v1.0.217
   Compiling zerofrom-derive v0.1.5
   Compiling yoke-derive v0.7.5
   Compiling tokio-macros v2.5.0
   Compiling zerovec-derive v0.10.3
   Compiling tokio v1.43.0
   Compiling tracing-attributes v0.1.28
   Compiling tracing v0.1.41
   Compiling futures-macro v0.3.31
   Compiling displaydoc v0.2.5
   Compiling futures-util v0.3.31
   Compiling zerocopy-derive v0.7.35
   Compiling zerocopy v0.7.35
   Compiling toml_edit v0.22.22
   Compiling crossbeam-utils v0.8.21
   Compiling icu_provider_macros v1.5.0
   Compiling bitflags v2.6.0
   Compiling proc-macro-crate v3.2.0
   Compiling ppv-lite86 v0.2.20
   Compiling thiserror-impl v1.0.69
   Compiling lazy_static v1.5.0
   Compiling rand_chacha v0.3.1
   Compiling borsh-derive v1.5.3
   Compiling serde_json v1.0.134
   Compiling rand v0.8.5
   Compiling borsh v1.5.3
   Compiling stable_deref_trait v1.2.0
   Compiling thiserror v1.0.69
   Compiling tokio-util v0.7.13
   Compiling sha2 v0.10.8
   Compiling percent-encoding v2.3.1
   Compiling semver v1.0.24
   Compiling zerofrom v0.1.5
   Compiling bitflags v1.3.2
   Compiling yoke v0.7.5
   Compiling num-integer v0.1.46
   Compiling tower-service v0.3.3
   Compiling httparse v1.9.5
   Compiling memchr v2.7.4
   Compiling zerovec v0.10.4
   Compiling hex v0.4.3
   Compiling ring v0.17.8
   Compiling try-lock v0.2.5
   Compiling cfg-if v1.0.0
   Compiling want v0.3.1
   Compiling async-trait v0.1.85
   Compiling typenum v1.17.0
   Compiling static_assertions v1.1.0
   Compiling tinystr v0.7.6
   Compiling http v0.2.12
   Compiling thread_local v1.1.8
   Compiling writeable v0.5.5
   Compiling regex-syntax v0.6.29
   Compiling litemap v0.7.4
   Compiling powerfmt v0.2.0
   Compiling deranged v0.3.11
   Compiling icu_locid v1.5.0
   Compiling regex-automata v0.1.10
   Compiling openssl-src v300.4.1+3.4.0
   Compiling num_cpus v1.16.0
   Compiling tower-layer v0.3.3
   Compiling vcpkg v0.2.15
   Compiling time-core v0.1.2
   Compiling overload v0.1.1
   Compiling num-conv v0.1.0
   Compiling time v0.3.37
   Compiling nu-ansi-term v0.46.0
   Compiling openssl-sys v0.9.104
   Compiling matchers v0.1.0
   Compiling futures-executor v0.3.31
   Compiling icu_provider v1.5.0
   Compiling http-body v0.4.6
   Compiling aho-corasick v1.1.3
   Compiling rustc_version v0.4.1
   Compiling sharded-slab v0.1.7
   Compiling crossbeam-channel v0.5.14
   Compiling serde_repr v0.1.19
   Compiling pin-project-internal v1.1.8
   Compiling tracing-log v0.2.0
   Compiling bzip2-sys v0.1.11+1.0.8
   Compiling indexmap v1.9.3
   Compiling num-bigint v0.3.3
   Compiling zstd-safe v5.0.2+zstd.1.5.2
   Compiling regex-syntax v0.8.5
   Compiling base64 v0.21.7
   Compiling icu_locid_transform_data v1.5.0
   Compiling pin-project v1.1.8
   Compiling icu_locid_transform v1.5.0
   Compiling tracing-subscriber v0.3.19
   Compiling regex-automata v0.4.9
   Compiling curve25519-dalek v4.1.3
   Compiling h2 v0.3.26
   Compiling icu_collections v1.5.0
   Compiling near-account-id v1.0.0
   Compiling axum-core v0.3.4
   Compiling num-rational v0.3.2
   Compiling base64 v0.22.1
   Compiling icu_properties_data v1.5.0
   Compiling httpdate v1.0.3
   Compiling mime v0.3.17
   Compiling strsim v0.11.1
   Compiling convert_case v0.4.0
   Compiling ident_case v1.0.1
   Compiling either v1.13.0
   Compiling hashbrown v0.12.3
   Compiling crunchy v0.2.2
   Compiling derive_more v0.99.18
   Compiling itertools v0.12.1
   Compiling darling_core v0.20.10
   Compiling hyper v0.14.32
   Compiling icu_properties v1.5.1
   Compiling regex v1.11.1
   Compiling axum v0.6.20
   Compiling tokio-stream v0.1.17
   Compiling curve25519-dalek-derive v0.1.1
   Compiling derive_arbitrary v1.4.1
   Compiling enum-map-derive v0.17.0
   Compiling secp256k1-sys v0.8.1
   Compiling signature v2.2.0
   Compiling utf8_iter v1.0.4
   Compiling heck v0.4.1
   Compiling urlencoding v2.1.3
   Compiling utf16_iter v1.0.5
   Compiling rustls v0.23.20
   Compiling write16 v1.0.0
   Compiling bs58 v0.4.0
   Compiling heck v0.5.0
   Compiling rustls-pki-types v1.10.1
   Compiling schemars v0.8.21
   Compiling icu_normalizer_data v1.5.0
   Compiling icu_normalizer v1.5.0
   Compiling opentelemetry v0.22.0
   Compiling strum_macros v0.24.3
   Compiling arbitrary v1.4.1
   Compiling ed25519 v2.2.3
   Compiling enum-map v2.7.3
   Compiling darling_macro v0.20.10
   Compiling prost-derive v0.12.6
   Compiling tower v0.4.13
   Compiling concurrent-queue v2.5.0
   Compiling tokio-io-timeout v1.2.0
   Compiling async-stream-impl v0.3.6
   Compiling ordered-float v4.6.0
   Compiling serde_derive_internals v0.29.1
   Compiling block-padding v0.3.3
   Compiling matchit v0.7.3
   Compiling sync_wrapper v0.1.2
   Compiling foreign-types-shared v0.1.1
   Compiling openssl v0.10.68
   Compiling glob v0.3.2
   Compiling opentelemetry_sdk v0.22.1
   Compiling schemars_derive v0.8.21
   Compiling foreign-types v0.3.2
   Compiling inout v0.1.3
   Compiling prost v0.12.6
   Compiling async-stream v0.3.6
   Compiling hyper-timeout v0.4.1
   Compiling uint v0.9.5
   Compiling darling v0.20.10
   Compiling near-primitives-core v0.23.0
   Compiling ed25519-dalek v2.1.1
   Compiling strum v0.24.1
   Compiling idna_adapter v1.2.0
   Compiling fixed-hash v0.7.0
   Compiling form_urlencoded v1.2.1
   Compiling openssl-macros v0.1.1
   Compiling http v1.2.0
   Compiling winnow v0.5.40
   Compiling fastrand v2.3.0
   Compiling rustix v0.38.42
   Compiling json_comments v0.2.2
   Compiling protobuf v2.28.0
   Compiling near-config-utils v0.23.0
   Compiling primitive-types v0.10.1
   Compiling toml_edit v0.19.15
   Compiling idna v1.0.3
   Compiling tonic v0.11.0
   Compiling secp256k1 v0.27.0
   Compiling cipher v0.4.4
   Compiling actix-rt v2.10.0
   Compiling actix_derive v0.6.2
   Compiling actix-macros v0.2.4
   Compiling blake2 v0.10.6
   Compiling hmac v0.12.1
   Compiling proc-macro-error-attr v1.0.4
   Compiling near-stdx v0.23.0
   Compiling linux-raw-sys v0.4.14
   Compiling itoa v1.0.14
   Compiling ryu v1.0.18
   Compiling zstd-safe v7.2.1
   Compiling adler2 v2.0.0
   Compiling prometheus v0.13.4
   Compiling arrayvec v0.7.6
   Compiling miniz_oxide v0.8.2
   Compiling clap_builder v4.5.23
   Compiling near-crypto v0.23.0
   Compiling actix v0.13.5
   Compiling opentelemetry-proto v0.5.0
   Compiling proc-macro-crate v1.3.1
   Compiling url v2.5.4
   Compiling http-body v1.0.1
   Compiling event-listener v5.3.1
   Compiling clap_derive v4.5.18
   Compiling futures v0.3.31
   Compiling sha1 v0.10.6
   Compiling zvariant_utils v1.0.1
   Compiling proc-macro-error v1.0.4
   Compiling crc32fast v1.4.2
   Compiling cpufeatures v0.2.16
   Compiling native-tls v0.2.12
   Compiling reed-solomon-erasure v4.0.2
   Compiling opentelemetry-semantic-conventions v0.14.0
   Compiling unsafe-libyaml v0.2.11
   Compiling io-lifetimes v1.0.11
   Compiling event-listener v2.5.3
   Compiling serde_yaml v0.9.34+deprecated
   Compiling opentelemetry-otlp v0.15.0
   Compiling chrono v0.4.39
   Compiling flate2 v1.0.35
   Compiling clap v4.5.23
   Compiling event-listener-strategy v0.5.3
   Compiling aes v0.8.4
   Compiling h2 v0.4.7
   Compiling serde_with_macros v3.12.0
   Compiling tracing-opentelemetry v0.23.0
   Compiling tracing-appender v0.2.3
   Compiling near-time v0.23.0
   Compiling near-rpc-error-core v0.23.0
   Compiling enumflags2_derive v0.7.10
   Compiling dirs-sys-next v0.1.2
   Compiling futures-lite v2.5.0
   Compiling polling v2.8.0
   Compiling memoffset v0.7.1
   Compiling fastrand v1.9.0
   Compiling spin v0.9.8
   Compiling unicode-width v0.1.14
   Compiling rustix v0.37.28
   Compiling openssl-probe v0.1.5
   Compiling untrusted v0.9.0
   Compiling keccak v0.1.5
   Compiling waker-fn v1.2.0
   Compiling siphasher v0.3.11
   Compiling dyn-clone v1.0.17
   Compiling itertools v0.10.5
   Compiling sha3 v0.10.8
   Compiling futures-lite v1.13.0
   Compiling enumflags2 v0.7.10
   Compiling dirs-next v2.0.0
   Compiling near-rpc-error-macro v0.23.0
   Compiling hyper v1.5.2
   Compiling near-o11y v0.23.0
   Compiling serde_with v3.12.0
   Compiling zstd v0.13.2
   Compiling async-channel v2.3.1
   Compiling near-parameters v0.23.0
   Compiling async-lock v2.8.0
   Compiling zvariant_derive v3.15.2
   Compiling near-performance-metrics v0.23.0
   Compiling piper v0.2.4
   Compiling near-fmt v0.23.0
   Compiling bytesize v1.3.0
   Compiling smart-default v0.6.0
   Compiling near-async-derive v0.23.0
   Compiling filetime v0.2.25
   Compiling async-fs v1.6.0
   Compiling async-io v1.13.0
   Compiling proc-macro2 v1.0.92
   Compiling base64ct v1.6.0
   Compiling unicode-ident v1.0.14
   Compiling easy-ext v0.2.9
   Compiling signal-hook v0.3.17
   Compiling linux-raw-sys v0.3.8
   Compiling near-primitives v0.23.0
   Compiling password-hash v0.4.2
   Compiling near-async v0.23.0
   Compiling blocking v1.6.1
   Compiling zvariant v3.15.2
   Compiling interactive-clap-derive v0.2.10
   Compiling hyper-util v0.1.10
   Compiling rustls-webpki v0.102.8
   Compiling Inflector v0.11.4
   Compiling http-body-util v0.1.2
   Compiling num-bigint v0.4.6
   Compiling backtrace v0.3.71
   Compiling socket2 v0.4.10
   Compiling sync_wrapper v1.0.2
   Compiling ahash v0.8.11
   Compiling vte_generate_state_changes v0.1.2
   Compiling gimli v0.28.1
   Compiling adler v1.0.2
   Compiling zeroize v1.8.1
   Compiling eyre v0.6.12
   Compiling bitcoin-internals v0.2.0
   Compiling portable-atomic v1.10.0
   Compiling miniz_oxide v0.7.4
   Compiling addr2line v0.21.0
   Compiling vte v0.11.1
   Compiling tower v0.5.2
   Compiling num-rational v0.4.2
   Compiling near-chain-configs v0.23.0
   Compiling pbkdf2 v0.11.0
   Compiling nix v0.26.4
   Compiling zstd v0.11.2+zstd.1.5.2
   Compiling interactive-clap v0.2.10
   Compiling zbus_names v2.6.1
   Compiling bzip2 v0.4.4
   Compiling xattr v1.4.0
   Compiling quote v1.0.38
   Compiling webpki-roots v0.26.7
   Compiling async-executor v1.13.1
   Compiling async-broadcast v0.5.1
   Compiling zbus_macros v3.15.2
   Compiling serde_urlencoded v0.7.1
   Compiling rustls-pemfile v2.2.0
   Compiling tracing-error v0.2.1
   Compiling num-iter v0.1.45
   Compiling derivative v2.2.0
   Compiling async-recursion v1.1.1
   Compiling num-complex v0.4.6
   Compiling mio v0.8.11
   Compiling digest v0.9.0
   Compiling xdg-home v1.3.0
   Compiling ordered-stream v0.2.0
   Compiling object v0.32.2
   Compiling indenter v0.3.3
   Compiling ipnet v2.10.1
   Compiling owo-colors v3.5.0
   Compiling unicode-width v0.2.0
   Compiling option-ext v0.2.0
   Compiling uuid v0.8.2
   Compiling constant_time_eq v0.1.5
   Compiling tinyvec_macros v0.1.1
   Compiling radium v0.7.0
   Compiling rustc-demangle v0.1.24
   Compiling ureq v2.12.1
   Compiling zip v0.6.6
   Compiling tinyvec v1.8.1
   Compiling color-spantrace v0.2.1
   Compiling dirs-sys v0.4.1
   Compiling console v0.15.10
   Compiling zbus v3.15.2
   Compiling signal-hook-mio v0.2.4
   Compiling num v0.4.3
   Compiling tar v0.4.43
   Compiling near-jsonrpc-primitives v0.23.0
   Compiling vt100 v0.15.2
   Compiling near-abi v0.4.3
   Compiling phf_shared v0.10.0
   Compiling uriparse v0.6.4
   Compiling near_schemafy_core v0.7.0
   Compiling hkdf v0.12.4
   Compiling cbc v0.1.2
   Compiling serde_spanned v0.6.8
   Compiling scroll_derive v0.11.1
   Compiling crypto-mac v0.9.1
   Compiling block-buffer v0.9.0
   Compiling is-docker v0.2.0
   Compiling fs2 v0.4.3
   Compiling csv-core v0.1.11
   Compiling new_debug_unreachable v1.0.6
   Compiling opaque-debug v0.3.1
   Compiling camino v1.1.9
   Compiling tap v1.0.1
   Compiling rust_decimal v1.36.0
   Compiling is_executable v0.1.2
   Compiling fallible-iterator v0.2.0
   Compiling number_prefix v0.4.0
   Compiling same-file v1.0.6
   Compiling pin-project-lite v0.2.15
   Compiling iana-time-zone v0.1.61
   Compiling near-sandbox-utils v0.8.0
   Compiling hex v0.3.2
   Compiling precomputed-hash v0.1.1
   Compiling unicode-segmentation v1.12.0
   Compiling minimal-lexical v0.2.1
   Compiling hex-conservative v0.1.2
   Compiling bitcoin_hashes v0.13.0
   Compiling newline-converter v0.3.0
   Compiling nom v7.1.3
   Compiling string_cache v0.8.7
   Compiling binary-install v0.2.0
   Compiling walkdir v2.5.0
   Compiling indicatif v0.17.9
   Compiling wyz v0.5.1
   Compiling sha2 v0.9.9
   Compiling csv v1.3.1
   Compiling scroll v0.11.0
   Compiling is-wsl v0.4.0
   Compiling hmac v0.9.0
   Compiling secret-service v3.1.0
   Compiling near_schemafy_lib v0.7.0
   Compiling hashbrown v0.14.5
   Compiling crossterm v0.25.0
   Compiling color-eyre v0.6.3
   Compiling dirs v5.0.1
   Compiling unicode-normalization v0.1.22
   Compiling debugid v0.7.3
   Compiling near-token v0.2.1
   Compiling term v0.7.0
   Compiling tempfile v3.15.0
   Compiling brownstone v1.1.0
   Compiling fuzzy-matcher v0.3.7
   Compiling linux-keyutils v0.2.4
   Compiling fxhash v0.2.1
   Compiling is-terminal v0.4.13
   Compiling memmap2 v0.5.10
   Compiling shell-escape v0.1.5
   Compiling names v0.14.0
   Compiling joinery v2.1.0
   Compiling indent_write v2.2.0
   Compiling pathdiff v0.2.3
   Compiling home v0.5.11
   Compiling smawk v0.3.2
   Compiling funty v2.0.0
   Compiling prettyplease v0.1.25
   Compiling unicode-linebreak v0.1.5
   Compiling scroll v0.10.2
   Compiling bs58 v0.5.1
   Compiling plain v0.2.3
   Compiling encode_unicode v1.0.0
   Compiling xml-rs v0.8.25
   Compiling goblin v0.5.4
   Compiling prettytable v0.10.0
   Compiling elementtree v0.7.0
   Compiling pdb v0.7.0
   Compiling bitvec v1.0.1
   Compiling textwrap v0.16.1
   Compiling open v5.3.2
   Compiling nom-supreme v0.6.0
   Compiling symbolic-common v8.8.0
   Compiling inquire v0.7.5
   Compiling keyring v2.3.3
   Compiling bip39 v2.1.0
   Compiling shellexpand v3.1.0
   Compiling near-abi-client-impl v0.1.1
   Compiling wasmparser v0.211.1
   Compiling slipped10 v0.4.6
   Compiling tracing-indicatif v0.3.8
   Compiling toml v0.8.19
   Compiling gimli v0.26.2
   Compiling near-gas v0.2.5
   Compiling zip v0.5.13
   Compiling env_filter v0.1.3
   Compiling linked-hash-map v0.5.6
   Compiling cargo-platform v0.1.9
   Compiling smart-default v0.7.1
   Compiling humantime v2.1.0
   Compiling near-sdk-macros v5.7.0
   Compiling wasmparser v0.83.0
   Compiling near-sandbox-utils v0.9.0
   Compiling dmsort v1.0.2
   Compiling easy-ext v1.0.2
   Compiling shell-words v1.1.0
   Compiling lazycell v1.3.0
   Compiling env_logger v0.11.6
   Compiling symbolic-debuginfo v8.8.0
   Compiling cargo_metadata v0.18.1
   Compiling near-abi-client-macros v0.1.1
   Compiling near-workspaces v0.11.1
   Compiling strum_macros v0.26.4
   Compiling jsonptr v0.4.7
   Compiling colored v2.2.0
   Compiling atty v0.2.14
   Compiling libloading v0.8.6
   Compiling convert_case v0.5.0
   Compiling near-sandbox-utils v0.13.0
   Compiling dunce v1.0.5
   Compiling strum v0.26.3
   Compiling near-abi-client v0.1.1
   Compiling json-patch v2.0.0
   Compiling tokio-retry v0.3.0
   Compiling near-gas v0.3.0
   Compiling near-token v0.3.0
   Compiling uuid v1.11.0
   Compiling near-sys v0.2.2
   Compiling near-sdk v5.7.0
   Compiling fable_library_rust v0.1.0 (/home/runner/work/polyglot/spiral/deps/polyglot/lib/rust/fable/fable_modules/fable-library-rust)
   Compiling crypto-hash v0.3.4
   Compiling cargo-util v0.1.2
   Compiling tokio-native-tls v0.3.1
   Compiling hyper-tls v0.6.0
   Compiling reqwest v0.12.12
   Compiling near-jsonrpc-client v0.10.1
   Compiling near-socialdb-client v0.3.2
   Compiling near-cli-rs v0.11.1
   Compiling cargo-near v0.6.4
   Compiling spiral_wasm v0.0.1 (/home/runner/work/polyglot/spiral/apps/wasm)
    Finished `release` profile [optimized] target(s) in 4m 32s
In [ ]:
{ pwsh ../lib/math/build.ps1 } | Invoke-Block
00:00:00 v #1 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"; options = { command = dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = Some <fun:compiler@87-4>; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:00:00 v #2 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #2 > 00:00:00 d #1 pwd: /home/runner/work/polyglot/polyglot
00:00:00 v #3 > 00:00:00 d #2 dllPath: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release
00:00:00 v #4 > 00:00:00 d #3 targetDir: /home/runner/work/polyglot/polyglot/target/spiral_Eval
00:00:00 v #3 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #4 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #5 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #6 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #7 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #8 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #9 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #10 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #11 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #12 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #13 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #14 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #15 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #16 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #17 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #18 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #19 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #20 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #21 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #22 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #23 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #24 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #5 > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:00 v #25 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #26 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #27 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:01 v #1 Supervisor.sendJson / port: 13805 / json: {"Ping":true} / result:
00:00:01 v #2 Supervisor.awaitCompiler / Ping / result: 'Some null' / port: 13805 / retry: 1
00:00:01 v #6 > Server bound to: http://localhost:13805
00:00:01 d #7 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path math.dib --retries 5"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path math.dib --retries 5; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:01 v #8 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "math.dib", "--retries", "5"])) }
00:00:01 v #9 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/math/math.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/math/math.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/math/math.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/math/math.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:00:02 v #10 > >
00:00:02 v #11 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:02 v #12 > > │ # math
00:00:04 v #13 > >
00:00:04 v #14 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:04 v #15 > > open testing
00:00:04 v #16 > > open rust.rust_operators
00:00:04 v #17 > > open rust
00:00:08 v #18 > >
00:00:08 v #19 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 v #20 > > │ ## complex
00:00:08 v #21 > >
00:00:08 v #22 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 v #23 > > nominal complex t =
00:00:08 v #24 > >     `(
00:00:08 v #25 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:00:08 v #26 > > Fable.Core.Emit(\"num_complex::Complex<$0>\")>]]\n#endif\ntype
00:00:08 v #27 > > num_complex_Complex<'T> = class end"
00:00:08 v #28 > >         $'' : $'num_complex_Complex<`t>'
00:00:08 v #29 > >     )
00:00:08 v #30 > >
00:00:08 v #31 > > inl complex forall t. ((re : t), (im : t)) : complex t =
00:00:08 v #32 > >     !\\((re, im), $'"num_complex::Complex::new($0, $1)"')
00:00:08 v #33 > >
00:00:08 v #34 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 v #35 > > //// test
00:00:08 v #36 > > ///! rust -d num-complex
00:00:08 v #37 > >
00:00:08 v #38 > > complex (0f64, 0f64)
00:00:08 v #39 > > |> sm'.format'
00:00:08 v #40 > > |> sm'.from_std_string
00:00:08 v #41 > > |> _assert_eq "0+0i"
00:00:21 v #42 > >
00:00:21 v #43 > > ── [ 12.30s - return value ] ───────────────────────────────────────────────────
00:00:21 v #44 > > │ __assert_eq / actual: "0+0i" / expected: "0+0i"
00:00:21 v #45 > > │
00:00:21 v #46 > >
00:00:21 v #47 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:21 v #48 > > │ ## re
00:00:21 v #49 > >
00:00:21 v #50 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:21 v #51 > > inl re forall t. (c : complex t) : t =
00:00:21 v #52 > >     !\\(c, $'"$0.re"')
00:00:21 v #53 > >
00:00:21 v #54 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:21 v #55 > > │ ## im
00:00:21 v #56 > >
00:00:21 v #57 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:21 v #58 > > inl im forall t. (c : complex t) : t =
00:00:21 v #59 > >     !\\(c, $'"$0.im"')
00:00:21 v #60 > >
00:00:21 v #61 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:21 v #62 > > │ ## complex_unbox
00:00:21 v #63 > >
00:00:21 v #64 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:21 v #65 > > inl complex_unbox forall t. (c : complex t) =
00:00:21 v #66 > >     re c, im c
00:00:21 v #67 > >
00:00:21 v #68 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:21 v #69 > > │ ## (~.^)
00:00:21 v #70 > >
00:00:21 v #71 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:21 v #72 > > inl (~.^) c = complex c
00:00:21 v #73 > >
00:00:21 v #74 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:21 v #75 > > │ ## complex_eq
00:00:21 v #76 > >
00:00:21 v #77 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:21 v #78 > > inl complex_eq forall t. (a : complex t) (b : complex t) : bool =
00:00:21 v #79 > >     !\\((a, b), $'"$0 == $1"')
00:00:22 v #80 > >
00:00:22 v #81 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:22 v #82 > > │ ## (.=)
00:00:22 v #83 > >
00:00:22 v #84 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:22 v #85 > > inl (.=) a b = complex_eq a b
00:00:22 v #86 > >
00:00:22 v #87 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:22 v #88 > > │ ## equable complex
00:00:22 v #89 > >
00:00:22 v #90 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:22 v #91 > > instance equable complex t = complex_eq
00:00:22 v #92 > >
00:00:22 v #93 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:22 v #94 > > │ ## complex_add
00:00:22 v #95 > >
00:00:22 v #96 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:22 v #97 > > inl complex_add forall t. (a : complex t) (b : complex t) : complex t =
00:00:22 v #98 > >     !\\((a, b), $'"$0 + $1"')
00:00:22 v #99 > >
00:00:22 v #100 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:22 v #101 > > │ ## (.+)
00:00:22 v #102 > >
00:00:22 v #103 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:22 v #104 > > inl (.+) a b = complex_add a b
00:00:22 v #105 > >
00:00:22 v #106 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:22 v #107 > > │ ## complex_sub
00:00:22 v #108 > >
00:00:22 v #109 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:22 v #110 > > inl complex_sub forall t. (a : complex t) (b : complex t) : complex t =
00:00:22 v #111 > >     !\\((a, b), $'"$0 - $1"')
00:00:22 v #112 > >
00:00:22 v #113 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:22 v #114 > > │ ## (.-)
00:00:22 v #115 > >
00:00:22 v #116 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:22 v #117 > > inl (.-) a b = complex_sub a b
00:00:23 v #118 > >
00:00:23 v #119 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:23 v #120 > > │ ## complex_mult
00:00:23 v #121 > >
00:00:23 v #122 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:23 v #123 > > inl complex_mult forall t. (a : complex t) (b : complex t) : complex t =
00:00:23 v #124 > >     !\\((a, b), $'"$0 * $1"')
00:00:23 v #125 > >
00:00:23 v #126 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:23 v #127 > > │ ## (.*)
00:00:23 v #128 > >
00:00:23 v #129 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:23 v #130 > > inl (.*) a b = complex_mult a b
00:00:23 v #131 > >
00:00:23 v #132 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:23 v #133 > > │ ## complex_div
00:00:23 v #134 > >
00:00:23 v #135 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:23 v #136 > > inl complex_div forall t. (a : complex t) (b : complex t) : complex t =
00:00:23 v #137 > >     !\\((a, b), $'"$0 / $1"')
00:00:23 v #138 > >
00:00:23 v #139 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:23 v #140 > > │ ## (./)
00:00:23 v #141 > >
00:00:23 v #142 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:23 v #143 > > inl (./) a b = complex_div a b
00:00:23 v #144 > >
00:00:23 v #145 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:23 v #146 > > │ ## powc
00:00:23 v #147 > >
00:00:23 v #148 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:23 v #149 > > inl powc forall t. (s : complex t) (c : complex t) : complex t =
00:00:23 v #150 > >     !\\((c, s), $'"num_complex::Complex::powc($0, $1)"')
00:00:23 v #151 > >
00:00:23 v #152 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:23 v #153 > > │ ## (.**)
00:00:23 v #154 > >
00:00:23 v #155 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:23 v #156 > > inl (.**) a b = powc b a
00:00:24 v #157 > >
00:00:24 v #158 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:24 v #159 > > │ ## complex_sin
00:00:24 v #160 > >
00:00:24 v #161 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:24 v #162 > > inl complex_sin forall t. (c : complex t) : complex t =
00:00:24 v #163 > >     !\\(c, $'"$0.sin()"')
00:00:24 v #164 > >
00:00:24 v #165 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:24 v #166 > > │ ## conj
00:00:24 v #167 > >
00:00:24 v #168 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:24 v #169 > > inl conj forall t. (c : complex t) : complex t =
00:00:24 v #170 > >     !\\(c, $'"$0.conj()"')
00:00:24 v #171 > >
00:00:24 v #172 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:24 v #173 > > │ ## zeta
00:00:24 v #174 > >
00:00:24 v #175 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:24 v #176 > > inl zeta log (gamma : complex f64 -> complex f64) (s : complex f64) : complex
00:00:24 v #177 > > f64 =
00:00:24 v #178 > >     inl rec zeta count gamma s =
00:00:24 v #179 > >         if log then
00:00:24 v #180 > >             !\\((count, s), $'"println\!(\\\"zeta / count: {:?} / s: {:?}\\\",
00:00:24 v #181 > > $0, $1)"')
00:00:24 v #182 > >         if re s > 1 then
00:00:24 v #183 > >             (.^(0, 0), (am.init 10000i32 id : a i32 _))
00:00:24 v #184 > >             ||> am.fold fun acc n =>
00:00:24 v #185 > >                 acc .+ (.^(1, 0) ./ (.^(f64 n, 0) .** s))
00:00:24 v #186 > >         else
00:00:24 v #187 > >             inl gamma_term = gamma (.^(1, 0) .- s)
00:00:24 v #188 > >             inl sin_term = .^(pi, 0) .* s ./ .^(2, 0) |> complex_sin
00:00:24 v #189 > >             inl one_minus_s = .^(1 - re s, -(im s))
00:00:24 v #190 > >             inl mirror_term =
00:00:24 v #191 > >                 if re one_minus_s <= 1
00:00:24 v #192 > >                 then .^(0, 0)
00:00:24 v #193 > >                 else
00:00:24 v #194 > >                     if count <= 3
00:00:24 v #195 > >                     then zeta (count + 1) gamma one_minus_s
00:00:24 v #196 > >                     else one_minus_s
00:00:24 v #197 > >             inl reflection_formula =
00:00:24 v #198 > >                 .^(2, 0) .* (.^(pi, 0) .** s) .* sin_term .* gamma_term .*
00:00:24 v #199 > > mirror_term
00:00:24 v #200 > >             reflection_formula
00:00:24 v #201 > >     join zeta 0i32 gamma s
00:00:24 v #202 > >
00:00:24 v #203 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:24 v #204 > > │ ## bound
00:00:24 v #205 > >
00:00:24 v #206 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:24 v #207 > > nominal bound t =
00:00:24 v #208 > >     `(
00:00:24 v #209 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:00:24 v #210 > > Fable.Core.Emit(\"pyo3::Bound<$0>\")>]]\n#endif\ntype pyo3_Bound<'T> = class
00:00:24 v #211 > > end"
00:00:24 v #212 > >         $'' : $'pyo3_Bound<`t>'
00:00:24 v #213 > >     )
00:00:24 v #214 > >
00:00:24 v #215 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:24 v #216 > > │ ## python
00:00:24 v #217 > >
00:00:24 v #218 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:24 v #219 > > nominal python =
00:00:24 v #220 > >     `(
00:00:24 v #221 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:00:24 v #222 > > Fable.Core.Emit(\"pyo3::Python\")>]]\n#endif\ntype pyo3_Python = class end"
00:00:24 v #223 > >         $'' : $'pyo3_Python'
00:00:24 v #224 > >     )
00:00:24 v #225 > >
00:00:24 v #226 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:24 v #227 > > │ ## pymodule
00:00:24 v #228 > >
00:00:24 v #229 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:24 v #230 > > nominal pymodule =
00:00:24 v #231 > >     `(
00:00:24 v #232 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:00:24 v #233 > > Fable.Core.Emit(\"pyo3::types::PyModule\")>]]\n#endif\ntype pyo3_types_PyModule
00:00:24 v #234 > > = class end"
00:00:24 v #235 > >         $'' : $'pyo3_types_PyModule'
00:00:24 v #236 > >     )
00:00:24 v #237 > >
00:00:24 v #238 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:24 v #239 > > │ ## pyany
00:00:24 v #240 > >
00:00:24 v #241 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:24 v #242 > > nominal pyany =
00:00:24 v #243 > >     `(
00:00:24 v #244 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:00:24 v #245 > > Fable.Core.Emit(\"pyo3::PyAny\")>]]\n#endif\ntype pyo3_PyAny = class end"
00:00:24 v #246 > >         $'' : $'pyo3_PyAny'
00:00:24 v #247 > >     )
00:00:25 v #248 > >
00:00:25 v #249 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:25 v #250 > > │ ## pyerr
00:00:25 v #251 > >
00:00:25 v #252 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:25 v #253 > > nominal pyerr =
00:00:25 v #254 > >     `(
00:00:25 v #255 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:00:25 v #256 > > Fable.Core.Emit(\"pyo3::PyErr\")>]]\n#endif\ntype pyo3_PyErr = class end"
00:00:25 v #257 > >         $'' : $'pyo3_PyErr'
00:00:25 v #258 > >     )
00:00:25 v #259 > >
00:00:25 v #260 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:25 v #261 > > │ ## eval
00:00:25 v #262 > >
00:00:25 v #263 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:25 v #264 > > inl module_from_code (py : python) (code : string) : _ (bound pymodule) _ =
00:00:25 v #265 > >     inl py = join py
00:00:25 v #266 > >     inl code = code |> sm'.to_std_string |> sm'.new_c_string
00:00:25 v #267 > >     inl empty = "" |> sm'.to_std_string |> sm'.new_c_string
00:00:25 v #268 > >     !\\(code, $'"pyo3::types::PyModule::from_code(!py, &$0, &!empty, &!empty)"')
00:00:25 v #269 > >     |> resultm.map_error'' fun (x : pyerr) => x |> sm'.format'
00:00:25 v #270 > >
00:00:25 v #271 > > inl use_pyanymethods () =
00:00:25 v #272 > >     global "Fable.Core.RustInterop.emitRustExpr () \");\nuse
00:00:25 v #273 > > pyo3::prelude::PyAnyMethods;\n//\""
00:00:25 v #274 > >
00:00:25 v #275 > > inl getattr (attr : string) (module : bound pymodule) : _ (bound pyany) _ =
00:00:25 v #276 > >     inl attr = join attr
00:00:25 v #277 > >     inl attr = attr |> sm'.as_str
00:00:25 v #278 > >     inl module = join module
00:00:25 v #279 > >     use_pyanymethods ()
00:00:25 v #280 > >     !\\(attr, $'"!module.getattr($0)"')
00:00:25 v #281 > >     |> resultm.map_error'' fun (x : pyerr) => x |> sm'.format'
00:00:25 v #282 > >
00:00:25 v #283 > > inl call forall t. (args : t) (module : bound pyany) : _ (bound pyany) _ =
00:00:25 v #284 > >     inl args = join args
00:00:25 v #285 > >     inl module = join module
00:00:25 v #286 > >     !\($'"pyo3::prelude::PyAnyMethods::call(&!module, ((*!args).0, *(*!args).1),
00:00:25 v #287 > > None)"')
00:00:25 v #288 > >     |> resultm.map_error'' fun (x : pyerr) => x |> sm'.format'
00:00:25 v #289 > >
00:00:25 v #290 > > inl extract forall t. (result : bound pyany) : _ t _ =
00:00:25 v #291 > >     inl result = join result
00:00:25 v #292 > >     use_pyanymethods ()
00:00:25 v #293 > >     !\($'"!result.extract()"')
00:00:25 v #294 > >     |> resultm.map_error'' fun (x : pyerr) => x |> sm'.format'
00:00:25 v #295 > >
00:00:25 v #296 > > inl eval py code (args : pair bool (pair f64 f64)) : _ (_ f64) sm'.std_string =
00:00:25 v #297 > >     inl code =
00:00:25 v #298 > >         code
00:00:25 v #299 > >         |> module_from_code py
00:00:25 v #300 > >         |> resultm.unwrap'
00:00:25 v #301 > >     inl fn =
00:00:25 v #302 > >         code
00:00:25 v #303 > >         |> getattr "fn"
00:00:25 v #304 > >         |> resultm.unwrap'
00:00:25 v #305 > >
00:00:25 v #306 > >     fn
00:00:25 v #307 > >     |> call args
00:00:25 v #308 > >     |> resultm.try'
00:00:25 v #309 > >     |> extract
00:00:25 v #310 > >     |> resultm.try'
00:00:25 v #311 > >     |> complex
00:00:25 v #312 > >     |> Ok
00:00:25 v #313 > >     |> resultm.box
00:00:25 v #314 > >
00:00:25 v #315 > > inl call1_ log py s code =
00:00:25 v #316 > >     inl code = join (a code : _ i32 _) |> sm'.concat_array "\n"
00:00:25 v #317 > >
00:00:25 v #318 > >     inl s = new_pair (re s) (im s)
00:00:25 v #319 > >     inl args = new_pair log s
00:00:25 v #320 > >
00:00:25 v #321 > >     eval py code args
00:00:25 v #322 > >
00:00:25 v #323 > > inl call1_ log name py s line =
00:00:25 v #324 > >     inl s = join s
00:00:25 v #325 > >     join
00:00:25 v #326 > >         ;[[
00:00:25 v #327 > >             $'$"import sys"'
00:00:25 v #328 > >             $'$"import traceback"'
00:00:25 v #329 > >             $'$"import re"'
00:00:25 v #330 > >             $'$"count = 0"'
00:00:25 v #331 > >             $'$"memory_address_pattern = re.compile(r\' at 0x[[0-9a-fA-F]]+\')"'
00:00:25 v #332 > >             $'$"def trace_calls(frame, event, arg):"'
00:00:25 v #333 > >             $'$"    global count"'
00:00:25 v #334 > >             $'$"    count += 1"'
00:00:25 v #335 > >             $'$"    if count < 200:"'
00:00:25 v #336 > >             $'$"        try:"'
00:00:25 v #337 > >             $'$"            args = {{ k: v for k, v in frame.f_locals.items() if
00:00:25 v #338 > > frame.f_code.co_name \!= \'make_mpc\' and k not in [[\'ctx\']] and not
00:00:25 v #339 > > callable(v) }}"'
00:00:25 v #340 > >             $'$"            args_str = \', \'.join([[
00:00:25 v #341 > > f\\\"{{k}}={{re.sub(memory_address_pattern, \' at 0x<?>\', repr(v))}}\\\" for k,
00:00:25 v #342 > > v in args.items() ]])"'
00:00:25 v #343 > >             $'$"            print(f\\\"{{event}}({!name}) / f_code.co_name:
00:00:25 v #344 > > {{frame.f_code.co_name}} / f_locals: {{args_str}} / f_lineno: {{frame.f_lineno}}
00:00:25 v #345 > > / f_code.co_filename:
00:00:25 v #346 > > {{frame.f_code.co_filename.split(\'site-packages\')[[-1]]}} / f_back.f_lineno:
00:00:25 v #347 > > {{ \'\' if frame.f_back is None else frame.f_back.f_lineno }}
00:00:25 v #348 > > f_back.f_code.co_filename: {{ \'\' if frame.f_back is None else
00:00:25 v #349 > > frame.f_back.f_code.co_filename.split(\'site-packages\')[[-1]] }} / arg:
00:00:25 v #350 > > {{re.sub(memory_address_pattern, \' at 0x<?>\', repr(arg))}}\\\", flush=True)"'
00:00:25 v #351 > >             $'$"        except ValueError as e:"'
00:00:25 v #352 > >             $'$"            print(f\'{!name} / e: {{e}}\', flush=True)"'
00:00:25 v #353 > >             $'$"        return trace_calls"'
00:00:25 v #354 > >             $'$"import mpmath"'
00:00:25 v #355 > >             $'$"def fn(log, s):"'
00:00:25 v #356 > >             $'$"    global count"'
00:00:25 v #357 > >             $'$"    if log:"'
00:00:25 v #358 > >             $'$"        print(f\'{!name} / s: {{s}} / count: {{count}}\',
00:00:25 v #359 > > flush=True)"'
00:00:25 v #360 > >             $'$"    s = complex(*s)"'
00:00:25 v #361 > >             $'$"    try:"'
00:00:25 v #362 > >             $'$"        if log: sys.settrace(trace_calls)"'
00:00:25 v #363 > >             line
00:00:25 v #364 > >             $'$"        if log:"'
00:00:25 v #365 > >             $'$"            sys.settrace(None)"'
00:00:25 v #366 > >             $'$"            print(f\'{!name} / result: {{s}} / count:
00:00:25 v #367 > > {{count}}\', flush=True)"'
00:00:25 v #368 > >             $'$"    except ValueError as e:"'
00:00:25 v #369 > >             $'$"        if s.real == 1:"'
00:00:25 v #370 > >             $'$"            s = complex(float(\'inf\'), 0)"'
00:00:25 v #371 > >             $'$"    return (s.real, s.imag)"'
00:00:25 v #372 > >         ]]
00:00:25 v #373 > >         |> call1_ log py s
00:00:25 v #374 > >
00:00:25 v #375 > > inl gamma_ log py s =
00:00:25 v #376 > >     call1_ log "gamma_" py s $'$"        s = mpmath.gamma(s)"'
00:00:25 v #377 > >
00:00:25 v #378 > > inl zeta_ log py s =
00:00:25 v #379 > >     call1_ log "zeta_" py s $'$"        s = mpmath.zeta(s)"'
00:00:25 v #380 > >
00:00:25 v #381 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:25 v #382 > > │ ## run_test
00:00:25 v #383 > >
00:00:25 v #384 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:25 v #385 > > inl run_test log (fn : (complex f64 -> complex f64) * (complex f64 -> complex
00:00:25 v #386 > > f64) -> ()) =
00:00:25 v #387 > >     inl fn_ (py : python) : resultm.result' () pyerr =
00:00:25 v #388 > >         inl nan () =
00:00:25 v #389 > >             !\($'"f64::NAN"')
00:00:25 v #390 > >         inl gamma__ = fun (s : complex f64) =>
00:00:25 v #391 > >             inl result = gamma_ log py s
00:00:25 v #392 > >             if log then
00:00:25 v #393 > >                 inl s = join s
00:00:25 v #394 > >                 !\($'"println\!(\\\"gamma__ / s: {:?} / result: {:?}\\\", !s,
00:00:25 v #395 > > !result)"')
00:00:25 v #396 > >             result |> resultm.ok' |> optionm'.unbox |> optionm'.default_value
00:00:25 v #397 > > .^(nan (), nan ())
00:00:25 v #398 > >         inl zeta__ = fun (s : complex f64) =>
00:00:25 v #399 > >             inl result = zeta_ log py s
00:00:25 v #400 > >
00:00:25 v #401 > >             inl z = zeta true gamma__ s
00:00:25 v #402 > >
00:00:25 v #403 > >             if log then
00:00:25 v #404 > >                 inl s = join s
00:00:25 v #405 > >                 !\($'"println\!(\\\"zeta__ / s: {:?} / result: {:?} / z:
00:00:25 v #406 > > {:?}\\\", !s, !result, !z)"')
00:00:25 v #407 > >
00:00:25 v #408 > >     //             re result - re x |> abs
00:00:25 v #409 > >     //             |> _assert_lt 0.001
00:00:25 v #410 > >
00:00:25 v #411 > >     //             im result - im x |> abs
00:00:25 v #412 > >     //             |> _assert_lt 0.001
00:00:25 v #413 > >
00:00:25 v #414 > >             result |> resultm.ok' |> optionm'.unbox |> optionm'.default_value
00:00:25 v #415 > > .^(nan (), nan ())
00:00:25 v #416 > >         join fn (zeta__, gamma__)
00:00:25 v #417 > >
00:00:25 v #418 > >         Ok ()
00:00:25 v #419 > >         |> resultm.box
00:00:25 v #420 > >
00:00:25 v #421 > >     join
00:00:25 v #422 > >         !\($'"pyo3::prepare_freethreaded_python()"') : ()
00:00:25 v #423 > >
00:00:25 v #424 > >         !\($'"let __run_test = pyo3::Python::with_gil(|py| -> pyo3::PyResult<()>
00:00:25 v #425 > > { //"')
00:00:25 v #426 > >
00:00:25 v #427 > >         let x' = fn_ (!\($'"py"') : python)
00:00:25 v #428 > >         inl x' = join x'
00:00:25 v #429 > >
00:00:25 v #430 > >         inl closure_fix = 2u8, 1u8
00:00:25 v #431 > >         x' |> rust.fix_closure closure_fix
00:00:25 v #432 > >
00:00:25 v #433 > >         (!\($'"__run_test"') : _ () pyerr)
00:00:25 v #434 > >         |> resultm.unwrap'
00:00:25 v #435 > >
00:00:25 v #436 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:25 v #437 > > │ ## test_zeta_at_known_values_
00:00:25 v #438 > >
00:00:25 v #439 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:25 v #440 > > inl test_zeta_at_known_values_ log = run_test log fun zeta, gamma =>
00:00:25 v #441 > >     ;[[
00:00:25 v #442 > >         .^(2, 0), pi ** 2 / 6
00:00:25 v #443 > >         .^(-1, 0), -1 / 12
00:00:25 v #444 > >     ]]
00:00:25 v #445 > >     |> fun x => a x : _ i32 _
00:00:25 v #446 > >     |> am.iter fun s, e =>
00:00:25 v #447 > >         inl result = zeta s
00:00:25 v #448 > >
00:00:25 v #449 > >         result |> im |> _assert_eq 0
00:00:25 v #450 > >         re result - e |> abs |> _assert_lt 0.0001
00:00:25 v #451 > >
00:00:25 v #452 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:25 v #453 > > //// test
00:00:25 v #454 > > ///! rust -d num-complex pyo3
00:00:25 v #455 > >
00:00:25 v #456 > > test_zeta_at_known_values_ true
00:00:41 v #457 > >
00:00:41 v #458 > > ── [ 15.97s - return value ] ───────────────────────────────────────────────────
00:00:41 v #459 > > │ zeta_ / s: (2.0, 0.0) / count: 0
00:00:41 v #460 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1,
00:00:41 v #461 > > derivative=0, method=None, kwargs={} / f_lineno: 528 / f_code.co_filename:
00:00:41 v #462 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:
00:00:41 v #463 > > arg: None
00:00:41 v #464 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1,
00:00:41 v #465 > > derivative=0, method=None, kwargs={} / f_lineno: 530 / f_code.co_filename:
00:00:41 v #466 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:
00:00:41 v #467 > > arg: None
00:00:41 v #468 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1,
00:00:41 v #469 > > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename:
00:00:41 v #470 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:
00:00:41 v #471 > > arg: None
00:00:41 v #472 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1,
00:00:41 v #473 > > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename:
00:00:41 v #474 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:
00:00:41 v #475 > > arg: None
00:00:41 v #476 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1,
00:00:41 v #477 > > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename:
00:00:41 v #478 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:
00:00:41 v #479 > > arg: None
00:00:41 v #480 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(2+0j),
00:00:41 v #481 > > kwargs={}, name='zeta' / f_lineno: 989 / f_code.co_filename:
00:00:41 v #482 > > /mpmath/ctx_mp_python.py / f_back.f_lineno: 533 / f_back.f_code.co_filename:
00:00:41 v #483 > > /mpmath/functions/zeta.py / arg: None
00:00:41 v #484 > > │ line(zeta_) / f_code.co_name: f / f_locals: x=(2+0j),
00:00:41 v #485 > > kwargs={}, name='zeta' / f_linen...me: make_mpc / f_locals:  / f_lineno: 603
00:00:41 v #486 > > f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno: 1007
00:00:41 v #487 > > f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: None
00:00:41 v #488 > > │ line(gamma_) / f_code.co_name: make_mpc / f_locals:
00:00:41 v #489 > > f_lineno: 604 / f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno:
00:00:41 v #490 > > 1007 / f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: None
00:00:41 v #491 > > │ line(gamma_) / f_code.co_name: make_mpc / f_locals:
00:00:41 v #492 > > f_lineno: 605 / f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno:
00:00:41 v #493 > > 1007 / f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: None
00:00:41 v #494 > > │ return(gamma_) / f_code.co_name: make_mpc / f_locals:
00:00:41 v #495 > > f_lineno: 605 / f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno:
00:00:41 v #496 > > 1007 / f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg:
00:00:41 v #497 > > mpc(real='1.0', imag='0.0')
00:00:41 v #498 > > │ return(gamma_) / f_code.co_name: f / f_locals:
00:00:41 v #499 > > x=mpc(real='2.0', imag='0.0'), kwargs={}, name='gamma', prec=53, rounding='n'
00:00:41 v #500 > > f_lineno: 1007 / f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno:
00:00:41 v #501 > > 25 / f_back.f_code.co_filename:  / arg: mpc(real='1.0', imag='0.0')
00:00:41 v #502 > > │ gamma_ / result: (1.0 + 0.0j) / count: 140
00:00:41 v #503 > > │ gamma__ / s: Complex { re: 2.0, im: 0.0 } / result:
00:00:41 v #504 > > Ok(Complex { re: 1.0, im: 0.0 })
00:00:41 v #505 > > │ zeta / count: 1 / s: Complex { re: 2.0, im: -0.0 }
00:00:41 v #506 > > │ zeta__ / s: Complex { re: -1.0, im: 0.0 } / result:
00:00:41 v #507 > > Ok(Complex { re: -0.08333333333333333, im: 0.0 }) / z: Complex { re: NaN, im:
00:00:41 v #508 > > NaN }
00:00:41 v #509 > > │ __assert_eq / actual: 0.0 / expected: 0.0
00:00:41 v #510 > > │ __assert_lt / actual: 0.0 / expected: 0.0001
00:00:41 v #511 > > │
00:00:41 v #512 > >
00:00:41 v #513 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:41 v #514 > > │ ## test_zeta_at_2_minus2
00:00:41 v #515 > >
00:00:41 v #516 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:41 v #517 > > inl test_zeta_at_2_minus2 log = run_test log fun zeta, gamma =>
00:00:41 v #518 > >     inl s = .^(2, -2)
00:00:41 v #519 > >     inl result = zeta s
00:00:41 v #520 > >
00:00:41 v #521 > >     (re result - 0.8673) |> abs |> _assert_lt 0.001
00:00:41 v #522 > >     (im result - 0.2750) |> abs |> _assert_lt 0.001
00:00:41 v #523 > >
00:00:41 v #524 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:41 v #525 > > //// test
00:00:41 v #526 > > ///! rust -d num-complex pyo3
00:00:41 v #527 > >
00:00:41 v #528 > > test_zeta_at_2_minus2 true
00:00:48 v #529 > >
00:00:48 v #530 > > ── [ 6.93s - return value ] ────────────────────────────────────────────────────
00:00:48 v #531 > > │ zeta_ / s: (2.0, -2.0) / count: 0
00:00:48 v #532 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(2-2j), a=1,
00:00:48 v #533 > > derivative=0, method=None, kwargs={} / f_lineno: 528 / f_code.co_filename:
00:00:48 v #534 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:
00:00:48 v #535 > > arg: None
00:00:48 v #536 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2-2j), a=1,
00:00:48 v #537 > > derivative=0, method=None, kwargs={} / f_lineno: 530 / f_code.co_filename:
00:00:48 v #538 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:
00:00:48 v #539 > > arg: None
00:00:48 v #540 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2-2j), a=1,
00:00:48 v #541 > > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename:
00:00:48 v #542 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:
00:00:48 v #543 > > arg: None
00:00:48 v #544 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2-2j), a=1,
00:00:48 v #545 > > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename:
00:00:48 v #546 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:
00:00:48 v #547 > > arg: None
00:00:48 v #548 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2-2j), a=1,
00:00:48 v #549 > > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename:
00:00:48 v #550 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:
00:00:48 v #551 > > arg: None
00:00:48 v #552 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(2-2j),
00:00:48 v #553 > > kwargs={}, name='zeta' / f_lineno: 989 / f_code.co_filename:
00:00:48 v #554 > > /mpmath/ctx_mp_python.py / f_back.f_lineno: 533 / f_back.f_code.co_filename:
00:00:48 v #555 > > /mpmath/functions/zeta.py / arg: None
00:00:48 v #556 > > │ line(zeta_) / f_code.co_name: f / f_locals: x=(2-2j),
00:00:48 v #557 > > kwargs={}, name='zeta' / f_line.../ arg: None
00:00:48 v #558 > > │ call(zeta_) / f_code.co_name: python_bitcount / f_locals: n=2
00:00:48 v #559 > > / f_lineno: 91 / f_code.co_filename: /mpmath/libmp/libintmath.py
00:00:48 v #560 > > f_back.f_lineno: 778 / f_back.f_code.co_filename: /mpmath/libmp/libmpf.py / arg:
00:00:48 v #561 > > None
00:00:48 v #562 > > │ line(zeta_) / f_code.co_name: python_bitcount / f_locals: n=2
00:00:48 v #563 > > / f_lineno: 93 / f_code.co_filename: /mpmath/libmp/libintmath.py
00:00:48 v #564 > > f_back.f_lineno: 778 / f_back.f_code.co_filename: /mpmath/libmp/libmpf.py / arg:
00:00:48 v #565 > > None
00:00:48 v #566 > > │ line(zeta_) / f_code.co_name: python_bitcount / f_locals:
00:00:48 v #567 > > n=2, bc=2 / f_lineno: 94 / f_code.co_filename: /mpmath/libmp/libintmath.py
00:00:48 v #568 > > f_back.f_lineno: 778 / f_back.f_code.co_filename: /mpmath/libmp/libmpf.py / arg:
00:00:48 v #569 > > None
00:00:48 v #570 > > │ line(zeta_) / f_code.co_name: python_bitcount / f_locals:
00:00:48 v #571 > > n=2, bc=2 / f_lineno: 95 / f_code.co_filename: /mpmath/libmp/libintmath.py
00:00:48 v #572 > > f_back.f_lineno: 778 / f_back.f_code.co_filename: /mpmath/libmp/libmpf.py / arg:
00:00:48 v #573 > > None
00:00:48 v #574 > > │ return(zeta_) / f_code.co_name: python_bitcount / f_locals:
00:00:48 v #575 > > n=2, bc=2 / f_lineno: 95 / f_code.co_filename: /mpmath/libmp/libintmath.py
00:00:48 v #576 > > f_back.f_lineno: 778 / f_back.f_code.co_filename: /mpmath/libmp/libmpf.py / arg:
00:00:48 v #577 > > 2
00:00:48 v #578 > > │ zeta_ / result: (0.867351829635993 + 0.275127238807858j)
00:00:48 v #579 > > count: 1812
00:00:48 v #580 > > │ zeta / count: 0 / s: Complex { re: 2.0, im: -2.0 }
00:00:48 v #581 > > │ zeta__ / s: Complex { re: 2.0, im: -2.0 } / result:
00:00:48 v #582 > > Ok(Complex { re: 0.8673518296359931, im: 0.27512723880785767 }) / z: Complex {
00:00:48 v #583 > > re: NaN, im: NaN }
00:00:48 v #584 > > │ __assert_lt / actual: 5.182963599315027e-5 / expected: 0.001
00:00:48 v #585 > > │ __assert_lt / actual: 0.00012723880785764363 / expected:
00:00:48 v #586 > > 0.001
00:00:48 v #587 > > │
00:00:48 v #588 > >
00:00:48 v #589 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:48 v #590 > > │ ## test_trivial_zero_at_negative_even___
00:00:48 v #591 > >
00:00:48 v #592 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:48 v #593 > > inl test_trivial_zero_at_negative_even___ log = run_test log fun zeta, gamma =>
00:00:48 v #594 > >     (join listm'.init_series -2f64 -40 -2)
00:00:48 v #595 > >     |> listm.iter fun n =>
00:00:48 v #596 > >         inl s = .^(n, 0)
00:00:48 v #597 > >         inl result = zeta s
00:00:48 v #598 > >
00:00:48 v #599 > >         result |> re |> _assert_eq 0
00:00:48 v #600 > >         result |> im |> _assert_eq 0
00:00:48 v #601 > >
00:00:48 v #602 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:48 v #603 > > //// test
00:00:48 v #604 > > ///! rust -d num-complex pyo3
00:00:48 v #605 > >
00:00:48 v #606 > > test_trivial_zero_at_negative_even___ true
00:00:56 v #607 > >
00:00:56 v #608 > > ── [ 7.31s - return value ] ────────────────────────────────────────────────────
00:00:56 v #609 > > │ zeta_ / s: (-2.0, 0.0) / count: 0
00:00:56 v #610 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(-2+0j),
00:00:56 v #611 > > a=1, derivative=0, method=None, kwargs={} / f_lineno: 528 / f_code.co_filename:
00:00:56 v #612 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:
00:00:56 v #613 > > arg: None
00:00:56 v #614 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(-2+0j),
00:00:56 v #615 > > a=1, derivative=0, method=None, kwargs={} / f_lineno: 530 / f_code.co_filename:
00:00:56 v #616 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:
00:00:56 v #617 > > arg: None
00:00:56 v #618 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(-2+0j),
00:00:56 v #619 > > a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531
00:00:56 v #620 > > f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25
00:00:56 v #621 > > f_back.f_code.co_filename:  / arg: None
00:00:56 v #622 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(-2+0j),
00:00:56 v #623 > > a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532
00:00:56 v #624 > > f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25
00:00:56 v #625 > > f_back.f_code.co_filename:  / arg: None
00:00:56 v #626 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(-2+0j),
00:00:56 v #627 > > a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533
00:00:56 v #628 > > f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25
00:00:56 v #629 > > f_back.f_code.co_filename:  / arg: None
00:00:56 v #630 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(-2+0j),
00:00:56 v #631 > > kwargs={}, name='zeta' / f_lineno: 989 / f_code.co_filename:
00:00:56 v #632 > > /mpmath/ctx_mp_python.py / f_back.f_lineno: 533 / f_back.f_code.co_filename:
00:00:56 v #633 > > /mpmath/functions/zeta.py / arg: None
00:00:56 v #634 > > │ line(zeta_) / f_code.co_name: f / f_locals: x=(-2+0j),
00:00:56 v #635 > > kwargs={}, name='zeta' /...lename: /mpmath/ctx_mp_python.py / f_back.f_lineno:
00:00:56 v #636 > > 1007 / f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: None
00:00:56 v #637 > > │ line(gamma_) / f_code.co_name: make_mpc / f_locals:
00:00:56 v #638 > > f_lineno: 604 / f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno:
00:00:56 v #639 > > 1007 / f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: None
00:00:56 v #640 > > │ line(gamma_) / f_code.co_name: make_mpc / f_locals:
00:00:56 v #641 > > f_lineno: 605 / f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno:
00:00:56 v #642 > > 1007 / f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: None
00:00:56 v #643 > > │ return(gamma_) / f_code.co_name: make_mpc / f_locals:
00:00:56 v #644 > > f_lineno: 605 / f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno:
00:00:56 v #645 > > 1007 / f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg:
00:00:56 v #646 > > mpc(real='8.1591528324789768e+47', imag='0.0')
00:00:56 v #647 > > │ return(gamma_) / f_code.co_name: f / f_locals:
00:00:56 v #648 > > x=mpc(real='41.0', imag='0.0'), kwargs={}, name='gamma', prec=53, rounding='n'
00:00:56 v #649 > > f_lineno: 1007 / f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno:
00:00:56 v #650 > > 25 / f_back.f_code.co_filename:  / arg: mpc(real='8.1591528324789768e+47',
00:00:56 v #651 > > imag='0.0')
00:00:56 v #652 > > │ gamma_ / result: (8.15915283247898e+47 + 0.0j) / count: 149
00:00:56 v #653 > > │ gamma__ / s: Complex { re: 41.0, im: 0.0 } / result:
00:00:56 v #654 > > Ok(Complex { re: 8.159152832478977e47, im: 0.0 })
00:00:56 v #655 > > │ zeta / count: 1 / s: Complex { re: 41.0, im: -0.0 }
00:00:56 v #656 > > │ zeta__ / s: Complex { re: -40.0, im: 0.0 } / result:
00:00:56 v #657 > > Ok(Complex { re: 0.0, im: 0.0 }) / z: Complex { re: NaN, im: NaN }
00:00:56 v #658 > > │ __assert_eq / actual: 0.0 / expected: 0.0
00:00:56 v #659 > > │ __assert_eq / actual: 0.0 / expected: 0.0
00:00:56 v #660 > > │
00:00:56 v #661 > >
00:00:56 v #662 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:56 v #663 > > │ ## test_non_trivial_zero___
00:00:56 v #664 > >
00:00:56 v #665 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:56 v #666 > > inl test_non_trivial_zero___ log = run_test log fun zeta, gamma =>
00:00:56 v #667 > >     ;[[
00:00:56 v #668 > >         .^(0.5, 14.134725)
00:00:56 v #669 > >         .^(0.5, 21.022040)
00:00:56 v #670 > >         .^(0.5, 25.010857)
00:00:56 v #671 > >         .^(0.5, 30.424876)
00:00:56 v #672 > >         .^(0.5, 32.935062)
00:00:56 v #673 > >         .^(0.5, 37.586178)
00:00:56 v #674 > >     ]]
00:00:56 v #675 > >     |> fun x => a x : _ i32 _
00:00:56 v #676 > >     |> am.iter fun x =>
00:00:56 v #677 > >             inl result = zeta x
00:00:56 v #678 > >             result |> re |> abs |> _assert_lt 0.0001
00:00:56 v #679 > >             result |> im |> abs |> _assert_lt 0.0001
00:00:56 v #680 > >
00:00:56 v #681 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:56 v #682 > > //// test
00:00:56 v #683 > > ///! rust -d num-complex pyo3
00:00:56 v #684 > >
00:00:56 v #685 > > test_non_trivial_zero___ true
00:01:03 v #686 > >
00:01:03 v #687 > > ── [ 7.16s - return value ] ────────────────────────────────────────────────────
00:01:03 v #688 > > │ zeta_ / s: (0.5, 14.134725) / count: 0
00:01:03 v #689 > > │ call(zeta_) / f_code.co_name: zeta / f_locals:
00:01:03 v #690 > > s=(0.5+14.134725j), a=1, derivative=0, method=None, kwargs={} / f_lineno: 528
00:01:03 v #691 > > f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25
00:01:03 v #692 > > f_back.f_code.co_filename:  / arg: None
00:01:03 v #693 > > │ line(zeta_) / f_code.co_name: zeta / f_locals:
00:01:03 v #694 > > s=(0.5+14.134725j), a=1, derivative=0, method=None, kwargs={} / f_lineno: 530
00:01:03 v #695 > > f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25
00:01:03 v #696 > > f_back.f_code.co_filename:  / arg: None
00:01:03 v #697 > > │ line(zeta_) / f_code.co_name: zeta / f_locals:
00:01:03 v #698 > > s=(0.5+14.134725j), a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno:
00:01:03 v #699 > > 531 / f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25
00:01:03 v #700 > > f_back.f_code.co_filename:  / arg: None
00:01:03 v #701 > > │ line(zeta_) / f_code.co_name: zeta / f_locals:
00:01:03 v #702 > > s=(0.5+14.134725j), a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno:
00:01:03 v #703 > > 532 / f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25
00:01:03 v #704 > > f_back.f_code.co_filename:  / arg: None
00:01:03 v #705 > > │ line(zeta_) / f_code.co_name: zeta / f_locals:
00:01:03 v #706 > > s=(0.5+14.134725j), a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno:
00:01:03 v #707 > > 533 / f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25
00:01:03 v #708 > > f_back.f_code.co_filename:  / arg: None
00:01:03 v #709 > > │ call(zeta_) / f_code.co_name: f / f_locals:
00:01:03 v #710 > > x=(0.5+14.134725j), kwargs={}, name='zeta' / f_lineno: 989 / f_code.co_filename:
00:01:03 v #711 > > /mpmath/ctx_mp_python.py / f_back.f_lineno: 533 / f_back.f_code.co_filename:
00:01:03 v #712 > > /mpmath/functions/zeta.py / arg: None
00:01:03 v #713 > > │ line(zeta_) / f_code... arg: None
00:01:03 v #714 > > │ line(gamma_) / f_code.co_name: complex_stirling_series
00:01:03 v #715 > > f_locals: x=1208925819614629174706176, y=-90877802089662679288381440, prec=81,
00:01:03 v #716 > > _m=3416353708500640443578529333, tre=855591523614410863719,
00:01:03 v #717 > > tim=64316830603724894628746, ure=-1710577520534459139249,
00:01:03 v #718 > > uim=45518868236127668552, sre=1013002518538853602038572,
00:01:03 v #719 > > sim=90883161825546323029600502 / f_lineno: 1637 / f_code.co_filename:
00:01:03 v #720 > > /mpmath/libmp/gammazeta.py / f_back.f_lineno: 2050 / f_back.f_code.co_filename:
00:01:03 v #721 > > /mpmath/libmp/gammazeta.py / arg: None
00:01:03 v #722 > > │ line(gamma_) / f_code.co_name: complex_stirling_series
00:01:03 v #723 > > f_locals: x=1208925819614629174706176, y=-90877802089662679288381440, prec=81,
00:01:03 v #724 > > _m=3416353708500640443578529333, tre=-1816151534455075068,
00:01:03 v #725 > > tim=-45486653225747820096, ure=-1710577520534459139249,
00:01:03 v #726 > > uim=45518868236127668552, sre=1013002518538853602038572,
00:01:03 v #727 > > sim=90883161825546323029600502 / f_lineno: 1638 / f_code.co_filename:
00:01:03 v #728 > > /mpmath/libmp/gammazeta.py / f_back.f_lineno: 2050 / f_back.f_code.co_filename:
00:01:03 v #729 > > /mpmath/libmp/gammazeta.py / arg: None
00:01:03 v #730 > > │ gamma_ / result: (-1.32798420042152e-26 +
00:01:03 v #731 > > 5.5751975252688e-26j) / count: 309
00:01:03 v #732 > > │ gamma__ / s: Complex { re: 0.5, im: -37.586178 } / result:
00:01:03 v #733 > > Ok(Complex { re: -1.3279842004215153e-26, im: 5.575197525268802e-26 })
00:01:03 v #734 > > │ zeta__ / s: Complex { re: 0.5, im: 37.586178 } / result:
00:01:03 v #735 > > Ok(Complex { re: -8.910186507947958e-8, im: -2.943780446402868e-7 }) / z:
00:01:03 v #736 > > Complex { re: -0.0, im: 0.0 }
00:01:03 v #737 > > │ __assert_lt / actual: 8.910186507947958e-8 / expected: 0.0001
00:01:03 v #738 > > │ __assert_lt / actual: 2.943780446402868e-7 / expected: 0.0001
00:01:03 v #739 > > │
00:01:03 v #740 > >
00:01:03 v #741 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:03 v #742 > > │ ## test_real_part_greater_than_one___
00:01:03 v #743 > >
00:01:03 v #744 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:03 v #745 > > inl test_real_part_greater_than_one___ log = run_test log fun zeta, gamma =>
00:01:03 v #746 > >     inl points = ;[[ 2; 3; 4; 5; 10; 20; 50 ]]
00:01:03 v #747 > >     (a points : _ i32 _)
00:01:03 v #748 > >     |> am.iter fun point =>
00:01:03 v #749 > >         inl s = .^(point, 0)
00:01:03 v #750 > >         inl result = zeta s
00:01:03 v #751 > >         result |> re |> _assert_gt 0
00:01:03 v #752 > >         result |> im |> _assert_eq 0
00:01:03 v #753 > >
00:01:03 v #754 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:03 v #755 > > //// test
00:01:03 v #756 > > ///! rust -d num-complex pyo3
00:01:03 v #757 > >
00:01:03 v #758 > > test_real_part_greater_than_one___ true
00:01:10 v #759 > >
00:01:10 v #760 > > ── [ 7.08s - return value ] ────────────────────────────────────────────────────
00:01:10 v #761 > > │ zeta_ / s: (2.0, 0.0) / count: 0
00:01:10 v #762 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1,
00:01:10 v #763 > > derivative=0, method=None, kwargs={} / f_lineno: 528 / f_code.co_filename:
00:01:10 v #764 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:
00:01:10 v #765 > > arg: None
00:01:10 v #766 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1,
00:01:10 v #767 > > derivative=0, method=None, kwargs={} / f_lineno: 530 / f_code.co_filename:
00:01:10 v #768 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:
00:01:10 v #769 > > arg: None
00:01:10 v #770 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1,
00:01:10 v #771 > > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename:
00:01:10 v #772 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:
00:01:10 v #773 > > arg: None
00:01:10 v #774 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1,
00:01:10 v #775 > > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename:
00:01:10 v #776 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:
00:01:10 v #777 > > arg: None
00:01:10 v #778 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1,
00:01:10 v #779 > > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename:
00:01:10 v #780 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:
00:01:10 v #781 > > arg: None
00:01:10 v #782 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(2+0j),
00:01:10 v #783 > > kwargs={}, name='zeta' / f_lineno: 989 / f_code.co_filename:
00:01:10 v #784 > > /mpmath/ctx_mp_python.py / f_back.f_lineno: 533 / f_back.f_code.co_filename:
00:01:10 v #785 > > /mpmath/functions/zeta.py / arg: None
00:01:10 v #786 > > │ line(zeta_) / f_code.co_name: f / f_locals: x=(2+0j),
00:01:10 v #787 > > kwargs={}, name='zeta' / f_linen...f_code.co_filename: /mpmath/ctx_mp_python.py
00:01:10 v #788 > > / f_back.f_lineno: 1007 / f_back.f_code.co_filename: /mpmath/ctx_mp_python.py
00:01:10 v #789 > > arg: None
00:01:10 v #790 > > │ line(zeta_) / f_code.co_name: make_mpc / f_locals:
00:01:10 v #791 > > f_lineno: 605 / f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno:
00:01:10 v #792 > > 1007 / f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: None
00:01:10 v #793 > > │ return(zeta_) / f_code.co_name: make_mpc / f_locals:
00:01:10 v #794 > > f_lineno: 605 / f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno:
00:01:10 v #795 > > 1007 / f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg:
00:01:10 v #796 > > mpc(real='1.0000000000000009', imag='0.0')
00:01:10 v #797 > > │ return(zeta_) / f_code.co_name: f / f_locals:
00:01:10 v #798 > > x=mpc(real='50.0', imag='0.0'), kwargs={}, name='zeta', prec=53, rounding='n'
00:01:10 v #799 > > f_lineno: 1007 / f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno:
00:01:10 v #800 > > 533 / f_back.f_code.co_filename: /mpmath/functions/zeta.py / arg:
00:01:10 v #801 > > mpc(real='1.0000000000000009', imag='0.0')
00:01:10 v #802 > > │ return(zeta_) / f_code.co_name: zeta / f_locals: s=(50+0j),
00:01:10 v #803 > > a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533
00:01:10 v #804 > > f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25
00:01:10 v #805 > > f_back.f_code.co_filename:  / arg: mpc(real='1.0000000000000009', imag='0.0')
00:01:10 v #806 > > │ zeta_ / result: (1.0 + 0.0j) / count: 181
00:01:10 v #807 > > │ zeta / count: 0 / s: Complex { re: 50.0, im: 0.0 }
00:01:10 v #808 > > │ zeta__ / s: Complex { re: 50.0, im: 0.0 } / result:
00:01:10 v #809 > > Ok(Complex { re: 1.0000000000000009, im: 0.0 }) / z: Complex { re: NaN, im: NaN
00:01:10 v #810 > > }
00:01:10 v #811 > > │ __assert_gt / actual: 1.0000000000000009 / expected: 0.0
00:01:10 v #812 > > │ __assert_eq / actual: 0.0 / expected: 0.0
00:01:10 v #813 > > │
00:01:10 v #814 > >
00:01:10 v #815 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:10 v #816 > > │ ## test_zeta_at_1___
00:01:10 v #817 > >
00:01:10 v #818 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:10 v #819 > > inl test_zeta_at_1___ log = run_test log fun zeta, gamma =>
00:01:10 v #820 > >     inl s = .^(1, 0)
00:01:10 v #821 > >     inl result = zeta s
00:01:10 v #822 > >     result |> re |> _assert_eq limit.max
00:01:10 v #823 > >     result |> im |> _assert_eq 0
00:01:10 v #824 > >
00:01:10 v #825 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:10 v #826 > > //// test
00:01:10 v #827 > > ///! rust -d num-complex pyo3
00:01:10 v #828 > >
00:01:10 v #829 > > test_zeta_at_1___ true
00:01:17 v #830 > >
00:01:17 v #831 > > ── [ 6.89s - return value ] ────────────────────────────────────────────────────
00:01:17 v #832 > > │ zeta_ / s: (1.0, 0.0) / count: 0
00:01:17 v #833 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(1+0j), a=1,
00:01:17 v #834 > > derivative=0, method=None, kwargs={} / f_lineno: 528 / f_code.co_filename:
00:01:17 v #835 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:
00:01:17 v #836 > > arg: None
00:01:17 v #837 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(1+0j), a=1,
00:01:17 v #838 > > derivative=0, method=None, kwargs={} / f_lineno: 530 / f_code.co_filename:
00:01:17 v #839 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:
00:01:17 v #840 > > arg: None
00:01:17 v #841 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(1+0j), a=1,
00:01:17 v #842 > > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename:
00:01:17 v #843 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:
00:01:17 v #844 > > arg: None
00:01:17 v #845 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(1+0j), a=1,
00:01:17 v #846 > > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename:
00:01:17 v #847 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:
00:01:17 v #848 > > arg: None
00:01:17 v #849 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(1+0j), a=1,
00:01:17 v #850 > > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename:
00:01:17 v #851 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:
00:01:17 v #852 > > arg: None
00:01:17 v #853 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(1+0j),
00:01:17 v #854 > > kwargs={}, name='zeta' / f_lineno: 989 / f_code.co_filename:
00:01:17 v #855 > > /mpmath/ctx_mp_python.py / f_back.f_lineno: 533 / f_back.f_code.co_filename:
00:01:17 v #856 > > /mpmath/functions/zeta.py / arg: None
00:01:17 v #857 > > │ line(zeta_) / f_code.co_name: f / f_locals: x=(1+0j),
00:01:17 v #858 > > kwargs={}, name='zeta' / f_linen...back object at 0x<?>>)
00:01:17 v #859 > > │ return(gamma_) / f_code.co_name: f / f_locals:
00:01:17 v #860 > > x=mpc(real='0.0', imag='0.0'), kwargs={}, name='gamma', prec=53, rounding='n'
00:01:17 v #861 > > f_lineno: 1007 / f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno:
00:01:17 v #862 > > 25 / f_back.f_code.co_filename:  / arg: None
00:01:17 v #863 > > │ exception(gamma_) / f_code.co_name: fn / f_locals: log=True,
00:01:17 v #864 > > s=0j / f_lineno: 25 / f_code.co_filename:  / f_back.f_lineno:
00:01:17 v #865 > > f_back.f_code.co_filename:  / arg: (<class 'ValueError'>, ValueError('gamma
00:01:17 v #866 > > function pole'), <traceback object at 0x<?>>)
00:01:17 v #867 > > │ line(gamma_) / f_code.co_name: fn / f_locals: log=True, s=0j
00:01:17 v #868 > > / f_lineno: 29 / f_code.co_filename:  / f_back.f_lineno:
00:01:17 v #869 > > f_back.f_code.co_filename:  / arg: None
00:01:17 v #870 > > │ line(gamma_) / f_code.co_name: fn / f_locals: log=True, s=0j,
00:01:17 v #871 > > e=ValueError('gamma function pole') / f_lineno: 30 / f_code.co_filename:
00:01:17 v #872 > > f_back.f_lineno:  / f_back.f_code.co_filename:  / arg: None
00:01:17 v #873 > > │ line(gamma_) / f_code.co_name: fn / f_locals: log=True, s=0j
00:01:17 v #874 > > / f_lineno: 32 / f_code.co_filename:  / f_back.f_lineno:
00:01:17 v #875 > > f_back.f_code.co_filename:  / arg: None
00:01:17 v #876 > > │ return(gamma_) / f_code.co_name: fn / f_locals: log=True,
00:01:17 v #877 > > s=0j / f_lineno: 32 / f_code.co_filename:  / f_back.f_lineno:
00:01:17 v #878 > > f_back.f_code.co_filename:  / arg: (0.0, 0.0)
00:01:17 v #879 > > │ gamma__ / s: Complex { re: 0.0, im: 0.0 } / result:
00:01:17 v #880 > > Ok(Complex { re: 0.0, im: 0.0 })
00:01:17 v #881 > > │ zeta__ / s: Complex { re: 1.0, im: 0.0 } / result: Ok(Complex
00:01:17 v #882 > > { re: inf, im: 0.0 }) / z: Complex { re: 0.0, im: 0.0 }
00:01:17 v #883 > > │ __assert_eq / actual: inf / expected: inf
00:01:17 v #884 > > │ __assert_eq / actual: 0.0 / expected: 0.0
00:01:17 v #885 > > │
00:01:17 v #886 > >
00:01:17 v #887 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:17 v #888 > > │ ## test_symmetry_across_real_axis___
00:01:17 v #889 > >
00:01:17 v #890 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:17 v #891 > > inl test_symmetry_across_real_axis___ log = run_test log fun zeta, gamma =>
00:01:17 v #892 > >     inl s = .^(2, 10)
00:01:17 v #893 > >     inl result_positive_im = zeta s
00:01:17 v #894 > >     inl result_negative_im = zeta .^(re s, -(im s))
00:01:17 v #895 > >     inl conj = result_negative_im |> conj
00:01:17 v #896 > >     result_positive_im |> re |> _assert_eq (conj |> re)
00:01:17 v #897 > >     result_positive_im |> im |> _assert_eq (conj |> im)
00:01:18 v #898 > >
00:01:18 v #899 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:18 v #900 > > //// test
00:01:18 v #901 > > ///! rust -d num-complex pyo3
00:01:18 v #902 > >
00:01:18 v #903 > > test_symmetry_across_real_axis___ true
00:01:24 v #904 > >
00:01:24 v #905 > > ── [ 6.88s - return value ] ────────────────────────────────────────────────────
00:01:24 v #906 > > │ zeta_ / s: (2.0, 10.0) / count: 0
00:01:24 v #907 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(2+10j),
00:01:24 v #908 > > a=1, derivative=0, method=None, kwargs={} / f_lineno: 528 / f_code.co_filename:
00:01:24 v #909 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:
00:01:24 v #910 > > arg: None
00:01:24 v #911 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+10j),
00:01:24 v #912 > > a=1, derivative=0, method=None, kwargs={} / f_lineno: 530 / f_code.co_filename:
00:01:24 v #913 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:
00:01:24 v #914 > > arg: None
00:01:24 v #915 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+10j),
00:01:24 v #916 > > a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531
00:01:24 v #917 > > f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25
00:01:24 v #918 > > f_back.f_code.co_filename:  / arg: None
00:01:24 v #919 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+10j),
00:01:24 v #920 > > a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532
00:01:24 v #921 > > f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25
00:01:24 v #922 > > f_back.f_code.co_filename:  / arg: None
00:01:24 v #923 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+10j),
00:01:24 v #924 > > a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533
00:01:24 v #925 > > f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25
00:01:24 v #926 > > f_back.f_code.co_filename:  / arg: None
00:01:24 v #927 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(2+10j),
00:01:24 v #928 > > kwargs={}, name='zeta' / f_lineno: 989 / f_code.co_filename:
00:01:24 v #929 > > /mpmath/ctx_mp_python.py / f_back.f_lineno: 533 / f_back.f_code.co_filename:
00:01:24 v #930 > > /mpmath/functions/zeta.py / arg: None
00:01:24 v #931 > > │ line(zeta_) / f_code.co_name: f / f_locals: x=(2+10j),
00:01:24 v #932 > > kwargs={}, name='zeta' /.../ f_back.f_code.co_filename: /mpmath/libmp/libmpf.py
00:01:24 v #933 > > / arg: None
00:01:24 v #934 > > │ line(zeta_) / f_code.co_name: python_bitcount / f_locals:
00:01:24 v #935 > > n=26, bc=5 / f_lineno: 94 / f_code.co_filename: /mpmath/libmp/libintmath.py
00:01:24 v #936 > > f_back.f_lineno: 778 / f_back.f_code.co_filename: /mpmath/libmp/libmpf.py / arg:
00:01:24 v #937 > > None
00:01:24 v #938 > > │ line(zeta_) / f_code.co_name: python_bitcount / f_locals:
00:01:24 v #939 > > n=26, bc=5 / f_lineno: 95 / f_code.co_filename: /mpmath/libmp/libintmath.py
00:01:24 v #940 > > f_back.f_lineno: 778 / f_back.f_code.co_filename: /mpmath/libmp/libmpf.py / arg:
00:01:24 v #941 > > None
00:01:24 v #942 > > │ return(zeta_) / f_code.co_name: python_bitcount / f_locals:
00:01:24 v #943 > > n=26, bc=5 / f_lineno: 95 / f_code.co_filename: /mpmath/libmp/libintmath.py
00:01:24 v #944 > > f_back.f_lineno: 778 / f_back.f_code.co_filename: /mpmath/libmp/libmpf.py / arg:
00:01:24 v #945 > > 5
00:01:24 v #946 > > │ line(zeta_) / f_code.co_name: mpf_add / f_locals: s=(0, 1, 2,
00:01:24 v #947 > > 1), t=(0, 25, 2, 5), prec=14, rnd='d', _sub=0, ssign=0, sman=1, sexp=2, sbc=1,
00:01:24 v #948 > > tsign=0, tman=25, texp=2, tbc=5, offset=0, man=26, bc=5 / f_lineno: 779
00:01:24 v #949 > > f_code.co_filename: /mpmath/libmp/libmpf.py / f_back.f_lineno: 1401
00:01:24 v #950 > > f_back.f_code.co_filename: /mpmath/libmp/libmpf.py / arg: None
00:01:24 v #951 > > │ zeta_ / result: (1.19798250067418 + 0.0791704917205257j)
00:01:24 v #952 > > count: 1174
00:01:24 v #953 > > │ zeta / count: 0 / s: Complex { re: 2.0, im: -10.0 }
00:01:24 v #954 > > │ zeta__ / s: Complex { re: 2.0, im: -10.0 } / result:
00:01:24 v #955 > > Ok(Complex { re: 1.1979825006741847, im: 0.07917049172052575 }) / z: Complex {
00:01:24 v #956 > > re: NaN, im: NaN }
00:01:24 v #957 > > │ __assert_eq / actual: 1.1979825006741847 / expected:
00:01:24 v #958 > > 1.1979825006741847
00:01:24 v #959 > > │ __assert_eq / actual: -0.07917049172052575 / expected:
00:01:24 v #960 > > -0.07917049172052575
00:01:24 v #961 > > │
00:01:24 v #962 > >
00:01:24 v #963 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:24 v #964 > > │ ## test_behavior_near_origin___
00:01:24 v #965 > >
00:01:24 v #966 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:24 v #967 > > inl test_behavior_near_origin___ log = run_test log fun zeta, gamma =>
00:01:24 v #968 > >     inl s = .^(0.01, 0.01)
00:01:24 v #969 > >     inl result = zeta s
00:01:24 v #970 > >     result |> re |> _assert_lt limit.max
00:01:24 v #971 > >     result |> im |> _assert_lt limit.max
00:01:25 v #972 > >
00:01:25 v #973 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:25 v #974 > > //// test
00:01:25 v #975 > > ///! rust -d num-complex pyo3
00:01:25 v #976 > >
00:01:25 v #977 > > test_behavior_near_origin___ true
00:01:31 v #978 > >
00:01:31 v #979 > > ── [ 6.84s - return value ] ────────────────────────────────────────────────────
00:01:31 v #980 > > │ zeta_ / s: (0.01, 0.01) / count: 0
00:01:31 v #981 > > │ call(zeta_) / f_code.co_name: zeta / f_locals:
00:01:31 v #982 > > s=(0.01+0.01j), a=1, derivative=0, method=None, kwargs={} / f_lineno: 528
00:01:31 v #983 > > f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25
00:01:31 v #984 > > f_back.f_code.co_filename:  / arg: None
00:01:31 v #985 > > │ line(zeta_) / f_code.co_name: zeta / f_locals:
00:01:31 v #986 > > s=(0.01+0.01j), a=1, derivative=0, method=None, kwargs={} / f_lineno: 530
00:01:31 v #987 > > f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25
00:01:31 v #988 > > f_back.f_code.co_filename:  / arg: None
00:01:31 v #989 > > │ line(zeta_) / f_code.co_name: zeta / f_locals:
00:01:31 v #990 > > s=(0.01+0.01j), a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531
00:01:31 v #991 > > f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25
00:01:31 v #992 > > f_back.f_code.co_filename:  / arg: None
00:01:31 v #993 > > │ line(zeta_) / f_code.co_name: zeta / f_locals:
00:01:31 v #994 > > s=(0.01+0.01j), a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532
00:01:31 v #995 > > f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25
00:01:31 v #996 > > f_back.f_code.co_filename:  / arg: None
00:01:31 v #997 > > │ line(zeta_) / f_code.co_name: zeta / f_locals:
00:01:31 v #998 > > s=(0.01+0.01j), a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533
00:01:31 v #999 > > f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25
00:01:31 v #1000 > > f_back.f_code.co_filename:  / arg: None
00:01:31 v #1001 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(0.01+0.01j),
00:01:31 v #1002 > > kwargs={}, name='zeta' / f_lineno: 989 / f_code.co_filename:
00:01:31 v #1003 > > /mpmath/ctx_mp_python.py / f_back.f_lineno: 533 / f_back.f_code.co_filename:
00:01:31 v #1004 > > /mpmath/functions/zeta.py / arg: None
00:01:31 v #1005 > > │ line(zeta_) / f_code.co_name: f / f_locals: x=(0...py
00:01:31 v #1006 > > f_back.f_lineno: 1007 / f_back.f_code.co_filename: /mpmath/ctx_mp_python.py
00:01:31 v #1007 > > arg: None
00:01:31 v #1008 > > │ line(gamma_) / f_code.co_name: mpc_gamma / f_locals: z=((0,
00:01:31 v #1009 > > 4458563631096791, -52, 52), (1, 5764607523034235, -59, 53)), prec=53, rnd='n',
00:01:31 v #1010 > > type=0, a=(0, 4458563631096791, -52, 52), b=(1, 5764607523034235, -59, 53),
00:01:31 v #1011 > > asign=0, aman=4458563631096791, aexp=-52, abc=52, bsign=1,
00:01:31 v #1012 > > bman=5764607523034235, bexp=-59, bbc=53, wp=73, amag=0, bmag=-6, mag=0, an=0,
00:01:31 v #1013 > > bn=0, absn=0j, gamma_size=0, need_reflection=0, zorig=((0, 4458563631096791,
00:01:31 v #1014 > > -52, 52), (1, 5764607523034235, -59, 53)), yfinal=0, balance_prec=0,
00:01:31 v #1015 > > n_for_stirling=14, need_reduction=True, afix=132131814190692672995328,
00:01:31 v #1016 > > bfix=-94447329657392906240, r=0, zprered=((0, 4458563631096791, -52, 52), (1,
00:01:31 v #1017 > > 5764607523034235, -59, 53)), d=14, rre=56942610883563778729574216337150,
00:01:31 v #1018 > > one=9444732965739290427392, rim=-1820461636508155576115177658065, k=12
00:01:31 v #1019 > > f_lineno: 2043 / f_code.co_filename: /mpmath/libmp/gammazeta.py
00:01:31 v #1020 > > f_back.f_lineno: 1007 / f_back.f_code.co_filename: /mpmath/ctx_mp_python.py
00:01:31 v #1021 > > arg: None
00:01:31 v #1022 > > │ gamma_ / result: (1.00577030202902 + 0.0059717824054102j)
00:01:31 v #1023 > > count: 383
00:01:31 v #1024 > > │ gamma__ / s: Complex { re: 0.99, im: -0.01 } / result:
00:01:31 v #1025 > > Ok(Complex { re: 1.005770302029023, im: 0.005971782405410201 })
00:01:31 v #1026 > > │ zeta__ / s: Complex { re: 0.01, im: 0.01 } / result:
00:01:31 v #1027 > > Ok(Complex { re: -0.5091873433665667, im: -0.00939202213994577 }) / z: Complex {
00:01:31 v #1028 > > re: 0.0, im: 0.0 }
00:01:31 v #1029 > > │ __assert_lt / actual: -0.5091873433665667 / expected: inf
00:01:31 v #1030 > > │ __assert_lt / actual: -0.00939202213994577 / expected: inf
00:01:31 v #1031 > > │
00:01:31 v #1032 > >
00:01:31 v #1033 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:31 v #1034 > > │ ## test_imaginary_axis
00:01:31 v #1035 > >
00:01:31 v #1036 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:31 v #1037 > > inl test_imaginary_axis log = run_test log fun zeta, gamma =>
00:01:31 v #1038 > >     (join [[ 10; 20; 30; 40; 50; 60; 70; 80; 90; 100 ]])
00:01:31 v #1039 > >     |> listm.iter fun s =>
00:01:31 v #1040 > >         inl s = .^(0, s)
00:01:31 v #1041 > >         inl result = zeta s
00:01:31 v #1042 > >         result |> re |> _assert_ne 0
00:01:31 v #1043 > >         result |> im |> _assert_ne 0
00:01:32 v #1044 > >
00:01:32 v #1045 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:32 v #1046 > > //// test
00:01:32 v #1047 > > ///! rust -d num-complex pyo3
00:01:32 v #1048 > >
00:01:32 v #1049 > > test_imaginary_axis true
00:01:39 v #1050 > >
00:01:39 v #1051 > > ── [ 7.19s - return value ] ────────────────────────────────────────────────────
00:01:39 v #1052 > > │ zeta_ / s: (0.0, 10.0) / count: 0
00:01:39 v #1053 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=10j, a=1,
00:01:39 v #1054 > > derivative=0, method=None, kwargs={} / f_lineno: 528 / f_code.co_filename:
00:01:39 v #1055 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:
00:01:39 v #1056 > > arg: None
00:01:39 v #1057 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=10j, a=1,
00:01:39 v #1058 > > derivative=0, method=None, kwargs={} / f_lineno: 530 / f_code.co_filename:
00:01:39 v #1059 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:
00:01:39 v #1060 > > arg: None
00:01:39 v #1061 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=10j, a=1,
00:01:39 v #1062 > > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename:
00:01:39 v #1063 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:
00:01:39 v #1064 > > arg: None
00:01:39 v #1065 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=10j, a=1,
00:01:39 v #1066 > > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename:
00:01:39 v #1067 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:
00:01:39 v #1068 > > arg: None
00:01:39 v #1069 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=10j, a=1,
00:01:39 v #1070 > > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename:
00:01:39 v #1071 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:
00:01:39 v #1072 > > arg: None
00:01:39 v #1073 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=10j, kwargs={},
00:01:39 v #1074 > > name='zeta' / f_lineno: 989 / f_code.co_filename: /mpmath/ctx_mp_python.py
00:01:39 v #1075 > > f_back.f_lineno: 533 / f_back.f_code.co_filename: /mpmath/functions/zeta.py
00:01:39 v #1076 > > arg: None
00:01:39 v #1077 > > │ line(zeta_) / f_code.co_name: f / f_locals: x=10j, kwargs={},
00:01:39 v #1078 > > name='zeta' / f_lineno: 990 / f_code.co_f...g: None
00:01:39 v #1079 > > │ line(gamma_) / f_code.co_name: to_fixed / f_locals: s=(0, 1,
00:01:39 v #1080 > > 0, 1), prec=83 / f_lineno: 511 / f_code.co_filename: /mpmath/libmp/libmpf.py
00:01:39 v #1081 > > f_back.f_lineno: 2031 / f_back.f_code.co_filename: /mpmath/libmp/gammazeta.py
00:01:39 v #1082 > > arg: None
00:01:39 v #1083 > > │ line(gamma_) / f_code.co_name: to_fixed / f_locals: s=(0, 1,
00:01:39 v #1084 > > 0, 1), prec=83, sign=0, man=1, exp=0, bc=1 / f_lineno: 512 / f_code.co_filename:
00:01:39 v #1085 > > /mpmath/libmp/libmpf.py / f_back.f_lineno: 2031 / f_back.f_code.co_filename:
00:01:39 v #1086 > > /mpmath/libmp/gammazeta.py / arg: None
00:01:39 v #1087 > > │ line(gamma_) / f_code.co_name: to_fixed / f_locals: s=(0, 1,
00:01:39 v #1088 > > 0, 1), prec=83, sign=0, man=1, exp=0, bc=1, offset=83 / f_lineno: 513
00:01:39 v #1089 > > f_code.co_filename: /mpmath/libmp/libmpf.py / f_back.f_lineno: 2031
00:01:39 v #1090 > > f_back.f_code.co_filename: /mpmath/libmp/gammazeta.py / arg: None
00:01:39 v #1091 > > │ line(gamma_) / f_code.co_name: to_fixed / f_locals: s=(0, 1,
00:01:39 v #1092 > > 0, 1), prec=83, sign=0, man=1, exp=0, bc=1, offset=83 / f_lineno: 517
00:01:39 v #1093 > > f_code.co_filename: /mpmath/libmp/libmpf.py / f_back.f_lineno: 2031
00:01:39 v #1094 > > f_back.f_code.co_filename: /mpmath/libmp/gammazeta.py / arg: None
00:01:39 v #1095 > > │ gamma_ / result: (-1.51425318049776e-67 +
00:01:39 v #1096 > > 2.79082155561748e-69j) / count: 289
00:01:39 v #1097 > > │ gamma__ / s: Complex { re: 1.0, im: -100.0 } / result:
00:01:39 v #1098 > > Ok(Complex { re: -1.514253180497756e-67, im: 2.7908215556174775e-69 })
00:01:39 v #1099 > > │ zeta__ / s: Complex { re: 0.0, im: 100.0 } / result:
00:01:39 v #1100 > > Ok(Complex { re: 6.51721042625301, im: 0.18128842533791736 }) / z: Complex { re:
00:01:39 v #1101 > > 0.0, im: 0.0 }
00:01:39 v #1102 > > │ __assert_ne / actual: 6.51721042625301 / expected: 0.0
00:01:39 v #1103 > > │ __assert_ne / actual: 0.18128842533791736 / expected: 0.0
00:01:39 v #1104 > > │
00:01:39 v #1105 > >
00:01:39 v #1106 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:39 v #1107 > > │ ## test_critical_strip
00:01:39 v #1108 > >
00:01:39 v #1109 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:39 v #1110 > > inl test_critical_strip log = run_test log fun zeta, gamma =>
00:01:39 v #1111 > >     (join [[
00:01:39 v #1112 > >         .^(0.5, 14.134725)
00:01:39 v #1113 > >         .^(0.75, 20.5)
00:01:39 v #1114 > >         .^(1.25, 30.1)
00:01:39 v #1115 > >         .^(0.25, 40.0)
00:01:39 v #1116 > >         .^(1.0, 50.0)
00:01:39 v #1117 > >     ]])
00:01:39 v #1118 > >     |> listm.iter fun s =>
00:01:39 v #1119 > >         inl result = zeta s
00:01:39 v #1120 > >         result |> re |> _assert_ne 0
00:01:39 v #1121 > >         result |> im |> _assert_ne 0
00:01:39 v #1122 > >
00:01:39 v #1123 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:39 v #1124 > > //// test
00:01:39 v #1125 > > ///! rust -d num-complex pyo3
00:01:39 v #1126 > >
00:01:39 v #1127 > > test_critical_strip true
00:01:46 v #1128 > >
00:01:46 v #1129 > > ── [ 6.99s - return value ] ────────────────────────────────────────────────────
00:01:46 v #1130 > > │ zeta_ / s: (0.5, 14.134725) / count: 0
00:01:46 v #1131 > > │ call(zeta_) / f_code.co_name: zeta / f_locals:
00:01:46 v #1132 > > s=(0.5+14.134725j), a=1, derivative=0, method=None, kwargs={} / f_lineno: 528
00:01:46 v #1133 > > f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25
00:01:46 v #1134 > > f_back.f_code.co_filename:  / arg: None
00:01:46 v #1135 > > │ line(zeta_) / f_code.co_name: zeta / f_locals:
00:01:46 v #1136 > > s=(0.5+14.134725j), a=1, derivative=0, method=None, kwargs={} / f_lineno: 530
00:01:46 v #1137 > > f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25
00:01:46 v #1138 > > f_back.f_code.co_filename:  / arg: None
00:01:46 v #1139 > > │ line(zeta_) / f_code.co_name: zeta / f_locals:
00:01:46 v #1140 > > s=(0.5+14.134725j), a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno:
00:01:46 v #1141 > > 531 / f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25
00:01:46 v #1142 > > f_back.f_code.co_filename:  / arg: None
00:01:46 v #1143 > > │ line(zeta_) / f_code.co_name: zeta / f_locals:
00:01:46 v #1144 > > s=(0.5+14.134725j), a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno:
00:01:46 v #1145 > > 532 / f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25
00:01:46 v #1146 > > f_back.f_code.co_filename:  / arg: None
00:01:46 v #1147 > > │ line(zeta_) / f_code.co_name: zeta / f_locals:
00:01:46 v #1148 > > s=(0.5+14.134725j), a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno:
00:01:46 v #1149 > > 533 / f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25
00:01:46 v #1150 > > f_back.f_code.co_filename:  / arg: None
00:01:46 v #1151 > > │ call(zeta_) / f_code.co_name: f / f_locals:
00:01:46 v #1152 > > x=(0.5+14.134725j), kwargs={}, name='zeta' / f_lineno: 989 / f_code.co_filename:
00:01:46 v #1153 > > /mpmath/ctx_mp_python.py / f_back.f_lineno: 533 / f_back.f_code.co_filename:
00:01:46 v #1154 > > /mpmath/functions/zeta.py / arg: None
00:01:46 v #1155 > > │ line(zeta_) / f_code...210, sim=241793223535862290161314995
00:01:46 v #1156 > > f_lineno: 1648 / f_code.co_filename: /mpmath/libmp/gammazeta.py
00:01:46 v #1157 > > f_back.f_lineno: 2050 / f_back.f_code.co_filename: /mpmath/libmp/gammazeta.py
00:01:46 v #1158 > > arg: None
00:01:46 v #1159 > > │ line(gamma_) / f_code.co_name: complex_stirling_series
00:01:46 v #1160 > > f_locals: x=0, y=-241785163922925834941235200, prec=82,
00:01:46 v #1161 > > _m=12089258196146291747061760000, tre=0, tim=396, ure=-1934281311383406679530,
00:01:46 v #1162 > > uim=0, sre=4443714077719696485012210, sim=241793223535862290161314995
00:01:46 v #1163 > > f_lineno: 1649 / f_code.co_filename: /mpmath/libmp/gammazeta.py
00:01:46 v #1164 > > f_back.f_lineno: 2050 / f_back.f_code.co_filename: /mpmath/libmp/gammazeta.py
00:01:46 v #1165 > > arg: None
00:01:46 v #1166 > > │ line(gamma_) / f_code.co_name: complex_stirling_series
00:01:46 v #1167 > > f_locals: x=0, y=-241785163922925834941235200, prec=82,
00:01:46 v #1168 > > _m=12089258196146291747061760000, tre=0, tim=396, ure=-1934281311383406679530,
00:01:46 v #1169 > > uim=0, sre=4443714077719696485012210, sim=241793223535862290161314997
00:01:46 v #1170 > > f_lineno: 1650 / f_code.co_filename: /mpmath/libmp/gammazeta.py
00:01:46 v #1171 > > f_back.f_lineno: 2050 / f_back.f_code.co_filename: /mpmath/libmp/gammazeta.py
00:01:46 v #1172 > > arg: None
00:01:46 v #1173 > > │ gamma_ / result: (2.63173210619768e-35 -
00:01:46 v #1174 > > 8.16464935465334e-36j) / count: 262
00:01:46 v #1175 > > │ gamma__ / s: Complex { re: 0.0, im: -50.0 } / result:
00:01:46 v #1176 > > Ok(Complex { re: 2.6317321061976804e-35, im: -8.164649354653339e-36 })
00:01:46 v #1177 > > │ zeta__ / s: Complex { re: 1.0, im: 50.0 } / result:
00:01:46 v #1178 > > Ok(Complex { re: 0.44103873082309397, im: 0.281582455029683 }) / z: Complex {
00:01:46 v #1179 > > re: 0.0, im: 0.0 }
00:01:46 v #1180 > > │ __assert_ne / actual: 0.44103873082309397 / expected: 0.0
00:01:46 v #1181 > > │ __assert_ne / actual: 0.281582455029683 / expected: 0.0
00:01:46 v #1182 > > │
00:01:46 v #1183 > >
00:01:46 v #1184 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:46 v #1185 > > │ ## test_reflection_formula_for_specific_value
00:01:46 v #1186 > >
00:01:46 v #1187 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:46 v #1188 > > inl test_reflection_formula_for_specific_value log = run_test log fun zeta,
00:01:46 v #1189 > > gamma =>
00:01:46 v #1190 > >     (join [[
00:01:46 v #1191 > >         .^(3, 4)
00:01:46 v #1192 > >         .^(2.5, -3.5)
00:01:46 v #1193 > >         .^(1.5, 2.5)
00:01:46 v #1194 > >         .^(0.5, 14.134725)
00:01:46 v #1195 > >     ]])
00:01:46 v #1196 > >     |> listm.iter fun s =>
00:01:46 v #1197 > >         inl lhs = zeta s
00:01:46 v #1198 > >         inl reflection_coefficient =
00:01:46 v #1199 > >             (.^(2, 0) .** s)
00:01:46 v #1200 > >             .* (.^(pi, 0) .** (s .- .^(1, 0)))
00:01:46 v #1201 > >             .* (.^(pi, 0) .* s ./ .^(2, 0) |> complex_sin)
00:01:46 v #1202 > >             .* gamma (.^(1, 0) .- s)
00:01:46 v #1203 > >
00:01:46 v #1204 > >         inl one_minus_s = .^(1 - re s, -(im s))
00:01:46 v #1205 > >         inl rhs = reflection_coefficient .* zeta one_minus_s
00:01:46 v #1206 > >
00:01:46 v #1207 > >         re lhs - re rhs |> abs |> _assert_lt 0.0001
00:01:46 v #1208 > >         im lhs - im rhs |> abs |> _assert_lt 0.0001
00:01:46 v #1209 > >
00:01:46 v #1210 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:46 v #1211 > > //// test
00:01:46 v #1212 > > ///! rust -d num-complex pyo3
00:01:46 v #1213 > >
00:01:46 v #1214 > > test_reflection_formula_for_specific_value true
00:01:53 v #1215 > >
00:01:53 v #1216 > > ── [ 7.27s - return value ] ────────────────────────────────────────────────────
00:01:53 v #1217 > > │ zeta_ / s: (3.0, 4.0) / count: 0
00:01:53 v #1218 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(3+4j), a=1,
00:01:53 v #1219 > > derivative=0, method=None, kwargs={} / f_lineno: 528 / f_code.co_filename:
00:01:53 v #1220 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:
00:01:53 v #1221 > > arg: None
00:01:53 v #1222 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(3+4j), a=1,
00:01:53 v #1223 > > derivative=0, method=None, kwargs={} / f_lineno: 530 / f_code.co_filename:
00:01:53 v #1224 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:
00:01:53 v #1225 > > arg: None
00:01:53 v #1226 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(3+4j), a=1,
00:01:53 v #1227 > > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename:
00:01:53 v #1228 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:
00:01:53 v #1229 > > arg: None
00:01:53 v #1230 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(3+4j), a=1,
00:01:53 v #1231 > > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename:
00:01:53 v #1232 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:
00:01:53 v #1233 > > arg: None
00:01:53 v #1234 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(3+4j), a=1,
00:01:53 v #1235 > > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename:
00:01:53 v #1236 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:
00:01:53 v #1237 > > arg: None
00:01:53 v #1238 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(3+4j),
00:01:53 v #1239 > > kwargs={}, name='zeta' / f_lineno: 989 / f_code.co_filename:
00:01:53 v #1240 > > /mpmath/ctx_mp_python.py / f_back.f_lineno: 533 / f_back.f_code.co_filename:
00:01:53 v #1241 > > /mpmath/functions/zeta.py / arg: None
00:01:53 v #1242 > > │ line(zeta_) / f_code.co_name: f / f_locals: x=(3+4j),
00:01:53 v #1243 > > kwargs={}, name='zeta' / f_linen...045 / f_code.co_filename:
00:01:53 v #1244 > > /mpmath/libmp/gammazeta.py / f_back.f_lineno: 1007 / f_back.f_code.co_filename:
00:01:53 v #1245 > > /mpmath/ctx_mp_python.py / arg: None
00:01:53 v #1246 > > │ line(gamma_) / f_code.co_name: mpc_gamma / f_locals: z=((0,
00:01:53 v #1247 > > 1, -1, 1), (0, 3978571390186527, -48, 52)), prec=53, rnd='n', type=0, a=(0, 1,
00:01:53 v #1248 > > -1, 1), b=(0, 3978571390186527, -48, 52), asign=0, aman=1, aexp=-1, abc=1,
00:01:53 v #1249 > > bsign=0, bman=3978571390186527, bexp=-48, bbc=52, wp=79, amag=0, bmag=4, mag=4,
00:01:53 v #1250 > > an=0, bn=14, absn=14j, gamma_size=56, need_reflection=0, zorig=((0, 1, -1, 1),
00:01:53 v #1251 > > (0, 3978571390186527, -48, 52)), yfinal=0, balance_prec=0, n_for_stirling=15,
00:01:53 v #1252 > > need_reduction=True, afix=2115620184325601055735808,
00:01:53 v #1253 > > bfix=8543917002826194402410496, r=0, zprered=((0, 1, -1, 1), (0,
00:01:53 v #1254 > > 3978571390186527, -48, 52)), d=5, rre=-542313259704087430481959845,
00:01:53 v #1255 > > one=604462909807314587353088, rim=-1657865507045117397880679064, k=2 / f_lineno:
00:01:53 v #1256 > > 2043 / f_code.co_filename: /mpmath/libmp/gammazeta.py / f_back.f_lineno: 1007
00:01:53 v #1257 > > f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: None
00:01:53 v #1258 > > │ gamma_ / result: (-1.4455538437607e-10 -
00:01:53 v #1259 > > 5.52278876877407e-10j) / count: 318
00:01:53 v #1260 > > │ gamma__ / s: Complex { re: 0.5, im: 14.134725 } / result:
00:01:53 v #1261 > > Ok(Complex { re: -1.4455538437606964e-10, im: -5.522788768774066e-10 })
00:01:53 v #1262 > > │ zeta__ / s: Complex { re: 0.5, im: -14.134725 } / result:
00:01:53 v #1263 > > Ok(Complex { re: 1.7674298413849186e-8, im: 1.1102028930923156e-7 }) / z:
00:01:53 v #1264 > > Complex { re: 0.0, im: 0.0 }
00:01:53 v #1265 > > │ __assert_lt / actual: 4.433688083284228e-22 / expected:
00:01:53 v #1266 > > 0.0001
00:01:53 v #1267 > > │ __assert_lt / actual: 1.3234889800848443e-22 / expected:
00:01:53 v #1268 > > 0.0001
00:01:53 v #1269 > > │
00:01:53 v #1270 > >
00:01:53 v #1271 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:53 v #1272 > > │ ## test_euler_product_formula
00:01:53 v #1273 > >
00:01:53 v #1274 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:53 v #1275 > > inl test_euler_product_formula log = run_test log fun zeta, gamma =>
00:01:53 v #1276 > >     inl s_values = join [[ 2; 2.5; 3; 3.5; 4; 4.5; 5 ]]
00:01:53 v #1277 > >     inl primes = join [[ 2; 3; 5; 7; 11; 13; 17; 19; 23; 29; 31; 37; 41; 43; 47;
00:01:53 v #1278 > > 53; 59; 61; 67; 71 ]]
00:01:53 v #1279 > >     s_values
00:01:53 v #1280 > >     |> listm.iter fun s_re =>
00:01:53 v #1281 > >         inl s = .^(s_re, 0)
00:01:53 v #1282 > >         inl product =
00:01:53 v #1283 > >             (1, primes)
00:01:53 v #1284 > >             ||> listm.fold fun acc x =>
00:01:53 v #1285 > >                 acc * 1 / (1 - x ** -s_re)
00:01:53 v #1286 > >
00:01:53 v #1287 > >         inl result = zeta s
00:01:53 v #1288 > >         re result - product |> abs |> _assert_lt 0.01
00:01:53 v #1289 > >         result |> im |> _assert_lt 0.01
00:01:54 v #1290 > >
00:01:54 v #1291 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:54 v #1292 > > //// test
00:01:54 v #1293 > > ///! rust -d num-complex pyo3
00:01:54 v #1294 > >
00:01:54 v #1295 > > test_euler_product_formula true
00:02:01 v #1296 > >
00:02:01 v #1297 > > ── [ 7.05s - return value ] ────────────────────────────────────────────────────
00:02:01 v #1298 > > │ zeta_ / s: (2.0, 0.0) / count: 0
00:02:01 v #1299 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1,
00:02:01 v #1300 > > derivative=0, method=None, kwargs={} / f_lineno: 528 / f_code.co_filename:
00:02:01 v #1301 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:
00:02:01 v #1302 > > arg: None
00:02:01 v #1303 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1,
00:02:01 v #1304 > > derivative=0, method=None, kwargs={} / f_lineno: 530 / f_code.co_filename:
00:02:01 v #1305 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:
00:02:01 v #1306 > > arg: None
00:02:01 v #1307 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1,
00:02:01 v #1308 > > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename:
00:02:01 v #1309 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:
00:02:01 v #1310 > > arg: None
00:02:01 v #1311 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1,
00:02:01 v #1312 > > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename:
00:02:01 v #1313 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:
00:02:01 v #1314 > > arg: None
00:02:01 v #1315 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1,
00:02:01 v #1316 > > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename:
00:02:01 v #1317 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename:
00:02:01 v #1318 > > arg: None
00:02:01 v #1319 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(2+0j),
00:02:01 v #1320 > > kwargs={}, name='zeta' / f_lineno: 989 / f_code.co_filename:
00:02:01 v #1321 > > /mpmath/ctx_mp_python.py / f_back.f_lineno: 533 / f_back.f_code.co_filename:
00:02:01 v #1322 > > /mpmath/functions/zeta.py / arg: None
00:02:01 v #1323 > > │ line(zeta_) / f_code.co_name: f / f_locals: x=(2+0j),
00:02:01 v #1324 > > kwargs={}, name='zeta' / f_linen...k.f_lineno: 985 / f_back.f_code.co_filename:
00:02:01 v #1325 > > /mpmath/libmp/gammazeta.py / arg: None
00:02:01 v #1326 > > │ line(zeta_) / f_code.co_name: mpf_zeta_int / f_locals: s=5,
00:02:01 v #1327 > > prec=53, rnd='n', wp=73, m=19.25, needed_terms=623488, n=33, d=[1, 2179, 792067,
00:02:01 v #1328 > > 115062531, 8930212611, 429314925315, 13983537177347, 327666966438659,
00:02:01 v #1329 > > 5764846406968067, 78615943485956867, 851604426176701187, 7470527451121689347,
00:02:01 v #1330 > > 53898915046387983107, 323897845985013506819, 1638178356374090130179,
00:02:01 v #1331 > > 7034281785235908174595, 25833609859980306522883, 81661917475887913739011,
00:02:01 v #1332 > > 223448095548034217779971, 532029677981012660429571, 1108048631855905753375491,
00:02:01 v #1333 > > 2029946562680066824315651, 3292927237466655352791811, 4769455369342763680768771,
00:02:01 v #1334 > > 6235511670496346417767171, 7463408621503347142796035, 8322751284048216428487427,
00:02:01 v #1335 > > 8818779962777819524211459, 9050689474911140452082435, 9136270117622166323831555,
00:02:01 v #1336 > > 9160252037839493347779331, 9165045885455648617505539, 9165654628010081032708867,
00:02:01 v #1337 > > 9165691521498228451812099], t=-84153986440240940095109733900764881301998910956,
00:02:01 v #1338 > > k=26 / f_lineno: 954 / f_code.co_filename: /mpmath/libmp/gammazeta.py
00:02:01 v #1339 > > f_back.f_lineno: 985 / f_back.f_code.co_filename: /mpmath/libmp/gammazeta.py
00:02:01 v #1340 > > arg: None
00:02:01 v #1341 > > │ zeta_ / result: (1.03692775514337 + 0.0j) / count: 228
00:02:01 v #1342 > > │ zeta / count: 0 / s: Complex { re: 5.0, im: 0.0 }
00:02:01 v #1343 > > │ zeta__ / s: Complex { re: 5.0, im: 0.0 } / result: Ok(Complex
00:02:01 v #1344 > > { re: 1.03692775514337, im: 0.0 }) / z: Complex { re: NaN, im: NaN }
00:02:01 v #1345 > > │ __assert_lt / actual: 2.0033654735129858e-9 / expected: 0.01
00:02:01 v #1346 > > │ __assert_lt / actual: 0.0 / expected: 0.01
00:02:01 v #1347 > > │
00:02:01 v #1348 > >
00:02:01 v #1349 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:01 v #1350 > > │ ## graph
00:02:01 v #1351 > >
00:02:01 v #1352 > > ── mermaid ─────────────────────────────────────────────────────────────────────
00:02:01 v #1353 > > │ <div class="mermaidMarkdownContainer"
00:02:01 v #1354 > > style="background-color:white">
00:02:01 v #1355 > > │ <link rel="stylesheet"
00:02:01 v #1356 > > href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.0/css/all.min.css"
00:02:01 v #1357 > > >
00:02:01 v #1358 > > │ <div id="251334cb54944616a7e74d900a0ce3ec"></div>
00:02:01 v #1359 > > │ <script type="module">
00:02:01 v #1360 > > │
00:02:01 v #1361 > > │             import mermaid from
00:02:01 v #1362 > > 'https://cdn.jsdelivr.net/npm/mermaid@10.6.1/dist/mermaid.esm.min.mjs';
00:02:01 v #1363 > > │             let renderTarget =
00:02:01 v #1364 > > document.getElementById('251334cb54944616a7e74d900a0ce3ec');
00:02:01 v #1365 > > │             try {
00:02:01 v #1366 > > │                 const {svg, bindFunctions} = await
00:02:01 v #1367 > > mermaid.mermaidAPI.render(
00:02:01 v #1368 > > │
00:02:01 v #1369 > > 'mermaid_251334cb54944616a7e74d900a0ce3ec',
00:02:01 v #1370 > > │                     `graph TD
00:02:01 v #1371 > > │     zeta("zeta()") --> convert
00:02:01 v #1372 > > │     zeta --> f["f()"]
00:02:01 v #1373 > > │     f --> mpc_f["mpc_zeta()"]
00:02:01 v #1374 > > │     f --> mpf_f["mpf_zeta()"]
00:02:01 v #1375 > > │     convert --> from_float
00:02:01 v #1376 > > │     from_float --> from_man_exp
00:02:01 v #1377 > > │     from_man_exp --> python_bitcount
00:02:01 v #1378 > > │     python_bitcount --> _normalize
00:02:01 v #1379 > > │     _normalize --> make_mpc
00:02:01 v #1380 > > │     make_mpc --> mpc_zeta["mpc_zeta()"]
00:02:01 v #1381 > > │     mpc_zeta --> mpf_zeta["mpf_zeta()"]
00:02:01 v #1382 > > │     mpf_zeta --> to_int
00:02:01 v #1383 > > │     to_int --> mpf_zeta_int["mpf_zeta_int()"]
00:02:01 v #1384 > > │     mpf_zeta_int --> borwein_coefficients
00:02:01 v #1385 > > │     borwein_coefficients -->
00:02:01 v #1386 > > from_man_exp_2("from_man_exp()")
00:02:01 v #1387 > > │     from_man_exp_2 -->
00:02:01 v #1388 > > python_bitcount_2("python_bitcount()")
00:02:01 v #1389 > > │     python_bitcount_2 --> _normalize_2("_normalize()")
00:02:01 v #1390 > > │     _normalize_2 --> make_mpc_2("make_mpc()")
00:02:01 v #1391 > > │     make_mpc_2 --> stop_trace
00:02:01 v #1392 > > │     mpf_zeta_int --> mpf_bernoulli
00:02:01 v #1393 > > │     mpf_bernoulli --> bernoulli_size
00:02:01 v #1394 > > │     bernoulli_size --> mpf_rdiv_int
00:02:01 v #1395 > > │     mpf_rdiv_int --> python_bitcount_3("python_bitcount()")
00:02:01 v #1396 > > │     python_bitcount_3 --> _normalize1
00:02:01 v #1397 > > │     _normalize1 --> from_man_exp_3("from_man_exp()")
00:02:01 v #1398 > > │     from_man_exp_3 --> _normalize_3("_normalize()")
00:02:01 v #1399 > > │     _normalize_3 --> mpf_sub
00:02:01 v #1400 > > │     mpf_sub --> mpf_add
00:02:01 v #1401 > > │     mpf_add --> mpf_neg
00:02:01 v #1402 > > │     mpf_neg --> _normalize1_2("_normalize1()")
00:02:01 v #1403 > > │     _normalize1_2 --> from_int
00:02:01 v #1404 > > │     from_int --> mpf_div
00:02:01 v #1405 > > │     mpf_div --> python_bitcount_4("python_bitcount()")
00:02:01 v #1406 > > │     python_bitcount_4 --> _normalize1_3("_normalize1()")
00:02:01 v #1407 > > │     _normalize1_3 --> make_mpc_3("make_mpc()")
00:02:01 v #1408 > > │     make_mpc_3 --> final_stop["stop_trace()"]`);
00:02:01 v #1409 > > │                 renderTarget.innerHTML = svg;
00:02:01 v #1410 > > │                 bindFunctions?.(renderTarget);
00:02:01 v #1411 > > │             }
00:02:01 v #1412 > > │             catch (error) {
00:02:01 v #1413 > > │                 console.log(error);
00:02:01 v #1414 > > │             }
00:02:01 v #1415 > > │ </script>
00:02:01 v #1416 > > │ </div>
00:02:01 v #1417 > > │
00:02:01 v #1418 > >
00:02:01 v #1419 > > ── mermaid ─────────────────────────────────────────────────────────────────────
00:02:01 v #1420 > > │ <div class="mermaidMarkdownContainer"
00:02:01 v #1421 > > style="background-color:white">
00:02:01 v #1422 > > │ <link rel="stylesheet"
00:02:01 v #1423 > > href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.0/css/all.min.css"
00:02:01 v #1424 > > >
00:02:01 v #1425 > > │ <div id="0c1b2aa9d7c14469a6d2ea9bf41c72bc"></div>
00:02:01 v #1426 > > │ <script type="module">
00:02:01 v #1427 > > │
00:02:01 v #1428 > > │             import mermaid from
00:02:01 v #1429 > > 'https://cdn.jsdelivr.net/npm/mermaid@10.6.1/dist/mermaid.esm.min.mjs';
00:02:01 v #1430 > > │             let renderTarget =
00:02:01 v #1431 > > document.getElementById('0c1b2aa9d7c14469a6d2ea9bf41c72bc');
00:02:01 v #1432 > > │             try {
00:02:01 v #1433 > > │                 const {svg, bindFunctions} = await
00:02:01 v #1434 > > mermaid.mermaidAPI.render(
00:02:01 v #1435 > > │
00:02:01 v #1436 > > 'mermaid_0c1b2aa9d7c14469a6d2ea9bf41c72bc',
00:02:01 v #1437 > > │                     `graph TD
00:02:01 v #1438 > > │     zeta_rust("zeta() - Rust") --> num_traits("num-traits")
00:02:01 v #1439 > > │     zeta_rust --> num_bigint("num-bigint")
00:02:01 v #1440 > > │     zeta_rust --> rust_decimal("rust_decimal for
00:02:01 v #1441 > > precision")
00:02:01 v #1442 > > │     zeta_rust --> error_handling("Rust Error Handling")
00:02:01 v #1443 > > │
00:02:01 v #1444 > > │     num_traits --> num_traits_usage("Use for common
00:02:01 v #1445 > > traits")
00:02:01 v #1446 > > │     num_bigint --> bigint_operations("Arbitrary-precision
00:02:01 v #1447 > > arithmetic operations")
00:02:01 v #1448 > > │     rust_decimal --> decimal_operations("High-precision
00:02:01 v #1449 > > decimal operations")
00:02:01 v #1450 > > │     error_handling --> result_type("Use Result<T, E> for
00:02:01 v #1451 > > error handling")
00:02:01 v #1452 > > │
00:02:01 v #1453 > > │     bigint_operations --> convert_rust("convert() - Rust")
00:02:01 v #1454 > > │     bigint_operations --> normalize_rust("_normalize() -
00:02:01 v #1455 > > Rust")
00:02:01 v #1456 > > │
00:02:01 v #1457 > > │     convert_rust --> from_float_rust("from_float() - Rust")
00:02:01 v #1458 > > │     from_float_rust --> from_man_exp_rust("from_man_exp() -
00:02:01 v #1459 > > Rust")
00:02:01 v #1460 > > │     from_man_exp_rust --> bitcount_rust("bitcount() -
00:02:01 v #1461 > > Rust")
00:02:01 v #1462 > > │     bitcount_rust --> normalize_rust
00:02:01 v #1463 > > │     normalize_rust --> mpc_zeta_rust("mpc_zeta() - Rust")
00:02:01 v #1464 > > │     mpc_zeta_rust --> mpf_zeta_rust("mpf_zeta() - Rust")
00:02:01 v #1465 > > │     mpf_zeta_rust --> to_int_rust("to_int() - Rust")
00:02:01 v #1466 > > │     to_int_rust --> mpf_zeta_int_rust("mpf_zeta_int() -
00:02:01 v #1467 > > Rust")
00:02:01 v #1468 > > │
00:02:01 v #1469 > > │     mpf_zeta_int_rust -->
00:02:01 v #1470 > > borwein_coefficients_rust("borwein_coefficients() - Rust")
00:02:01 v #1471 > > │     borwein_coefficients_rust -->
00:02:01 v #1472 > > from_man_exp_rust_2("from_man_exp() - Rust")
00:02:01 v #1473 > > │     from_man_exp_rust_2 --> bitcount_rust_2("bitcount() -
00:02:01 v #1474 > > Rust")
00:02:01 v #1475 > > │     bitcount_rust_2 --> normalize_rust_2("_normalize() -
00:02:01 v #1476 > > Rust")
00:02:01 v #1477 > > │     normalize_rust_2 --> make_mpc_rust("make_mpc() - Rust")
00:02:01 v #1478 > > │
00:02:01 v #1479 > > │     mpf_zeta_int_rust -->
00:02:01 v #1480 > > mpf_bernoulli_rust("mpf_bernoulli() - Rust")
00:02:01 v #1481 > > │     mpf_bernoulli_rust -->
00:02:01 v #1482 > > bernoulli_size_rust("bernoulli_size() - Rust")
00:02:01 v #1483 > > │     bernoulli_size_rust -->
00:02:01 v #1484 > > mpf_rdiv_int_rust("mpf_rdiv_int() - Rust")
00:02:01 v #1485 > > │     mpf_rdiv_int_rust --> bitcount_rust_3("bitcount() -
00:02:01 v #1486 > > Rust")
00:02:01 v #1487 > > │     bitcount_rust_3 --> normalize1_rust("_normalize1() -
00:02:01 v #1488 > > Rust")
00:02:01 v #1489 > > │     normalize1_rust --> from_man_exp_rust_3("from_man_exp()
00:02:01 v #1490 > > - Rust")
00:02:01 v #1491 > > │     from_man_exp_rust_3 --> normalize_rust_3("_normalize()
00:02:01 v #1492 > > - Rust")
00:02:01 v #1493 > > │     normalize_rust_3 --> mpf_sub_rust("mpf_sub() - Rust")
00:02:01 v #1494 > > │     mpf_sub_rust --> mpf_add_rust("mpf_add() - Rust")
00:02:01 v #1495 > > │     mpf_add_rust --> mpf_neg_rust("mpf_neg() - Rust")
00:02:01 v #1496 > > │     mpf_neg_rust --> normalize1_rust_2("_normalize1() -
00:02:01 v #1497 > > Rust")
00:02:01 v #1498 > > │     normalize1_rust_2 --> from_int_rust("from_int() -
00:02:01 v #1499 > > Rust")
00:02:01 v #1500 > > │     from_int_rust --> mpf_div_rust("mpf_div() - Rust")
00:02:01 v #1501 > > │     mpf_div_rust --> bitcount_rust_4("bitcount() - Rust")
00:02:01 v #1502 > > │     bitcount_rust_4 --> normalize1_rust_3("_normalize1() -
00:02:01 v #1503 > > Rust")
00:02:01 v #1504 > > │
00:02:01 v #1505 > > │     style zeta_rust fill:#f9f,stroke:#333,stroke-width:4px
00:02:01 v #1506 > > │     style num_traits fill:#bbf,stroke:#333,stroke-width:2px
00:02:01 v #1507 > > │     style num_bigint fill:#bbf,stroke:#333,stroke-width:2px
00:02:01 v #1508 > > │     style rust_decimal
00:02:01 v #1509 > > fill:#bbf,stroke:#333,stroke-width:2px
00:02:01 v #1510 > > │     style error_handling
00:02:01 v #1511 > > fill:#bbf,stroke:#333,stroke-width:2px
00:02:01 v #1512 > > │     style bigint_operations
00:02:01 v #1513 > > fill:#bfb,stroke:#333,stroke-width:2px
00:02:01 v #1514 > > │     style decimal_operations
00:02:01 v #1515 > > fill:#bfb,stroke:#333,stroke-width:2px
00:02:01 v #1516 > > │     style result_type
00:02:01 v #1517 > > fill:#bfb,stroke:#333,stroke-width:2px`);
00:02:01 v #1518 > > │                 renderTarget.innerHTML = svg;
00:02:01 v #1519 > > │                 bindFunctions?.(renderTarget);
00:02:01 v #1520 > > │             }
00:02:01 v #1521 > > │             catch (error) {
00:02:01 v #1522 > > │                 console.log(error);
00:02:01 v #1523 > > │             }
00:02:01 v #1524 > > │ </script>
00:02:01 v #1525 > > │ </div>
00:02:01 v #1526 > > │
00:02:01 v #1527 > >
00:02:01 v #1528 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:01 v #1529 > > │ ## tests
00:02:01 v #1530 > >
00:02:01 v #1531 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:01 v #1532 > > inl tests () =
00:02:01 v #1533 > >     testing.run_tests_log {
00:02:01 v #1534 > >         test_zeta_at_known_values_
00:02:01 v #1535 > >         test_zeta_at_2_minus2
00:02:01 v #1536 > >         test_trivial_zero_at_negative_even___
00:02:01 v #1537 > >         test_non_trivial_zero___
00:02:01 v #1538 > >         test_real_part_greater_than_one___
00:02:01 v #1539 > >         test_zeta_at_1___
00:02:01 v #1540 > >         test_symmetry_across_real_axis___
00:02:01 v #1541 > >         test_behavior_near_origin___
00:02:01 v #1542 > >         test_imaginary_axis
00:02:01 v #1543 > >         test_critical_strip
00:02:01 v #1544 > >         test_reflection_formula_for_specific_value
00:02:01 v #1545 > >         test_euler_product_formula
00:02:01 v #1546 > >     }
00:02:01 v #1547 > >
00:02:01 v #1548 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:01 v #1549 > > ///! _
00:02:01 v #1550 > >
00:02:01 v #1551 > > inl main (_args : array_base string) =
00:02:01 v #1552 > >     inl value = 1i32
00:02:01 v #1553 > >     console.write_line ($'$"value: {!value}"' : string)
00:02:01 v #1554 > >     0i32
00:02:01 v #1555 > >
00:02:01 v #1556 > > inl main () =
00:02:01 v #1557 > >     $'let tests () = !tests ()' : ()
00:02:01 v #1558 > >     $'let main args = !main args' : ()
00:02:01 v #1559 > 00:02:00 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 78550 }
00:02:01 v #1560 > 00:02:00 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/math/math.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/math/math.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:02:02 v #1561 > 00:02:01 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/math/math.dib.ipynb to html
00:02:02 v #1562 > 00:02:01 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:02:02 v #1563 > 00:02:01 v #7 !   validate(nb)
00:02:02 v #1564 > 00:02:01 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:02:02 v #1565 > 00:02:01 v #9 !   return _pygments_highlight(
00:02:03 v #1566 > 00:02:02 v #10 ! [NbConvertApp] Writing 7170941 bytes to /home/runner/work/polyglot/polyglot/lib/math/math.dib.html
00:02:03 v #1567 > 00:02:02 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 889 }
00:02:03 v #1568 > 00:02:02 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 889 }
00:02:03 v #1569 > 00:02:02 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/math/math.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/math/math.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:02:04 v #1570 > 00:02:03 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:02:04 v #1571 > 00:02:03 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:02:04 v #1572 > 00:02:03 d #16 spiral.run / dib / { exit_code = 0; result_length = 79498 }
00:02:04 d #1573 runtime.execute_with_options_async / { exit_code = 0; output_length = 85217 }
00:02:04 d #3 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path math.dib --retries 5
00:02:04 v #28 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 d #1 writeDibCode / output: Spi / path: math.dib
00:00:00 d #2 parseDibCode / output: Spi / file: math.dib
00:00:00 v #1 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"; options = { command = dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = Some <fun:compiler@87-4>; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:00:00 v #2 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #2 > 00:00:00 d #1 pwd: /home/runner/work/polyglot/polyglot
00:00:00 v #3 > 00:00:00 d #2 dllPath: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release
00:00:00 v #4 > 00:00:00 d #3 targetDir: /home/runner/work/polyglot/polyglot/target/spiral_Eval
00:00:00 v #3 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #4 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #5 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #6 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #7 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #8 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #9 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #10 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #11 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #12 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #13 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #14 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #15 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #16 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #17 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #18 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #19 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #20 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #21 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #22 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #23 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #5 > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:00 v #24 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #25 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #26 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:01 v #1 Supervisor.sendJson / port: 13805 / json: {"Ping":true} / result:
00:00:01 v #2 Supervisor.awaitCompiler / Ping / result: 'Some null' / port: 13805 / retry: 1
00:00:01 v #6 > Server bound to: http://localhost:13805
00:00:01 v #27 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:01 d #3 Supervisor.buildFile / takeWhileInclusive / path: math.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:01 d #4 Supervisor.buildFile / AsyncSeq.scan / path: math.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:01 d #5 Supervisor.buildFile / takeWhileInclusive / path: math.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:01 v #6 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # math\nopen testing\nopen rust.rust_operators\nopen rust\n\n/// ## comp...gs = !main args\u0027 : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/lib/math/math.spi"}} / result:
00:00:01 v #7 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/lib/math/math.spi"}} / result:
00:00:01 d #8 Supervisor.buildFile / AsyncSeq.scan / path: math.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:01 d #9 Supervisor.buildFile / takeWhileInclusive / path: math.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:02 d #10 Supervisor.buildFile / AsyncSeq.scan / path: math.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:02 d #11 Supervisor.buildFile / takeWhileInclusive / path: math.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:02 d #12 Supervisor.buildFile / AsyncSeq.scan / path: math.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:02 d #13 Supervisor.buildFile / takeWhileInclusive / path: math.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:03 d #14 Supervisor.buildFile / AsyncSeq.scan / path: math.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:03 d #15 Supervisor.buildFile / takeWhileInclusive / path: math.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:03 d #16 Supervisor.buildFile / AsyncSeq.scan / path: math.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:03 d #17 Supervisor.buildFile / takeWhileInclusive / path: math.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:04 d #18 Supervisor.buildFile / AsyncSeq.scan / path: math.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:04 d #19 Supervisor.buildFile / takeWhileInclusive / path: math.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:04 d #20 Supervisor.buildFile / AsyncSeq.scan / path: math.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("pyo3::Python")>]
#endif
type pyo3_Python = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("num_complex::Complex<$0>")>]
#endif
type num_complex_Complex<'T> = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("&$0")>]
type Ref<'T> = class end
#else
type Ref<'T> = 'T
#endif

#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>]
type std_string_String = class end
#else
type std_string_String = string
#endif

#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::ffi::CString")>]
#endif
type std_ffi_CString = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("pyo3::PyErr")>]
#endif
type pyo3_PyErr = class end
#...rop.emitRustExpr () v56 
    let v57 : string = "{ //"
    Fable.Core.RustInterop.emitRustExpr () v57 
    let v58 : string = "{ //"
    Fable.Core.RustInterop.emitRustExpr () v58 
    let v59 : string = "{ //"
    Fable.Core.RustInterop.emitRustExpr () v59 
    let v60 : string = "{ //"
    Fable.Core.RustInterop.emitRustExpr () v60 
    let v61 : string = "{ //"
    Fable.Core.RustInterop.emitRustExpr () v61 
    ()
and closure3 () (v0 : (string [])) : int32 =
    let v1 : string = $"value: {1}"
    let v2 : unit = ()
    let v3 : (unit -> unit) = closure2(v1)
    let v4 : unit = (fun () -> v3 (); v2) ()
    0
let v0 : (unit -> unit) = closure0()
let tests () = v0 ()
let v1 : ((string []) -> int32) = closure3()
let main args = v1 args
()

00:00:04 d #21 Supervisor.buildFile / takeWhileInclusive / path: math.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("pyo3::Python")>]
#endif
type pyo3_Python = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("num_complex::Complex<$0>")>]
#endif
type num_complex_Complex<'T> = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("&$0")>]
type Ref<'T> = class end
#else
type Ref<'T> = 'T
#endif

#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>]
type std_string_String = class end
#else
type std_string_String = string
#endif

#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::ffi::CString")>]
#endif
type std_ffi_CString = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("pyo3::PyErr")>]
#endif
type pyo3_PyErr = class end
#...rop.emitRustExpr () v56 
    let v57 : string = "{ //"
    Fable.Core.RustInterop.emitRustExpr () v57 
    let v58 : string = "{ //"
    Fable.Core.RustInterop.emitRustExpr () v58 
    let v59 : string = "{ //"
    Fable.Core.RustInterop.emitRustExpr () v59 
    let v60 : string = "{ //"
    Fable.Core.RustInterop.emitRustExpr () v60 
    let v61 : string = "{ //"
    Fable.Core.RustInterop.emitRustExpr () v61 
    ()
and closure3 () (v0 : (string [])) : int32 =
    let v1 : string = $"value: {1}"
    let v2 : unit = ()
    let v3 : (unit -> unit) = closure2(v1)
    let v4 : unit = (fun () -> v3 (); v2) ()
    0
let v0 : (unit -> unit) = closure0()
let tests () = v0 ()
let v1 : ((string []) -> int32) = closure3()
let main args = v1 args
()

00:00:04 d #22 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite
00:00:04 v #28 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 d #1 persistCodeProject / packages: [Fable.Core] / modules: [lib/spiral/common.fsx; lib/spiral/sm.fsx; lib/spiral/crypto.fsx; ... ] / name: math / hash:  / code.Length: 217410
00:00:00 d #2 buildProject / fullPath: /home/runner/work/polyglot/polyglot/target/Builder/math/math.fsproj
00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  "publish "/home/runner/work/polyglot/polyglot/target/Builder/math/math.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/lib/math/dist" --runtime linux-x64"; options = { command = dotnet publish "/home/runner/work/polyglot/polyglot/target/Builder/math/math.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/lib/math/dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot/target/Builder/math" } }
00:00:00 v #2 >   Determining projects to restore...
00:00:01 v #3 >   Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
00:00:01 v #4 >   The last full restore is still up to date. Nothing left to do.
00:00:01 v #5 >   Total time taken: 0 milliseconds
00:00:01 v #6 >   Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
00:00:01 v #7 >   Restoring /home/runner/work/polyglot/polyglot/target/Builder/math/math.fsproj
00:00:01 v #8 >   Starting restore process.
00:00:01 v #9 >   Total time taken: 0 milliseconds
00:00:02 v #10 >   Restored /home/runner/work/polyglot/polyglot/target/Builder/math/math.fsproj (in 297 ms).
00:00:11 v #11 >   math -> /home/runner/work/polyglot/polyglot/target/Builder/math/bin/Release/net9.0/linux-x64/math.dll
00:00:11 v #12 >   math -> /home/runner/work/polyglot/polyglot/lib/math/dist
00:00:11 d #13 runtime.execute_with_options_async / { exit_code = 0; output_length = 662 }
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/math
polyglot/lib/spiral/lib.ps1/GetTargetDir / targetDir: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/math
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../..
polyglot/lib/spiral/lib.ps1/BuildFable / TargetDir: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/math / ProjectName: math / Language: rs / Runtime:  / root: /home/runner/work/polyglot/polyglot/lib/spiral/../..
Fable 5.0.0-alpha.2: F# to Rust compiler (status: alpha)

Thanks to the contributor! @eugene-g
Stand with Ukraine! https://standwithukraine.com.ua/

Parsing target/Builder/math/math.fsproj...
Project and references (14 source files) parsed in 2382ms

Started Fable compilation...

Fable compilation finished in 8631ms

./lib/spiral/sm.fsx(556,0): (556,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/common.fsx(2117,0): (2117,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/async_.fsx(250,0): (250,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/threading.fsx(139,0): (139,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/crypto.fsx(2344,0): (2344,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/date_time.fsx(2527,0): (2527,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/platform.fsx(120,0): (120,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/networking.fsx(4935,0): (4935,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/trace.fsx(2150,0): (2150,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/runtime.fsx(7101,0): (7101,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/file_system.fsx(17438,0): (17438,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./target/Builder/math/math.fs(46,0): (48,3) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/fsharp/Common.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/math/target/rs/lib/fsharp/Common.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/fsharp/Common.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/common.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/math/target/rs/lib/spiral/common.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/common.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/date_time.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/math/target/rs/lib/spiral/date_time.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/date_time.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/async_.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/math/target/rs/lib/spiral/async_.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/async_.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/platform.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/math/target/rs/lib/spiral/platform.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/platform.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/runtime.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/math/target/rs/lib/spiral/runtime.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/runtime.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/threading.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/math/target/rs/lib/spiral/threading.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/threading.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/networking.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/math/target/rs/lib/spiral/networking.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/networking.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/file_system.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/math/target/rs/lib/spiral/file_system.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/file_system.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/sm.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/math/target/rs/lib/spiral/sm.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/sm.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/crypto.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/math/target/rs/lib/spiral/crypto.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/crypto.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/trace.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/math/target/rs/lib/spiral/trace.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/trace.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/lib.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/math/target/rs/lib/spiral/lib.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/lib.rs
polyglot/lib/math/build.ps1 / path: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/math/target/rs/math.rs
    Updating crates.io index
 Downloading crates ...
  Downloaded rawpointer v0.2.1
  Downloaded float-cmp v0.10.0
  Downloaded approx v0.5.1
  Downloaded pyo3-build-config v0.23.3
  Downloaded simba v0.9.0
  Downloaded bytemuck v1.20.0
  Downloaded wide v0.7.30
  Downloaded pyo3-macros-backend v0.23.3
  Downloaded pyo3-ffi v0.23.3
  Downloaded statrs v0.18.0
  Downloaded matrixmultiply v0.3.9
  Downloaded rand_distr v0.4.3
  Downloaded pyo3-macros v0.23.3
  Downloaded syn v2.0.90
  Downloaded libc v0.2.168
  Downloaded safe_arch v0.7.2
  Downloaded pyo3 v0.23.3
  Downloaded nalgebra v0.33.2
   Compiling autocfg v1.4.0
   Compiling libc v0.2.168
   Compiling target-lexicon v0.12.16
   Compiling proc-macro2 v1.0.92
   Compiling unicode-ident v1.0.14
   Compiling libm v0.2.11
   Compiling num-traits v0.2.19
   Compiling pyo3-build-config v0.23.3
   Compiling quote v1.0.37
   Compiling syn v2.0.90
   Compiling once_cell v1.20.2
   Compiling cfg-if v1.0.0
   Compiling typenum v1.17.0
   Compiling getrandom v0.2.15
   Compiling byteorder v1.5.0
   Compiling memchr v2.7.4
   Compiling slab v0.4.9
   Compiling rand_core v0.6.4
   Compiling futures-core v0.3.31
   Compiling futures-sink v0.3.31
   Compiling bytemuck v1.20.0
   Compiling paste v1.0.15
   Compiling safe_arch v0.7.2
   Compiling futures-channel v0.3.31
   Compiling hybrid-array v0.2.3
   Compiling pyo3-macros-backend v0.23.3
   Compiling pyo3-ffi v0.23.3
   Compiling matrixmultiply v0.3.9
   Compiling futures-task v0.3.31
   Compiling pin-utils v0.1.0
   Compiling futures-io v0.3.31
   Compiling pin-project-lite v0.2.15
   Compiling futures-util v0.3.31
   Compiling wide v0.7.30
   Compiling num-integer v0.1.46
   Compiling approx v0.5.1
   Compiling num-complex v0.4.6
   Compiling num_cpus v1.16.0
   Compiling memoffset v0.9.1
   Compiling heck v0.5.0
   Compiling rawpointer v0.2.1
   Compiling futures-executor v0.3.31
   Compiling zerocopy-derive v0.7.35
   Compiling simba v0.9.0
   Compiling num-rational v0.4.2
   Compiling zerocopy v0.7.35
   Compiling block-buffer v0.11.0-rc.3
   Compiling crypto-common v0.2.0-rc.1
   Compiling ppv-lite86 v0.2.20
   Compiling rand_chacha v0.3.1
   Compiling rand v0.8.5
   Compiling aho-corasick v1.1.3
   Compiling rand_distr v0.4.3
   Compiling pyo3 v0.23.3
   Compiling const-oid v0.10.0-rc.3
   Compiling regex-syntax v0.8.5
   Compiling iana-time-zone v0.1.61
   Compiling chrono v0.4.39
   Compiling regex-automata v0.4.9
   Compiling nalgebra v0.33.2
   Compiling pyo3-macros v0.23.3
   Compiling digest v0.11.0-pre.9
   Compiling futures v0.3.31
   Compiling uuid v1.11.0
   Compiling unindent v0.2.3
   Compiling cpufeatures v0.2.16
   Compiling startup v0.1.1 (/home/runner/work/polyglot/polyglot/lib/rust/fable/fable_modules/fable-library-rust/vendored/startup)
   Compiling indoc v2.0.5
   Compiling futures-timer v3.0.3
   Compiling regex v1.11.1
   Compiling fable_library_rust v0.1.0 (/home/runner/work/polyglot/polyglot/lib/rust/fable/fable_modules/fable-library-rust)
   Compiling sha2 v0.11.0-pre.4
   Compiling float-cmp v0.10.0
   Compiling inline_colorization v0.1.6
   Compiling statrs v0.18.0
   Compiling math v0.0.1 (/home/runner/work/polyglot/polyglot/lib/math)
    Finished `release` profile [optimized] target(s) in 27.95s
     Running unittests math.rs (/home/runner/work/polyglot/polyglot/workspace/target/release/deps/math-69deb02515f397d4)

running 12 tests
test module_b7a9935b::Math::test_behavior_near_origin___ ... ok
test module_b7a9935b::Math::test_euler_product_formula ... ok
test module_b7a9935b::Math::test_real_part_greater_than_one___ ... ok
test module_b7a9935b::Math::test_non_trivial_zero___ ... ok
test module_b7a9935b::Math::test_critical_strip ... ok
test module_b7a9935b::Math::test_symmetry_across_real_axis___ ... ok
test module_b7a9935b::Math::test_zeta_at_1___ ... ok
test module_b7a9935b::Math::test_zeta_at_2_minus2 ... ok
test module_b7a9935b::Math::test_zeta_at_known_values_ ... ok
test module_b7a9935b::Math::test_imaginary_axis ... ok
test module_b7a9935b::Math::test_reflection_formula_for_specific_value ... ok
test module_b7a9935b::Math::test_trivial_zero_at_negative_even___ ... ok

test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.21s

In [ ]:
{ pwsh ../apps/plot/build.ps1 } | Invoke-Block
 Downloading crates ...
  Downloaded plotters-backend v0.3.7
  Downloaded plotters-svg v0.3.7
  Downloaded serde v1.0.216
  Downloaded plotters v0.3.7
  Downloaded serde_json v1.0.133
   Compiling memchr v2.7.4
   Compiling libc v0.2.168
   Compiling typenum v1.17.0
   Compiling num-traits v0.2.19
   Compiling futures-sink v0.3.31
   Compiling futures-core v0.3.31
   Compiling futures-channel v0.3.31
   Compiling slab v0.4.9
   Compiling pin-utils v0.1.0
   Compiling cfg-if v1.0.0
   Compiling futures-task v0.3.31
   Compiling futures-io v0.3.31
   Compiling hybrid-array v0.2.3
   Compiling pin-project-lite v0.2.15
   Compiling num_cpus v1.16.0
   Compiling futures-util v0.3.31
   Compiling serde v1.0.216
   Compiling crypto-common v0.2.0-rc.1
   Compiling block-buffer v0.11.0-rc.3
   Compiling getrandom v0.2.15
   Compiling aho-corasick v1.1.3
   Compiling plotters-backend v0.3.7
   Compiling regex-syntax v0.8.5
   Compiling const-oid v0.10.0-rc.3
   Compiling serde_json v1.0.133
   Compiling iana-time-zone v0.1.61
   Compiling chrono v0.4.39
   Compiling futures-executor v0.3.31
   Compiling futures v0.3.31
   Compiling regex-automata v0.4.9
   Compiling digest v0.11.0-pre.9
   Compiling plotters-svg v0.3.7
   Compiling uuid v1.11.0
   Compiling itoa v1.0.14
   Compiling ryu v1.0.18
   Compiling cpufeatures v0.2.16
   Compiling startup v0.1.1 (/home/runner/work/polyglot/polyglot/lib/rust/fable/fable_modules/fable-library-rust/vendored/startup)
   Compiling futures-timer v3.0.3
   Compiling sha2 v0.11.0-pre.4
   Compiling fable_library_rust v0.1.0 (/home/runner/work/polyglot/polyglot/lib/rust/fable/fable_modules/fable-library-rust)
   Compiling plotters v0.3.7
   Compiling regex v1.11.1
   Compiling inline_colorization v0.1.6
   Compiling plot v0.0.1 (/home/runner/work/polyglot/polyglot/apps/plot)
warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./networking.rs:533:33
    |
533 |         let v3: string = append((v0_1.l0.get().clone()), (v1_1));
    |                                 ^                     ^
    |
    = note: `#[warn(unused_parens)]` on by default
help: remove these parentheses
    |
533 -         let v3: string = append((v0_1.l0.get().clone()), (v1_1));
533 +         let v3: string = append(v0_1.l0.get().clone(), (v1_1));
    |

warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./networking.rs:533:58
    |
533 |         let v3: string = append((v0_1.l0.get().clone()), (v1_1));
    |                                                          ^    ^
    |
help: remove these parentheses
    |
533 -         let v3: string = append((v0_1.l0.get().clone()), (v1_1));
533 +         let v3: string = append((v0_1.l0.get().clone()), v1_1);
    |

warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./runtime.rs:708:33
    |
708 |         let v3: string = append((v0_1.l0.get().clone()), (v1_1));
    |                                 ^                     ^
    |
help: remove these parentheses
    |
708 -         let v3: string = append((v0_1.l0.get().clone()), (v1_1));
708 +         let v3: string = append(v0_1.l0.get().clone(), (v1_1));
    |

warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./runtime.rs:708:58
    |
708 |         let v3: string = append((v0_1.l0.get().clone()), (v1_1));
    |                                                          ^    ^
    |
help: remove these parentheses
    |
708 -         let v3: string = append((v0_1.l0.get().clone()), (v1_1));
708 +         let v3: string = append((v0_1.l0.get().clone()), v1_1);
    |

warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./runtime.rs:1019:62
     |
1019 |             (Runtime::method30(v0_1, (v1_1) + 1_i32))(append((v2_1), string(" ")))
     |                                                              ^    ^
     |
help: remove these parentheses
     |
1019 -             (Runtime::method30(v0_1, (v1_1) + 1_i32))(append((v2_1), string(" ")))
1019 +             (Runtime::method30(v0_1, (v1_1) + 1_i32))(append(v2_1, string(" ")))
     |

warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./runtime.rs:1109:25
     |
1109 |                         ((Runtime::method30((v3) - 1_i32, 0_i32))(string(""))),
     |                         ^                                                    ^
     |
help: remove these parentheses
     |
1109 -                         ((Runtime::method30((v3) - 1_i32, 0_i32))(string(""))),
1109 +                         (Runtime::method30((v3) - 1_i32, 0_i32))(string("")),
     |

warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./runtime.rs:1197:25
     |
1197 |                         ((Runtime::method30((v3) - 1_i32, 0_i32))(string(""))),
     |                         ^                                                    ^
     |
help: remove these parentheses
     |
1197 -                         ((Runtime::method30((v3) - 1_i32, 0_i32))(string(""))),
1197 +                         (Runtime::method30((v3) - 1_i32, 0_i32))(string("")),
     |

warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./runtime.rs:1378:36
     |
1378 | ...                   append((v0_1.get().clone()), (ofChar(v121_0_0.clone())));
     |                              ^                  ^
     |
help: remove these parentheses
     |
1378 -                             append((v0_1.get().clone()), (ofChar(v121_0_0.clone())));
1378 +                             append(v0_1.get().clone(), (ofChar(v121_0_0.clone())));
     |

warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./runtime.rs:1378:58
     |
1378 | ...                   append((v0_1.get().clone()), (ofChar(v121_0_0.clone())));
     |                                                    ^                        ^
     |
help: remove these parentheses
     |
1378 -                             append((v0_1.get().clone()), (ofChar(v121_0_0.clone())));
1378 +                             append((v0_1.get().clone()), ofChar(v121_0_0.clone()));
     |

warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./runtime.rs:1586:36
     |
1586 | ...                   append((v0_1.get().clone()), (ofChar(v127_0_0.clone())));
     |                              ^                  ^
     |
help: remove these parentheses
     |
1586 -                             append((v0_1.get().clone()), (ofChar(v127_0_0.clone())));
1586 +                             append(v0_1.get().clone(), (ofChar(v127_0_0.clone())));
     |

warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./runtime.rs:1586:58
     |
1586 | ...                   append((v0_1.get().clone()), (ofChar(v127_0_0.clone())));
     |                                                    ^                        ^
     |
help: remove these parentheses
     |
1586 -                             append((v0_1.get().clone()), (ofChar(v127_0_0.clone())));
1586 +                             append((v0_1.get().clone()), ofChar(v127_0_0.clone()));
     |

warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./runtime.rs:1696:36
     |
1696 | ...                   append((v0_1.get().clone()), (ofChar(v79_0_0.clone())));
     |                              ^                  ^
     |
help: remove these parentheses
     |
1696 -                             append((v0_1.get().clone()), (ofChar(v79_0_0.clone())));
1696 +                             append(v0_1.get().clone(), (ofChar(v79_0_0.clone())));
     |

warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./runtime.rs:1696:58
     |
1696 | ...                   append((v0_1.get().clone()), (ofChar(v79_0_0.clone())));
     |                                                    ^                       ^
     |
help: remove these parentheses
     |
1696 -                             append((v0_1.get().clone()), (ofChar(v79_0_0.clone())));
1696 +                             append((v0_1.get().clone()), ofChar(v79_0_0.clone()));
     |

warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./runtime.rs:2154:37
     |
2154 | ...                   ((Runtime::method30((v419) - 1_i32, 0_i32))(string(""))),
     |                       ^                                                      ^
     |
help: remove these parentheses
     |
2154 -                                     ((Runtime::method30((v419) - 1_i32, 0_i32))(string(""))),
2154 +                                     (Runtime::method30((v419) - 1_i32, 0_i32))(string("")),
     |

warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./runtime.rs:3183:36
     |
3183 | ...                   append((v0_1.get().clone()), (ofChar(v121_0_0.clone())));
     |                              ^                  ^
     |
help: remove these parentheses
     |
3183 -                             append((v0_1.get().clone()), (ofChar(v121_0_0.clone())));
3183 +                             append(v0_1.get().clone(), (ofChar(v121_0_0.clone())));
     |

warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./runtime.rs:3183:58
     |
3183 | ...                   append((v0_1.get().clone()), (ofChar(v121_0_0.clone())));
     |                                                    ^                        ^
     |
help: remove these parentheses
     |
3183 -                             append((v0_1.get().clone()), (ofChar(v121_0_0.clone())));
3183 +                             append((v0_1.get().clone()), ofChar(v121_0_0.clone()));
     |

warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./runtime.rs:3329:25
     |
3329 |                         ((Runtime::method30((v3) - 1_i32, 0_i32))(string(""))),
     |                         ^                                                    ^
     |
help: remove these parentheses
     |
3329 -                         ((Runtime::method30((v3) - 1_i32, 0_i32))(string(""))),
3329 +                         (Runtime::method30((v3) - 1_i32, 0_i32))(string("")),
     |

warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./runtime.rs:3396:28
     |
3396 |                     append((ofChar('\\')), (ofChar(v210_0_0.clone()))),
     |                            ^            ^
     |
help: remove these parentheses
     |
3396 -                     append((ofChar('\\')), (ofChar(v210_0_0.clone()))),
3396 +                     append(ofChar('\\'), (ofChar(v210_0_0.clone()))),
     |

warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./runtime.rs:3396:44
     |
3396 |                     append((ofChar('\\')), (ofChar(v210_0_0.clone()))),
     |                                            ^                        ^
     |
help: remove these parentheses
     |
3396 -                     append((ofChar('\\')), (ofChar(v210_0_0.clone()))),
3396 +                     append((ofChar('\\')), ofChar(v210_0_0.clone())),
     |

warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./runtime.rs:3486:25
     |
3486 |                         ((Runtime::method30((v3) - 1_i32, 0_i32))(string(""))),
     |                         ^                                                    ^
     |
help: remove these parentheses
     |
3486 -                         ((Runtime::method30((v3) - 1_i32, 0_i32))(string(""))),
3486 +                         (Runtime::method30((v3) - 1_i32, 0_i32))(string("")),
     |

warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./runtime.rs:3553:28
     |
3553 |                     append((ofChar('`')), (ofChar(v210_0_0.clone()))),
     |                            ^           ^
     |
help: remove these parentheses
     |
3553 -                     append((ofChar('`')), (ofChar(v210_0_0.clone()))),
3553 +                     append(ofChar('`'), (ofChar(v210_0_0.clone()))),
     |

warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./runtime.rs:3553:43
     |
3553 |                     append((ofChar('`')), (ofChar(v210_0_0.clone()))),
     |                                           ^                        ^
     |
help: remove these parentheses
     |
3553 -                     append((ofChar('`')), (ofChar(v210_0_0.clone()))),
3553 +                     append((ofChar('`')), ofChar(v210_0_0.clone())),
     |

warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./runtime.rs:4101:96
     |
4101 | ...                   append(((Runtime::method30((v4.get().clone())
     |                              ^
...
4104 | ...                                              0_i32))(string(""))),
     |                                                                     ^
     |
help: remove these parentheses
     |
4101 ~                                                                                         append((Runtime::method30((v4.get().clone())
4102 |                                                                                                                        -
4103 |                                                                                                                        1_i32,
4104 ~                                                                                                                    0_i32))(string("")),
     |

warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./runtime.rs:4249:116
     |
4249 | ...                   append(((Runtime::method30((v307)
     |                              ^
...
4252 | ...                                              0_i32))(string(""))),
     |                                                                     ^
     |
help: remove these parentheses
     |
4249 ~                                                                                                             append((Runtime::method30((v307)
4250 |                                                                                                                                            -
4251 |                                                                                                                                            1_i32,
4252 ~                                                                                                                                        0_i32))(string("")),
     |

warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./trace.rs:480:33
    |
480 |         let v3: string = append((v0_1.l0.get().clone()), (v1_1));
    |                                 ^                     ^
    |
help: remove these parentheses
    |
480 -         let v3: string = append((v0_1.l0.get().clone()), (v1_1));
480 +         let v3: string = append(v0_1.l0.get().clone(), (v1_1));
    |

warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./trace.rs:480:58
    |
480 |         let v3: string = append((v0_1.l0.get().clone()), (v1_1));
    |                                                          ^    ^
    |
help: remove these parentheses
    |
480 -         let v3: string = append((v0_1.l0.get().clone()), (v1_1));
480 +         let v3: string = append((v0_1.l0.get().clone()), v1_1);
    |

warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./file_system.rs:701:33
    |
701 |         let v3: string = append((v0_1.l0.get().clone()), (v1_1));
    |                                 ^                     ^
    |
help: remove these parentheses
    |
701 -         let v3: string = append((v0_1.l0.get().clone()), (v1_1));
701 +         let v3: string = append(v0_1.l0.get().clone(), (v1_1));
    |

warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./file_system.rs:701:58
    |
701 |         let v3: string = append((v0_1.l0.get().clone()), (v1_1));
    |                                                          ^    ^
    |
help: remove these parentheses
    |
701 -         let v3: string = append((v0_1.l0.get().clone()), (v1_1));
701 +         let v3: string = append((v0_1.l0.get().clone()), v1_1);
    |

warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./file_system.rs:2388:81
     |
2388 |             (File_system::method105(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3), (v1_1)))
     |                                                                                 ^  ^
     |
help: remove these parentheses
     |
2388 -             (File_system::method105(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3), (v1_1)))
2388 +             (File_system::method105(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append(v3, (v1_1)))
     |

warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./file_system.rs:2388:87
     |
2388 |             (File_system::method105(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3), (v1_1)))
     |                                                                                       ^    ^
     |
help: remove these parentheses
     |
2388 -             (File_system::method105(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3), (v1_1)))
2388 +             (File_system::method105(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3), v1_1))
     |

warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./file_system.rs:2402:13
     |
2402 |             ((File_system::method105(32_i32 - (length(v0_1.clone())), v2_1, 0_i32))(string(""))),
     |             ^                                                                                  ^
     |
help: remove these parentheses
     |
2402 -             ((File_system::method105(32_i32 - (length(v0_1.clone())), v2_1, 0_i32))(string(""))),
2402 +             (File_system::method105(32_i32 - (length(v0_1.clone())), v2_1, 0_i32))(string("")),
     |

warning: unnecessary parentheses around function argument
    --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./file_system.rs:2403:13
     |
2403 |             (v0_1),
     |             ^    ^
     |
help: remove these parentheses
     |
2403 -             (v0_1),
2403 +             v0_1,
     |

warning: unnecessary parentheses around function argument
  --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./sm.rs:94:70
   |
94 |             (Sm::method0(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3_1), (v1_1)))
   |                                                                      ^    ^
   |
help: remove these parentheses
   |
94 -             (Sm::method0(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3_1), (v1_1)))
94 +             (Sm::method0(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append(v3_1, (v1_1)))
   |

warning: unnecessary parentheses around function argument
  --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./sm.rs:94:78
   |
94 |             (Sm::method0(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3_1), (v1_1)))
   |                                                                              ^    ^
   |
help: remove these parentheses
   |
94 -             (Sm::method0(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3_1), (v1_1)))
94 +             (Sm::method0(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3_1), v1_1))
   |

warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./sm.rs:108:13
    |
108 |             ((Sm::method0((v0_1) - (length(v2_1.clone())), v4_1, 0_i32))(string(""))),
    |             ^                                                                       ^
    |
help: remove these parentheses
    |
108 -             ((Sm::method0((v0_1) - (length(v2_1.clone())), v4_1, 0_i32))(string(""))),
108 +             (Sm::method0((v0_1) - (length(v2_1.clone())), v4_1, 0_i32))(string("")),
    |

warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./sm.rs:109:13
    |
109 |             (v2_1),
    |             ^    ^
    |
help: remove these parentheses
    |
109 -             (v2_1),
109 +             v2_1,
    |

warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./sm.rs:128:13
    |
128 |             (v2_1.clone()),
    |             ^            ^
    |
help: remove these parentheses
    |
128 -             (v2_1.clone()),
128 +             v2_1.clone(),
    |

warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./sm.rs:129:13
    |
129 |             ((Sm::method0((v0_1) - (length(v2_1)), v4_1, 0_i32))(string(""))),
    |             ^                                                               ^
    |
help: remove these parentheses
    |
129 -             ((Sm::method0((v0_1) - (length(v2_1)), v4_1, 0_i32))(string(""))),
129 +             (Sm::method0((v0_1) - (length(v2_1)), v4_1, 0_i32))(string("")),
    |

warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./sm.rs:342:17
    |
342 |                 (getSlice(v1_1, Some(0_i32), Some((v0_1) - 1_i32))),
    |                 ^                                                 ^
    |
help: remove these parentheses
    |
342 -                 (getSlice(v1_1, Some(0_i32), Some((v0_1) - 1_i32))),
342 +                 getSlice(v1_1, Some(0_i32), Some((v0_1) - 1_i32)),
    |

warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./sm.rs:407:17
    |
407 |                 (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))),
    |                 ^                                                                    ^
    |
help: remove these parentheses
    |
407 -                 (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))),
407 +                 append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue)),
    |

warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./sm.rs:407:25
    |
407 |                 (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))),
    |                         ^                                            ^
    |
help: remove these parentheses
    |
407 -                 (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))),
407 +                 (append(append((v1_1[v9_1].clone()), (matchValue_1)), (matchValue))),
    |

warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./sm.rs:407:73
    |
407 |                 (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))),
    |                                                                         ^          ^
    |
help: remove these parentheses
    |
407 -                 (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))),
407 +                 (append((append((v1_1[v9_1].clone()), (matchValue_1))), matchValue)),
    |

warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./sm.rs:407:33
    |
407 |                 (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))),
    |                                 ^                  ^
    |
help: remove these parentheses
    |
407 -                 (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))),
407 +                 (append((append(v1_1[v9_1].clone(), (matchValue_1))), (matchValue))),
    |

warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./sm.rs:407:55
    |
407 |                 (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))),
    |                                                       ^            ^
    |
help: remove these parentheses
    |
407 -                 (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))),
407 +                 (append((append((v1_1[v9_1].clone()), matchValue_1)), (matchValue))),
    |

warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./crypto.rs:626:33
    |
626 |         let v3: string = append((v0_1.l0.get().clone()), (v1_1));
    |                                 ^                     ^
    |
help: remove these parentheses
    |
626 -         let v3: string = append((v0_1.l0.get().clone()), (v1_1));
626 +         let v3: string = append(v0_1.l0.get().clone(), (v1_1));
    |

warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./crypto.rs:626:58
    |
626 |         let v3: string = append((v0_1.l0.get().clone()), (v1_1));
    |                                                          ^    ^
    |
help: remove these parentheses
    |
626 -         let v3: string = append((v0_1.l0.get().clone()), (v1_1));
626 +         let v3: string = append((v0_1.l0.get().clone()), v1_1);
    |

warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./common.rs:558:33
    |
558 |         let v3: string = append((v0_1.l0.get().clone()), (v1_1));
    |                                 ^                     ^
    |
help: remove these parentheses
    |
558 -         let v3: string = append((v0_1.l0.get().clone()), (v1_1));
558 +         let v3: string = append(v0_1.l0.get().clone(), (v1_1));
    |

warning: unnecessary parentheses around function argument
   --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./common.rs:558:58
    |
558 |         let v3: string = append((v0_1.l0.get().clone()), (v1_1));
    |                                                          ^    ^
    |
help: remove these parentheses
    |
558 -         let v3: string = append((v0_1.l0.get().clone()), (v1_1));
558 +         let v3: string = append((v0_1.l0.get().clone()), v1_1);
    |

warning: `plot` (lib) generated 48 warnings (run `cargo fix --lib -p plot` to apply 48 suggestions)
    Finished `release` profile [optimized] target(s) in 17.30s
In [ ]:
{ pwsh ../apps/perf/build.ps1 } | Invoke-Block
00:00:00 v #1 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"; options = { command = dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = Some <fun:compiler@87-4>; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:00:00 v #2 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #2 > 00:00:00 d #1 pwd: /home/runner/work/polyglot/polyglot
00:00:00 v #3 > 00:00:00 d #2 dllPath: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release
00:00:00 v #4 > 00:00:00 d #3 targetDir: /home/runner/work/polyglot/polyglot/target/spiral_Eval
00:00:00 v #3 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #4 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #5 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #6 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #7 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #8 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #9 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #10 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #11 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #12 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #13 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #14 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #15 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #16 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #17 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #18 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #19 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #20 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #21 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #22 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #23 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #24 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #25 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #26 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #5 > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:00 v #27 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #28 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #29 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:01 v #1 Supervisor.sendJson / port: 13805 / json: {"Ping":true} / result:
00:00:01 v #2 Supervisor.awaitCompiler / Ping / result: 'Some null' / port: 13805 / retry: 1
00:00:01 v #6 > Server bound to: http://localhost:13805
00:00:01 d #7 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path Perf.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path Perf.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:01 v #8 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "Perf.dib", "--retries", "3"])) }
00:00:01 v #9 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/apps/perf/Perf.dib", "--output-path", "/home/runner/work/polyglot/polyglot/apps/perf/Perf.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/perf/Perf.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/perf/Perf.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:00:02 v #10 > >
00:00:02 v #11 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:02 v #12 > > │ # Perf (Polyglot)
00:00:14 v #13 > >
00:00:14 v #14 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:14 v #15 > > //// test
00:00:14 v #16 > >
00:00:14 v #17 > > open testing
00:00:14 v #18 > > open benchmark
00:00:18 v #19 > >
00:00:18 v #20 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:18 v #21 > > #if !INTERACTIVE
00:00:18 v #22 > > open Lib
00:00:18 v #23 > > #endif
00:00:18 v #24 > >
00:00:18 v #25 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:18 v #26 > > │ ## TestCaseResult
00:00:18 v #27 > >
00:00:18 v #28 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:18 v #29 > > type TestCaseResult =
00:00:18 v #30 > >     {
00:00:18 v #31 > >         Input: string
00:00:18 v #32 > >         Expected: string
00:00:18 v #33 > >         Result: string
00:00:18 v #34 > >         TimeList: int64 list
00:00:18 v #35 > >     }
00:00:18 v #36 > >
00:00:18 v #37 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:18 v #38 > > │ ## run
00:00:18 v #39 > >
00:00:18 v #40 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:18 v #41 > > let run count (solutions: (string * ('TInput -> 'TExpected)) list) (input,
00:00:18 v #42 > > expected) =
00:00:18 v #43 > >     let inputStr =
00:00:18 v #44 > >         match box input with
00:00:18 v #45 > >         | :? System.Collections.ICollection as input ->
00:00:18 v #46 > >             System.Linq.Enumerable.Cast<obj> input
00:00:18 v #47 > >             |> Seq.map string
00:00:18 v #48 > >             |> SpiralSm.concat ","
00:00:18 v #49 > >         | _ -> input.ToString ()
00:00:18 v #50 > >
00:00:18 v #51 > >     printfn ""
00:00:18 v #52 > >     printfn $"Solution: {inputStr}  "
00:00:18 v #53 > >
00:00:18 v #54 > >     let performanceInvoke (fn: unit -> 'T) =
00:00:18 v #55 > >         GC.Collect ()
00:00:18 v #56 > >         let stopwatch = System.Diagnostics.Stopwatch ()
00:00:18 v #57 > >         stopwatch.Start ()
00:00:18 v #58 > >         let time1 = stopwatch.ElapsedMilliseconds
00:00:18 v #59 > >
00:00:18 v #60 > >         let result =
00:00:18 v #61 > >             [[| 0 .. count |]]
00:00:18 v #62 > >             |> Array.Parallel.map (fun _ ->
00:00:18 v #63 > >                 fn ()
00:00:18 v #64 > >             )
00:00:18 v #65 > >             |> Array.last
00:00:18 v #66 > >
00:00:18 v #67 > >         let time2 = stopwatch.ElapsedMilliseconds - time1
00:00:18 v #68 > >
00:00:18 v #69 > >         result, time2
00:00:18 v #70 > >
00:00:18 v #71 > >     let resultsWithTime =
00:00:18 v #72 > >         solutions
00:00:18 v #73 > >         |> List.mapi (fun i (testName, solution) ->
00:00:18 v #74 > >             let result, time = performanceInvoke (fun () -> solution input)
00:00:18 v #75 > >             printfn $"Test case %d{i + 1}. %s{testName}. Time: %A{time}  "
00:00:18 v #76 > >             result, time
00:00:18 v #77 > >         )
00:00:18 v #78 > >
00:00:18 v #79 > >
00:00:18 v #80 > >     match resultsWithTime |> List.map fst with
00:00:18 v #81 > >     | ([[]] | [[ _ ]]) -> ()
00:00:18 v #82 > >     | (head :: tail) when tail |> List.forall ((=) head) -> ()
00:00:18 v #83 > >     | results -> failwithf $"Challenge error: %A{results}"
00:00:18 v #84 > >
00:00:18 v #85 > >     {
00:00:18 v #86 > >         Input = inputStr
00:00:18 v #87 > >         Expected = expected.ToString ()
00:00:18 v #88 > >         Result = resultsWithTime |> Seq.map fst |> Seq.head |> _.ToString()
00:00:18 v #89 > >         TimeList = resultsWithTime |> List.map snd
00:00:18 v #90 > >     }
00:00:18 v #91 > >
00:00:18 v #92 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:18 v #93 > > │ ## runAll
00:00:18 v #94 > >
00:00:18 v #95 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:18 v #96 > > let runAll testName count (solutions: (string * ('TInput -> 'TExpected)) list)
00:00:18 v #97 > > testCases =
00:00:18 v #98 > >     printfn ""
00:00:18 v #99 > >     printfn ""
00:00:18 v #100 > >     printfn $"Test: {testName}"
00:00:18 v #101 > >     testCases
00:00:18 v #102 > >     |> Seq.map (run count solutions)
00:00:18 v #103 > >     |> Seq.toList
00:00:18 v #104 > >
00:00:18 v #105 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:18 v #106 > > │ ## sortResultList
00:00:18 v #107 > >
00:00:18 v #108 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:18 v #109 > > let sortResultList resultList =
00:00:18 v #110 > >     let table =
00:00:18 v #111 > >         let rows =
00:00:18 v #112 > >             resultList
00:00:18 v #113 > >             |> List.map (fun result ->
00:00:18 v #114 > >                 let best =
00:00:18 v #115 > >                     result.TimeList
00:00:18 v #116 > >                     |> List.mapi (fun i time ->
00:00:18 v #117 > >                         i + 1, time
00:00:18 v #118 > >                     )
00:00:18 v #119 > >                     |> List.sortBy snd
00:00:18 v #120 > >                     |> List.head
00:00:18 v #121 > >                     |> _.ToString()
00:00:18 v #122 > >                 let row =
00:00:18 v #123 > >                     [[
00:00:18 v #124 > >                         result.Input
00:00:18 v #125 > >                         result.Expected
00:00:18 v #126 > >                         result.Result
00:00:18 v #127 > >                         best
00:00:18 v #128 > >                     ]]
00:00:18 v #129 > >                 let color =
00:00:18 v #130 > >                     match result.Expected = result.Result with
00:00:18 v #131 > >                     | true -> Some ConsoleColor.DarkGreen
00:00:18 v #132 > >                     | false -> Some ConsoleColor.DarkRed
00:00:18 v #133 > >                 row, color
00:00:18 v #134 > >             )
00:00:18 v #135 > >         let header =
00:00:18 v #136 > >             [[
00:00:18 v #137 > >                 [[
00:00:18 v #138 > >                     "Input"
00:00:18 v #139 > >                     "Expected"
00:00:18 v #140 > >                     "Result"
00:00:18 v #141 > >                     "Best"
00:00:18 v #142 > >                 ]]
00:00:18 v #143 > >                 [[
00:00:18 v #144 > >                     "---"
00:00:18 v #145 > >                     "---"
00:00:18 v #146 > >                     "---"
00:00:18 v #147 > >                     "---"
00:00:18 v #148 > >                 ]]
00:00:18 v #149 > >             ]]
00:00:18 v #150 > >             |> List.map (fun row -> row, None)
00:00:18 v #151 > >         header @ rows
00:00:18 v #152 > >
00:00:18 v #153 > >     let formattedTable =
00:00:18 v #154 > >         let lengthMap =
00:00:18 v #155 > >             table
00:00:18 v #156 > >             |> List.map fst
00:00:18 v #157 > >             |> List.transpose
00:00:18 v #158 > >             |> List.map (fun column ->
00:00:18 v #159 > >                 column
00:00:18 v #160 > >                 |> List.map String.length
00:00:18 v #161 > >                 |> List.sortDescending
00:00:18 v #162 > >                 |> List.tryHead
00:00:18 v #163 > >                 |> Option.defaultValue 0
00:00:18 v #164 > >             )
00:00:18 v #165 > >             |> List.indexed
00:00:18 v #166 > >             |> Map.ofList
00:00:18 v #167 > >         table
00:00:18 v #168 > >         |> List.map (fun (row, color) ->
00:00:18 v #169 > >             let newRow =
00:00:18 v #170 > >                 row
00:00:18 v #171 > >                 |> List.mapi (fun i cell ->
00:00:18 v #172 > >                     cell.PadRight lengthMap.[[i]]
00:00:18 v #173 > >                 )
00:00:18 v #174 > >             newRow, color
00:00:18 v #175 > >         )
00:00:18 v #176 > >
00:00:18 v #177 > >     printfn ""
00:00:18 v #178 > >     formattedTable
00:00:18 v #179 > >     |> List.iter (fun (row, color) ->
00:00:18 v #180 > >         match color with
00:00:18 v #181 > >         | Some color -> Console.ForegroundColor <- color
00:00:18 v #182 > >         | None -> Console.ResetColor ()
00:00:18 v #183 > >
00:00:18 v #184 > >         printfn "%s" (String.Join ("\t| ", row))
00:00:18 v #185 > >
00:00:18 v #186 > >         Console.ResetColor ()
00:00:18 v #187 > >     )
00:00:18 v #188 > >
00:00:18 v #189 > >     let averages =
00:00:18 v #190 > >         resultList
00:00:18 v #191 > >         |> List.map (fun result -> result.TimeList |> List.map float)
00:00:18 v #192 > >         |> List.transpose
00:00:18 v #193 > >         |> List.map List.average
00:00:18 v #194 > >         |> List.map int64
00:00:18 v #195 > >         |> List.indexed
00:00:18 v #196 > >
00:00:18 v #197 > >     printfn ""
00:00:18 v #198 > >     printfn "Average Ranking  "
00:00:18 v #199 > >     averages
00:00:18 v #200 > >     |> List.sortBy snd
00:00:18 v #201 > >     |> List.iter (fun (i, avg) ->
00:00:18 v #202 > >         printfn $"Test case %d{i + 1}. Average Time: %A{avg}  "
00:00:18 v #203 > >     )
00:00:18 v #204 > >
00:00:18 v #205 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:18 v #206 > > let mutable _count =
00:00:18 v #207 > >     if ("CI" |> System.Environment.GetEnvironmentVariable |> fun x -> $"%A{x}")
00:00:18 v #208 > > <> "<null>"
00:00:18 v #209 > >     then 2000000
00:00:18 v #210 > >     else 2000
00:00:18 v #211 > >
00:00:18 v #212 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:18 v #213 > > inl is_fast () =
00:00:18 v #214 > >     false
00:00:18 v #215 > >
00:00:18 v #216 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:18 v #217 > > │ ## empty3Tests
00:00:18 v #218 > >
00:00:18 v #219 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:18 v #220 > > │ Test: Empty3
00:00:18 v #221 > > │
00:00:18 v #222 > > │ Solution: (a, a)
00:00:18 v #223 > > │ Test case 1. A. Time: 91L
00:00:18 v #224 > > │
00:00:18 v #225 > > │ Solution: (a, a)
00:00:18 v #226 > > │ Test case 1. A. Time: 56L
00:00:18 v #227 > > │
00:00:18 v #228 > > │ Input  | Expected      | Result | Best
00:00:18 v #229 > > │ ---    | ---           | ---    | ---
00:00:18 v #230 > > │ (a, a) | a             | a      | (1, 91)
00:00:18 v #231 > > │ (a, a) | a             | a      | (1, 56)
00:00:18 v #232 > > │
00:00:18 v #233 > > │ Averages
00:00:18 v #234 > > │ Test case 1. Average Time: 73L
00:00:18 v #235 > > │
00:00:18 v #236 > > │ Ranking
00:00:18 v #237 > > │ Test case 1. Average Time: 73L
00:00:18 v #238 > >
00:00:18 v #239 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:18 v #240 > > //// test
00:00:18 v #241 > >
00:00:18 v #242 > > let solutions = [[
00:00:18 v #243 > >     "A",
00:00:18 v #244 > >     fun (a, _b) ->
00:00:18 v #245 > >         a
00:00:18 v #246 > > ]]
00:00:18 v #247 > > let testCases = seq {
00:00:18 v #248 > >     ("a", "a"), "a"
00:00:18 v #249 > >     ("a", "a"), "a"
00:00:18 v #250 > > }
00:00:18 v #251 > > let rec empty3Tests = runAll (nameof empty3Tests) _count solutions testCases
00:00:18 v #252 > > empty3Tests
00:00:18 v #253 > > |> sortResultList
00:00:19 v #254 > >
00:00:19 v #255 > > ── [ 386.18ms - stdout ] ───────────────────────────────────────────────────────
00:00:19 v #256 > > │
00:00:19 v #257 > > │
00:00:19 v #258 > > │ Test: empty3Tests
00:00:19 v #259 > > │
00:00:19 v #260 > > │ Solution: (a, a)
00:00:19 v #261 > > │ Test case 1. A. Time: 32L
00:00:19 v #262 > > │
00:00:19 v #263 > > │ Solution: (a, a)
00:00:19 v #264 > > │ Test case 1. A. Time: 23L
00:00:19 v #265 > > │
00:00:19 v #266 > > │ Input 	| Expected	| Result	| Best
00:00:19 v #267 > > │ ---   	| ---     	| ---   	| ---
00:00:19 v #268 > > │ (a, a)	| a       	| a     	| (1, 32)
00:00:19 v #269 > > │ (a, a)	| a       	| a     	| (1, 23)
00:00:19 v #270 > > │
00:00:19 v #271 > > │ Average Ranking
00:00:19 v #272 > > │ Test case 1. Average Time: 27L
00:00:19 v #273 > > │
00:00:19 v #274 > >
00:00:19 v #275 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:19 v #276 > > │ ## empty2Tests
00:00:19 v #277 > >
00:00:19 v #278 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:19 v #279 > > │ Test: Empty2
00:00:19 v #280 > > │
00:00:19 v #281 > > │ Solution: (a, a)
00:00:19 v #282 > > │ Test case 1. A. Time: 59L
00:00:19 v #283 > > │
00:00:19 v #284 > > │ Solution: (a, a)
00:00:19 v #285 > > │ Test case 1. A. Time: 53L
00:00:19 v #286 > > │
00:00:19 v #287 > > │ Input   | Expected        | Result  | Best
00:00:19 v #288 > > │ ---     | ---             | ---     | ---
00:00:19 v #289 > > │ (a, a)  | a               | a       | (1, 59)
00:00:19 v #290 > > │ (a, a)  | a               | a       | (1, 53)
00:00:19 v #291 > > │
00:00:19 v #292 > > │ Averages
00:00:19 v #293 > > │ Test case 1. Average Time: 56L
00:00:19 v #294 > > │
00:00:19 v #295 > > │ Ranking
00:00:19 v #296 > > │ Test case 1. Average Time: 56L
00:00:19 v #297 > >
00:00:19 v #298 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:19 v #299 > > //// test
00:00:19 v #300 > >
00:00:19 v #301 > > let solutions = [[
00:00:19 v #302 > >     "A",
00:00:19 v #303 > >     fun (a, _b) ->
00:00:19 v #304 > >         a
00:00:19 v #305 > > ]]
00:00:19 v #306 > > let testCases = seq {
00:00:19 v #307 > >     ("a", "a"), "a"
00:00:19 v #308 > >     ("a", "a"), "a"
00:00:19 v #309 > > }
00:00:19 v #310 > > let rec empty2Tests = runAll (nameof empty2Tests) _count solutions testCases
00:00:19 v #311 > > empty2Tests
00:00:19 v #312 > > |> sortResultList
00:00:19 v #313 > >
00:00:19 v #314 > > ── [ 373.16ms - stdout ] ───────────────────────────────────────────────────────
00:00:19 v #315 > > │
00:00:19 v #316 > > │
00:00:19 v #317 > > │ Test: empty2Tests
00:00:19 v #318 > > │
00:00:19 v #319 > > │ Solution: (a, a)
00:00:19 v #320 > > │ Test case 1. A. Time: 24L
00:00:19 v #321 > > │
00:00:19 v #322 > > │ Solution: (a, a)
00:00:19 v #323 > > │ Test case 1. A. Time: 33L
00:00:19 v #324 > > │
00:00:19 v #325 > > │ Input 	| Expected	| Result	| Best
00:00:19 v #326 > > │ ---   	| ---     	| ---   	| ---
00:00:19 v #327 > > │ (a, a)	| a       	| a     	| (1, 24)
00:00:19 v #328 > > │ (a, a)	| a       	| a     	| (1, 33)
00:00:19 v #329 > > │
00:00:19 v #330 > > │ Average Ranking
00:00:19 v #331 > > │ Test case 1. Average Time: 28L
00:00:19 v #332 > > │
00:00:19 v #333 > >
00:00:19 v #334 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:19 v #335 > > │ ## emptyTests
00:00:19 v #336 > >
00:00:19 v #337 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:19 v #338 > > │ Test: Empty
00:00:19 v #339 > > │
00:00:19 v #340 > > │ Solution: 0
00:00:19 v #341 > > │ Test case 1. A. Time: 61L
00:00:19 v #342 > > │
00:00:19 v #343 > > │ Solution: 2
00:00:19 v #344 > > │ Test case 1. A. Time: 62L
00:00:19 v #345 > > │
00:00:19 v #346 > > │ Solution: 5
00:00:19 v #347 > > │ Test case 1. A. Time: 70L
00:00:19 v #348 > > │
00:00:19 v #349 > > │ Input   | Expected        | Result  | Best
00:00:19 v #350 > > │ ---     | ---             | ---     | ---
00:00:19 v #351 > > │ 0       | 0               | 0       | (1, 61)
00:00:19 v #352 > > │ 2       | 2               | 2       | (1, 62)
00:00:19 v #353 > > │ 5       | 5               | 5       | (1, 70)
00:00:19 v #354 > > │
00:00:19 v #355 > > │ Averages
00:00:19 v #356 > > │ Test case 1. Average Time: 64L
00:00:19 v #357 > > │
00:00:19 v #358 > > │ Ranking
00:00:19 v #359 > > │ Test case 1. Average Time: 64L
00:00:19 v #360 > >
00:00:19 v #361 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:19 v #362 > > //// test
00:00:19 v #363 > >
00:00:19 v #364 > > let solutions = [[
00:00:19 v #365 > >     "A",
00:00:19 v #366 > >     fun n ->
00:00:19 v #367 > >         n + 0
00:00:19 v #368 > > ]]
00:00:19 v #369 > > let testCases = seq {
00:00:19 v #370 > >     0, 0
00:00:19 v #371 > >     2, 2
00:00:19 v #372 > >     5, 5
00:00:19 v #373 > > }
00:00:19 v #374 > > let rec emptyTests = runAll (nameof emptyTests) _count solutions testCases
00:00:19 v #375 > > emptyTests
00:00:19 v #376 > > |> sortResultList
00:00:20 v #377 > >
00:00:20 v #378 > > ── [ 523.38ms - stdout ] ───────────────────────────────────────────────────────
00:00:20 v #379 > > │
00:00:20 v #380 > > │
00:00:20 v #381 > > │ Test: emptyTests
00:00:20 v #382 > > │
00:00:20 v #383 > > │ Solution: 0
00:00:20 v #384 > > │ Test case 1. A. Time: 19L
00:00:20 v #385 > > │
00:00:20 v #386 > > │ Solution: 2
00:00:20 v #387 > > │ Test case 1. A. Time: 22L
00:00:20 v #388 > > │
00:00:20 v #389 > > │ Solution: 5
00:00:20 v #390 > > │ Test case 1. A. Time: 21L
00:00:20 v #391 > > │
00:00:20 v #392 > > │ Input	| Expected	| Result	| Best
00:00:20 v #393 > > │ ---  	| ---     	| ---   	| ---
00:00:20 v #394 > > │ 0    	| 0       	| 0     	| (1, 19)
00:00:20 v #395 > > │ 2    	| 2       	| 2     	| (1, 22)
00:00:20 v #396 > > │ 5    	| 5       	| 5     	| (1, 21)
00:00:20 v #397 > > │
00:00:20 v #398 > > │ Average Ranking
00:00:20 v #399 > > │ Test case 1. Average Time: 20L
00:00:20 v #400 > > │
00:00:20 v #401 > >
00:00:20 v #402 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:20 v #403 > > │ ## uniqueLettersTests
00:00:20 v #404 > >
00:00:20 v #405 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:20 v #406 > > │ Test: UniqueLetters
00:00:20 v #407 > > │
00:00:20 v #408 > > │ Solution: abc
00:00:20 v #409 > > │ Test case 1. A. Time: 1512L
00:00:20 v #410 > > │ Test case 2. B. Time: 1947L
00:00:20 v #411 > > │ Test case 3. C. Time: 2023L
00:00:20 v #412 > > │ Test case 4. D. Time: 1358L
00:00:20 v #413 > > │ Test case 5. E. Time: 1321L
00:00:20 v #414 > > │ Test case 6. F. Time: 1346L
00:00:20 v #415 > > │ Test case 7. G. Time: 1304L
00:00:20 v #416 > > │ Test case 8. H. Time: 1383L
00:00:20 v #417 > > │ Test case 9. I. Time: 1495L
00:00:20 v #418 > > │ Test case 10. J. Time: 1245L
00:00:20 v #419 > > │ Test case 11. K. Time: 1219L
00:00:20 v #420 > > │
00:00:20 v #421 > > │ Solution: accabb
00:00:20 v #422 > > │ Test case 1. A. Time: 1648L
00:00:20 v #423 > > │ Test case 2. B. Time: 2061L
00:00:20 v #424 > > │ Test case 3. C. Time: 2413L
00:00:20 v #425 > > │ Test case 4. D. Time: 1561L
00:00:20 v #426 > > │ Test case 5. E. Time: 1593L
00:00:20 v #427 > > │ Test case 6. F. Time: 1518L
00:00:20 v #428 > > │ Test case 7. G. Time: 1415L
00:00:20 v #429 > > │ Test case 8. H. Time: 1510L
00:00:20 v #430 > > │ Test case 9. I. Time: 1445L
00:00:20 v #431 > > │ Test case 10. J. Time: 1636L
00:00:20 v #432 > > │ Test case 11. K. Time: 1317L
00:00:20 v #433 > > │
00:00:20 v #434 > > │ Solution: pprrqqpp
00:00:20 v #435 > > │ Test case 1. A. Time: 2255L
00:00:20 v #436 > > │ Test case 2. B. Time: 2408L
00:00:20 v #437 > > │ Test case 3. C. Time: 2393L
00:00:20 v #438 > > │ Test case 4. D. Time: 1675L
00:00:20 v #439 > > │ Test case 5. E. Time: 1911L
00:00:20 v #440 > > │ Test case 6. F. Time: 2126L
00:00:20 v #441 > > │ Test case 7. G. Time: 1504L
00:00:20 v #442 > > │ Test case 8. H. Time: 1715L
00:00:20 v #443 > > │ Test case 9. I. Time: 1537L
00:00:20 v #444 > > │ Test case 10. J. Time: 1522L
00:00:20 v #445 > > │ Test case 11. K. Time: 1322L
00:00:20 v #446 > > │
00:00:20 v #447 > > │ Solution:
00:00:20 v #448 > > aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbbbbb
00:00:20 v #449 > > │ Test case 1. A. Time: 13073L
00:00:20 v #450 > > │ Test case 2. B. Time: 11519L
00:00:20 v #451 > > │ Test case 3. C. Time: 8373L
00:00:20 v #452 > > │ Test case 4. D. Time: 5860L
00:00:20 v #453 > > │ Test case 5. E. Time: 6490L
00:00:20 v #454 > > │ Test case 6. F. Time: 6325L
00:00:20 v #455 > > │ Test case 7. G. Time: 5799L
00:00:20 v #456 > > │ Test case 8. H. Time: 7099L
00:00:20 v #457 > > │ Test case 9. I. Time: 6133L
00:00:20 v #458 > > │ Test case 10. J. Time: 5993L
00:00:20 v #459 > > │ Test case 11. K. Time: 2040L
00:00:20 v #460 > > │
00:00:20 v #461 > > │ Input
00:00:20 v #462 > > | Expected        | Result  | Best
00:00:20 v #463 > > │ ---
00:00:20 v #464 > > | ---             | ---     | ---
00:00:20 v #465 > > │ abc
00:00:20 v #466 > > | abc             | abc     | (11, 1219)
00:00:20 v #467 > > │ accabb
00:00:20 v #468 > > | acb             | acb     | (11, 1317)
00:00:20 v #469 > > │ pprrqqpp
00:00:20 v #470 > > | prq             | prq     | (11, 1322)
00:00:20 v #471 > > │
00:00:20 v #472 > > aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbbbbb
00:00:20 v #473 > > | acb             | acb     | (11, 2040)
00:00:20 v #474 > > │
00:00:20 v #475 > > │ Averages
00:00:20 v #476 > > │ Test case 1. Average Time: 4622L
00:00:20 v #477 > > │ Test case 2. Average Time: 4483L
00:00:20 v #478 > > │ Test case 3. Average Time: 3800L
00:00:20 v #479 > > │ Test case 4. Average Time: 2613L
00:00:20 v #480 > > │ Test case 5. Average Time: 2828L
00:00:20 v #481 > > │ Test case 6. Average Time: 2828L
00:00:20 v #482 > > │ Test case 7. Average Time: 2505L
00:00:20 v #483 > > │ Test case 8. Average Time: 2926L
00:00:20 v #484 > > │ Test case 9. Average Time: 2652L
00:00:20 v #485 > > │ Test case 10. Average Time: 2599L
00:00:20 v #486 > > │ Test case 11. Average Time: 1474L
00:00:20 v #487 > > │
00:00:20 v #488 > > │ Ranking
00:00:20 v #489 > > │ Test case 1. Average Time: 4622L
00:00:20 v #490 > > │ Test case 2. Average Time: 4483L
00:00:20 v #491 > > │ Test case 3. Average Time: 3800L
00:00:20 v #492 > > │ Test case 8. Average Time: 2926L
00:00:20 v #493 > > │ Test case 5. Average Time: 2828L
00:00:20 v #494 > > │ Test case 6. Average Time: 2828L
00:00:20 v #495 > > │ Test case 9. Average Time: 2652L
00:00:20 v #496 > > │ Test case 4. Average Time: 2613L
00:00:20 v #497 > > │ Test case 10. Average Time: 2599L
00:00:20 v #498 > > │ Test case 7. Average Time: 2505L
00:00:20 v #499 > > │ Test case 11. Average Time: 1474L
00:00:20 v #500 > >
00:00:20 v #501 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:20 v #502 > > //// test
00:00:20 v #503 > >
00:00:20 v #504 > > let solutions = [[
00:00:20 v #505 > >     "A",
00:00:20 v #506 > >     fun input ->
00:00:20 v #507 > >         input
00:00:20 v #508 > >         |> Seq.toList
00:00:20 v #509 > >         |> List.fold (fun acc x -> if List.contains x acc then acc else acc @ [[
00:00:20 v #510 > > x ]]) [[]]
00:00:20 v #511 > >         |> Seq.toArray
00:00:20 v #512 > >         |> String
00:00:20 v #513 > >
00:00:20 v #514 > >     "B",
00:00:20 v #515 > >     fun input ->
00:00:20 v #516 > >         input
00:00:20 v #517 > >         |> Seq.rev
00:00:20 v #518 > >         |> fun list -> Seq.foldBack (fun x acc -> if List.contains x acc then
00:00:20 v #519 > > acc else x :: acc) list [[]]
00:00:20 v #520 > >         |> Seq.rev
00:00:20 v #521 > >         |> Seq.toArray
00:00:20 v #522 > >         |> String
00:00:20 v #523 > >
00:00:20 v #524 > >     "C",
00:00:20 v #525 > >     fun input ->
00:00:20 v #526 > >         input
00:00:20 v #527 > >         |> Seq.rev
00:00:20 v #528 > >         |> fun list -> Seq.foldBack (fun x (set, acc) -> if Set.contains x set
00:00:20 v #529 > > then set, acc else set.Add x, x :: acc) list (Set.empty, [[]])
00:00:20 v #530 > >         |> snd
00:00:20 v #531 > >         |> Seq.rev
00:00:20 v #532 > >         |> Seq.toArray
00:00:20 v #533 > >         |> String
00:00:20 v #534 > >
00:00:20 v #535 > >     "D",
00:00:20 v #536 > >     fun input ->
00:00:20 v #537 > >         input
00:00:20 v #538 > >         |> Seq.fold (fun (set, acc) x -> if Set.contains x set then set, acc
00:00:20 v #539 > > else set.Add x, Array.append acc [[| x |]]) (Set.empty, [[||]])
00:00:20 v #540 > >         |> snd
00:00:20 v #541 > >         |> String
00:00:20 v #542 > >
00:00:20 v #543 > >     "E",
00:00:20 v #544 > >     fun input ->
00:00:20 v #545 > >         input
00:00:20 v #546 > >         |> Seq.fold (fun (set, acc) x -> if Set.contains x set then set, acc
00:00:20 v #547 > > else set.Add x, x :: acc) (Set.empty, [[]])
00:00:20 v #548 > >         |> snd
00:00:20 v #549 > >         |> List.rev
00:00:20 v #550 > >         |> List.toArray
00:00:20 v #551 > >         |> String
00:00:20 v #552 > >
00:00:20 v #553 > >     "F",
00:00:20 v #554 > >     fun input ->
00:00:20 v #555 > >         input
00:00:20 v #556 > >         |> Seq.fold (fun (set, acc) x -> if Set.contains x set then set, acc
00:00:20 v #557 > > else set.Add x, acc @ [[ x ]]) (Set.empty, [[]])
00:00:20 v #558 > >         |> snd
00:00:20 v #559 > >         |> List.toArray
00:00:20 v #560 > >         |> String
00:00:20 v #561 > >
00:00:20 v #562 > >     "G",
00:00:20 v #563 > >     fun input ->
00:00:20 v #564 > >         input
00:00:20 v #565 > >         |> Seq.fold (fun (set, acc) x -> if Set.contains x set then set, acc
00:00:20 v #566 > > else set.Add x, x :: acc) (Set.empty, [[]])
00:00:20 v #567 > >         |> snd
00:00:20 v #568 > >         |> List.toArray
00:00:20 v #569 > >         |> Array.rev
00:00:20 v #570 > >         |> String
00:00:20 v #571 > >
00:00:20 v #572 > >     "H",
00:00:20 v #573 > >     fun input ->
00:00:20 v #574 > >         input
00:00:20 v #575 > >         |> Seq.toList
00:00:20 v #576 > >         |> fun list ->
00:00:20 v #577 > >             let rec loop set = function
00:00:20 v #578 > >                 | head :: tail when Set.contains head set -> loop set tail
00:00:20 v #579 > >                 | head :: tail -> (loop (set.Add head) tail) @ [[ head ]]
00:00:20 v #580 > >                 | [[]] -> [[]]
00:00:20 v #581 > >             loop Set.empty list
00:00:20 v #582 > >             |> List.rev
00:00:20 v #583 > >         |> List.toArray
00:00:20 v #584 > >         |> String
00:00:20 v #585 > >
00:00:20 v #586 > >     "I",
00:00:20 v #587 > >     fun input ->
00:00:20 v #588 > >         input
00:00:20 v #589 > >         |> Seq.toList
00:00:20 v #590 > >         |> fun list ->
00:00:20 v #591 > >             let rec loop set = function
00:00:20 v #592 > >                 | head :: tail when Set.contains head set -> loop set tail
00:00:20 v #593 > >                 | head :: tail -> loop (set.Add head) tail |> Array.append [[|
00:00:20 v #594 > > head |]]
00:00:20 v #595 > >                 | [[]] -> [[||]]
00:00:20 v #596 > >             loop Set.empty list
00:00:20 v #597 > >         |> String
00:00:20 v #598 > >
00:00:20 v #599 > >     "J",
00:00:20 v #600 > >     fun input ->
00:00:20 v #601 > >         input
00:00:20 v #602 > >         |> Seq.toList
00:00:20 v #603 > >         |> fun list ->
00:00:20 v #604 > >             let rec loop set = function
00:00:20 v #605 > >                 | head :: tail when Set.contains head set -> loop set tail
00:00:20 v #606 > >                 | head :: tail -> head :: loop (set.Add head) tail
00:00:20 v #607 > >                 | [[]] -> [[]]
00:00:20 v #608 > >             loop Set.empty list
00:00:20 v #609 > >         |> List.toArray
00:00:20 v #610 > >         |> String
00:00:20 v #611 > >
00:00:20 v #612 > >     "K",
00:00:20 v #613 > >     fun input ->
00:00:20 v #614 > >         input
00:00:20 v #615 > >         |> Seq.distinct
00:00:20 v #616 > >         |> Seq.toArray
00:00:20 v #617 > >         |> String
00:00:20 v #618 > > ]]
00:00:20 v #619 > > let testCases = seq {
00:00:20 v #620 > >     "abc", "abc"
00:00:20 v #621 > >     "accabb", "acb"
00:00:20 v #622 > >     "pprrqqpp", "prq"
00:00:20 v #623 > >
00:00:20 v #624 > > "aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbbbbb
00:00:20 v #625 > > ", "acb"
00:00:20 v #626 > > }
00:00:20 v #627 > > let rec uniqueLettersTests = runAll (nameof uniqueLettersTests) _count solutions
00:00:20 v #628 > > testCases
00:00:20 v #629 > > uniqueLettersTests
00:00:20 v #630 > > |> sortResultList
00:01:20 v #631 > >
00:01:20 v #632 > > ── [ 59.91s - stdout ] ─────────────────────────────────────────────────────────
00:01:20 v #633 > > │
00:01:20 v #634 > > │
00:01:20 v #635 > > │ Test: uniqueLettersTests
00:01:20 v #636 > > │
00:01:20 v #637 > > │ Solution: abc
00:01:20 v #638 > > │ Test case 1. A. Time: 965L
00:01:20 v #639 > > │ Test case 2. B. Time: 1582L
00:01:20 v #640 > > │ Test case 3. C. Time: 1843L
00:01:20 v #641 > > │ Test case 4. D. Time: 1069L
00:01:20 v #642 > > │ Test case 5. E. Time: 1177L
00:01:20 v #643 > > │ Test case 6. F. Time: 1158L
00:01:20 v #644 > > │ Test case 7. G. Time: 1163L
00:01:20 v #645 > > │ Test case 8. H. Time: 987L
00:01:20 v #646 > > │ Test case 9. I. Time: 681L
00:01:20 v #647 > > │ Test case 10. J. Time: 681L
00:01:20 v #648 > > │ Test case 11. K. Time: 649L
00:01:20 v #649 > > │
00:01:20 v #650 > > │ Solution: accabb
00:01:20 v #651 > > │ Test case 1. A. Time: 679L
00:01:20 v #652 > > │ Test case 2. B. Time: 983L
00:01:20 v #653 > > │ Test case 3. C. Time: 1176L
00:01:20 v #654 > > │ Test case 4. D. Time: 747L
00:01:20 v #655 > > │ Test case 5. E. Time: 791L
00:01:20 v #656 > > │ Test case 6. F. Time: 725L
00:01:20 v #657 > > │ Test case 7. G. Time: 671L
00:01:20 v #658 > > │ Test case 8. H. Time: 759L
00:01:20 v #659 > > │ Test case 9. I. Time: 736L
00:01:20 v #660 > > │ Test case 10. J. Time: 663L
00:01:20 v #661 > > │ Test case 11. K. Time: 560L
00:01:20 v #662 > > │
00:01:20 v #663 > > │ Solution: pprrqqpp
00:01:20 v #664 > > │ Test case 1. A. Time: 664L
00:01:20 v #665 > > │ Test case 2. B. Time: 842L
00:01:20 v #666 > > │ Test case 3. C. Time: 1251L
00:01:20 v #667 > > │ Test case 4. D. Time: 795L
00:01:20 v #668 > > │ Test case 5. E. Time: 808L
00:01:20 v #669 > > │ Test case 6. F. Time: 778L
00:01:20 v #670 > > │ Test case 7. G. Time: 729L
00:01:20 v #671 > > │ Test case 8. H. Time: 848L
00:01:20 v #672 > > │ Test case 9. I. Time: 807L
00:01:20 v #673 > > │ Test case 10. J. Time: 728L
00:01:20 v #674 > > │ Test case 11. K. Time: 566L
00:01:20 v #675 > > │
00:01:20 v #676 > > │ Solution:
00:01:20 v #677 > > aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbbbbb│ Test case 1. A. Time: 1669L
00:01:20 v #678 > > │ Test case 2. B. Time: 2658L
00:01:20 v #679 > > │ Test case 3. C. Time: 3458L
00:01:20 v #680 > > │ Test case 4. D. Time: 1923L
00:01:20 v #681 > > │ Test case 5. E. Time: 1858L
00:01:20 v #682 > > │ Test case 6. F. Time: 2012L
00:01:20 v #683 > > │ Test case 7. G. Time: 1721L
00:01:20 v #684 > > │ Test case 8. H. Time: 1869L
00:01:20 v #685 > > │ Test case 9. I. Time: 1873L
00:01:20 v #686 > > │ Test case 10. J. Time: 1530L
00:01:20 v #687 > > │ Test case 11. K. Time: 1188L
00:01:20 v #688 > > │
00:01:20 v #689 > > │ Input
00:01:20 v #690 > > | Expected	| Result	| Best
00:01:20 v #691 > > │ ---
00:01:20 v #692 > > | ---     	| ---   	| ---
00:01:20 v #693 > > │ abc
00:01:20 v #694 > > | abc     	| abc   	| (11, 649)
00:01:20 v #695 > > │ accabb
00:01:20 v #696 > > | acb     	| acb   	| (11, 560)
00:01:20 v #697 > > │ pprrqqpp
00:01:20 v #698 > > | prq     	| prq   	| (11, 566)
00:01:20 v #699 > > │
00:01:20 v #700 > > aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbbbbb	|
00:01:20 v #701 > > acb     	| acb   	| (11, 1188)
00:01:20 v #702 > > │
00:01:20 v #703 > > │ Average Ranking
00:01:20 v #704 > > │ Test case 11. Average Time: 740L
00:01:20 v #705 > > │ Test case 10. Average Time: 900L
00:01:20 v #706 > > │ Test case 1. Average Time: 994L
00:01:20 v #707 > > │ Test case 9. Average Time: 1024L
00:01:20 v #708 > > │ Test case 7. Average Time: 1071L
00:01:20 v #709 > > │ Test case 8. Average Time: 1115L
00:01:20 v #710 > > │ Test case 4. Average Time: 1133L
00:01:20 v #711 > > │ Test case 5. Average Time: 1158L
00:01:20 v #712 > > │ Test case 6. Average Time: 1168L
00:01:20 v #713 > > │ Test case 2. Average Time: 1516L
00:01:20 v #714 > > │ Test case 3. Average Time: 1932L
00:01:20 v #715 > > │
00:01:20 v #716 > >
00:01:20 v #717 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:20 v #718 > > │ ## rotateStringsTests
00:01:20 v #719 > >
00:01:20 v #720 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:20 v #721 > > │ https://www.hackerrank.com/challenges/rotate-string/forum
00:01:20 v #722 > > │
00:01:20 v #723 > > │ Test: RotateStrings
00:01:20 v #724 > > │
00:01:20 v #725 > > │ Solution: abc
00:01:20 v #726 > > │ Test case 1. A. Time: 1842L
00:01:20 v #727 > > │ Test case 2. B. Time: 1846L
00:01:20 v #728 > > │ Test case 3. C. Time: 1936L
00:01:20 v #729 > > │ Test case 4. CA. Time: 2224L
00:01:20 v #730 > > │ Test case 5. CB. Time: 2329L
00:01:20 v #731 > > │ Test case 6. D. Time: 2474L
00:01:20 v #732 > > │ Test case 7. E. Time: 1664L
00:01:20 v #733 > > │ Test case 8. F. Time: 1517L
00:01:20 v #734 > > │ Test case 9. FA. Time: 1651L
00:01:20 v #735 > > │ Test case 10. FB. Time: 3764L
00:01:20 v #736 > > │ Test case 11. FC. Time: 5415L
00:01:20 v #737 > > │
00:01:20 v #738 > > │ Solution: abcde
00:01:20 v #739 > > │ Test case 1. A. Time: 3356L
00:01:20 v #740 > > │ Test case 2. B. Time: 2592L
00:01:20 v #741 > > │ Test case 3. C. Time: 2346L
00:01:20 v #742 > > │ Test case 4. CA. Time: 2997L
00:01:20 v #743 > > │ Test case 5. CB. Time: 3061L
00:01:20 v #744 > > │ Test case 6. D. Time: 4051L
00:01:20 v #745 > > │ Test case 7. E. Time: 1905L
00:01:20 v #746 > > │ Test case 8. F. Time: 1771L
00:01:20 v #747 > > │ Test case 9. FA. Time: 2175L
00:01:20 v #748 > > │ Test case 10. FB. Time: 3275L
00:01:20 v #749 > > │ Test case 11. FC. Time: 5266L
00:01:20 v #750 > > │
00:01:20 v #751 > > │ Solution: abcdefghi
00:01:20 v #752 > > │ Test case 1. A. Time: 4492L
00:01:20 v #753 > > │ Test case 2. B. Time: 3526L
00:01:20 v #754 > > │ Test case 3. C. Time: 3583L
00:01:20 v #755 > > │ Test case 4. CA. Time: 3711L
00:01:20 v #756 > > │ Test case 5. CB. Time: 4783L
00:01:20 v #757 > > │ Test case 6. D. Time: 7557L
00:01:20 v #758 > > │ Test case 7. E. Time: 3452L
00:01:20 v #759 > > │ Test case 8. F. Time: 3050L
00:01:20 v #760 > > │ Test case 9. FA. Time: 3275L
00:01:20 v #761 > > │ Test case 10. FB. Time: 4635L
00:01:20 v #762 > > │ Test case 11. FC. Time: 5616L
00:01:20 v #763 > > │
00:01:20 v #764 > > │ Solution: abab
00:01:20 v #765 > > │ Test case 1. A. Time: 2093L
00:01:20 v #766 > > │ Test case 2. B. Time: 1843L
00:01:20 v #767 > > │ Test case 3. C. Time: 1746L
00:01:20 v #768 > > │ Test case 4. CA. Time: 2085L
00:01:20 v #769 > > │ Test case 5. CB. Time: 2139L
00:01:20 v #770 > > │ Test case 6. D. Time: 2095L
00:01:20 v #771 > > │ Test case 7. E. Time: 1723L
00:01:20 v #772 > > │ Test case 8. F. Time: 1558L
00:01:20 v #773 > > │ Test case 9. FA. Time: 1620L
00:01:20 v #774 > > │ Test case 10. FB. Time: 2319L
00:01:20 v #775 > > │ Test case 11. FC. Time: 3918L
00:01:20 v #776 > > │
00:01:20 v #777 > > │ Solution: aa
00:01:20 v #778 > > │ Test case 1. A. Time: 1107L
00:01:20 v #779 > > │ Test case 2. B. Time: 1241L
00:01:20 v #780 > > │ Test case 3. C. Time: 1183L
00:01:20 v #781 > > │ Test case 4. CA. Time: 1563L
00:01:20 v #782 > > │ Test case 5. CB. Time: 1525L
00:01:20 v #783 > > │ Test case 6. D. Time: 1591L
00:01:20 v #784 > > │ Test case 7. E. Time: 1327L
00:01:20 v #785 > > │ Test case 8. F. Time: 1151L
00:01:20 v #786 > > │ Test case 9. FA. Time: 1180L
00:01:20 v #787 > > │ Test case 10. FB. Time: 1733L
00:01:20 v #788 > > │ Test case 11. FC. Time: 2817L
00:01:20 v #789 > > │
00:01:20 v #790 > > │ Solution: z
00:01:20 v #791 > > │ Test case 1. A. Time: 816L
00:01:20 v #792 > > │ Test case 2. B. Time: 745L
00:01:20 v #793 > > │ Test case 3. C. Time: 928L
00:01:20 v #794 > > │ Test case 4. CA. Time: 1375L
00:01:20 v #795 > > │ Test case 5. CB. Time: 1029L
00:01:20 v #796 > > │ Test case 6. D. Time: 852L
00:01:20 v #797 > > │ Test case 7. E. Time: 712L
00:01:20 v #798 > > │ Test case 8. F. Time: 263L
00:01:20 v #799 > > │ Test case 9. FA. Time: 232L
00:01:20 v #800 > > │ Test case 10. FB. Time: 773L
00:01:20 v #801 > > │ Test case 11. FC. Time: 1789L
00:01:20 v #802 > > │
00:01:20 v #803 > > │ Input           | Expected
00:01:20 v #804 > >
00:01:20 v #805 > > | Result
00:01:20 v #806 > >
00:01:20 v #807 > > | Best
00:01:20 v #808 > > │ ---             | ---
00:01:20 v #809 > >
00:01:20 v #810 > > | ---
00:01:20 v #811 > >
00:01:20 v #812 > > | ---
00:01:20 v #813 > > │ abc             | bca cab abc
00:01:20 v #814 > >
00:01:20 v #815 > > | bca cab abc
00:01:20 v #816 > >
00:01:20 v #817 > > | (8, 1517)
00:01:20 v #818 > > │ abcde           | bcdea cdeab deabc eabcd abcde
00:01:20 v #819 > > | bcdea cdeab deabc eabcd abcde
00:01:20 v #820 > > | (8, 1771)
00:01:20 v #821 > > │ abcdefghi       | bcdefghia cdefghiab defghiabc efghiabcd
00:01:20 v #822 > > fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi       | bcdefghia cdefghiab
00:01:20 v #823 > > defghiabc efghiabcd fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi       |
00:01:20 v #824 > > (8, 3050)
00:01:20 v #825 > > │ abab            | baba abab baba abab
00:01:20 v #826 > > | baba abab baba abab
00:01:20 v #827 > > | (8, 1558)
00:01:20 v #828 > > │ aa              | aa aa
00:01:20 v #829 > >
00:01:20 v #830 > > | aa aa
00:01:20 v #831 > >
00:01:20 v #832 > > | (1, 1107)
00:01:20 v #833 > > │ z               | z
00:01:20 v #834 > >
00:01:20 v #835 > > | z
00:01:20 v #836 > >
00:01:20 v #837 > > | (9, 232)
00:01:20 v #838 > > │
00:01:20 v #839 > > │ Averages
00:01:20 v #840 > > │ Test case 1. Average Time: 2284L
00:01:20 v #841 > > │ Test case 2. Average Time: 1965L
00:01:20 v #842 > > │ Test case 3. Average Time: 1953L
00:01:20 v #843 > > │ Test case 4. Average Time: 2325L
00:01:20 v #844 > > │ Test case 5. Average Time: 2477L
00:01:20 v #845 > > │ Test case 6. Average Time: 3103L
00:01:20 v #846 > > │ Test case 7. Average Time: 1797L
00:01:20 v #847 > > │ Test case 8. Average Time: 1551L
00:01:20 v #848 > > │ Test case 9. Average Time: 1688L
00:01:20 v #849 > > │ Test case 10. Average Time: 2749L
00:01:20 v #850 > > │ Test case 11. Average Time: 4136L
00:01:20 v #851 > > │
00:01:20 v #852 > > │ Ranking
00:01:20 v #853 > > │ Test case 11. Average Time: 4136L
00:01:20 v #854 > > │ Test case 6. Average Time: 3103L
00:01:20 v #855 > > │ Test case 10. Average Time: 2749L
00:01:20 v #856 > > │ Test case 5. Average Time: 2477L
00:01:20 v #857 > > │ Test case 4. Average Time: 2325L
00:01:20 v #858 > > │ Test case 1. Average Time: 2284L
00:01:20 v #859 > > │ Test case 2. Average Time: 1965L
00:01:20 v #860 > > │ Test case 3. Average Time: 1953L
00:01:20 v #861 > > │ Test case 7. Average Time: 1797L
00:01:20 v #862 > > │ Test case 9. Average Time: 1688L
00:01:20 v #863 > > │ Test case 8. Average Time: 1551L
00:01:20 v #864 > >
00:01:20 v #865 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:20 v #866 > > //// test
00:01:20 v #867 > >
00:01:20 v #868 > > let solutions = [[
00:01:20 v #869 > >     "A",
00:01:20 v #870 > >     fun (input: string) ->
00:01:20 v #871 > >         let resultList =
00:01:20 v #872 > >             List.fold (fun acc x ->
00:01:20 v #873 > >                 let rotate (text: string) (letter: string) = (text |>
00:01:20 v #874 > > SpiralSm.slice 1 (input.Length - 1)) + letter
00:01:20 v #875 > >                 [[ rotate (if acc.IsEmpty then input else acc.Head) (string x)
00:01:20 v #876 > > ]] @ acc
00:01:20 v #877 > >             ) [[]] (Seq.toList input)
00:01:20 v #878 > >
00:01:20 v #879 > >         (resultList, "")
00:01:20 v #880 > >         ||> List.foldBack (fun acc x -> x + acc + " ")
00:01:20 v #881 > >         |> _.TrimEnd()
00:01:20 v #882 > >
00:01:20 v #883 > >     "B",
00:01:20 v #884 > >     fun input ->
00:01:20 v #885 > >         input
00:01:20 v #886 > >         |> Seq.toList
00:01:20 v #887 > >         |> List.fold (fun (acc: string list) letter ->
00:01:20 v #888 > >             let last =
00:01:20 v #889 > >                 if acc.IsEmpty
00:01:20 v #890 > >                 then input
00:01:20 v #891 > >                 else acc.Head
00:01:20 v #892 > >
00:01:20 v #893 > >             let item = last.[[1 .. input.Length - 1]] + string letter
00:01:20 v #894 > >
00:01:20 v #895 > >             item :: acc
00:01:20 v #896 > >         ) [[]]
00:01:20 v #897 > >         |> List.rev
00:01:20 v #898 > >         |> SpiralSm.concat " "
00:01:20 v #899 > >
00:01:20 v #900 > >     "C",
00:01:20 v #901 > >     fun input ->
00:01:20 v #902 > >         input
00:01:20 v #903 > >         |> Seq.toList
00:01:20 v #904 > >         |> List.fold (fun (acc: string list) letter -> acc.Head.[[ 1 ..
00:01:20 v #905 > > input.Length - 1 ]] + string letter :: acc) [[ input ]]
00:01:20 v #906 > >         |> List.rev
00:01:20 v #907 > >         |> List.skip 1
00:01:20 v #908 > >         |> SpiralSm.concat " "
00:01:20 v #909 > >
00:01:20 v #910 > >     "CA",
00:01:20 v #911 > >     fun input ->
00:01:20 v #912 > >         input
00:01:20 v #913 > >         |> Seq.fold (fun (acc: string list) letter -> acc.Head.[[ 1 ..
00:01:20 v #914 > > input.Length - 1 ]] + string letter :: acc) [[ input ]]
00:01:20 v #915 > >         |> Seq.rev
00:01:20 v #916 > >         |> Seq.skip 1
00:01:20 v #917 > >         |> SpiralSm.concat " "
00:01:20 v #918 > >
00:01:20 v #919 > >     "CB",
00:01:20 v #920 > >     fun input ->
00:01:20 v #921 > >         input
00:01:20 v #922 > >         |> Seq.toArray
00:01:20 v #923 > >         |> Array.fold (fun (acc: string[[]]) letter -> acc |> Array.append [[|
00:01:20 v #924 > > acc.[[0]].[[ 1 .. input.Length - 1 ]] + string letter |]]) [[| input |]]
00:01:20 v #925 > >         |> Array.rev
00:01:20 v #926 > >         |> Array.skip 1
00:01:20 v #927 > >         |> SpiralSm.concat " "
00:01:20 v #928 > >
00:01:20 v #929 > >     "D",
00:01:20 v #930 > >     fun input ->
00:01:20 v #931 > >         input
00:01:20 v #932 > >         |> Seq.toList
00:01:20 v #933 > >         |> fun list ->
00:01:20 v #934 > >             let rec loop (acc: char list list) = function
00:01:20 v #935 > >                 | _ when acc.Length = list.Length -> acc
00:01:20 v #936 > >                 | head :: tail ->
00:01:20 v #937 > >                     let item = tail @ [[ head ]]
00:01:20 v #938 > >                     loop (item :: acc) item
00:01:20 v #939 > >                 | [[]] -> [[]]
00:01:20 v #940 > >             loop [[]] list
00:01:20 v #941 > >         |> List.rev
00:01:20 v #942 > >         |> List.map (List.toArray >> String)
00:01:20 v #943 > >         |> SpiralSm.concat " "
00:01:20 v #944 > >
00:01:20 v #945 > >     "E",
00:01:20 v #946 > >     fun input ->
00:01:20 v #947 > >         input
00:01:20 v #948 > >         |> Seq.toList
00:01:20 v #949 > >         |> fun list ->
00:01:20 v #950 > >             let rec loop (last: string) = function
00:01:20 v #951 > >                 | head :: tail ->
00:01:20 v #952 > >                     let item = last.[[1 .. input.Length - 1]] + string head
00:01:20 v #953 > >                     item :: loop item tail
00:01:20 v #954 > >                 | [[]] -> [[]]
00:01:20 v #955 > >             loop input list
00:01:20 v #956 > >         |> SpiralSm.concat " "
00:01:20 v #957 > >
00:01:20 v #958 > >     "F",
00:01:20 v #959 > >     fun input ->
00:01:20 v #960 > >         Array.singleton 0
00:01:20 v #961 > >         |> Array.append [[| 1 .. input.Length - 1 |]]
00:01:20 v #962 > >         |> Array.map (fun i -> input.[[ i .. ]] + input.[[ .. i - 1 ]])
00:01:20 v #963 > >         |> SpiralSm.concat " "
00:01:20 v #964 > >
00:01:20 v #965 > >     "FA",
00:01:20 v #966 > >     fun input ->
00:01:20 v #967 > >         List.singleton 0
00:01:20 v #968 > >         |> List.append [[ 1 .. input.Length - 1 ]]
00:01:20 v #969 > >         |> List.map (fun i -> input.[[ i .. ]] + input.[[ .. i - 1 ]])
00:01:20 v #970 > >         |> SpiralSm.concat " "
00:01:20 v #971 > >
00:01:20 v #972 > >     "FB",
00:01:20 v #973 > >     fun input ->
00:01:20 v #974 > >         Seq.singleton 0
00:01:20 v #975 > >         |> Seq.append (seq { 1 .. input.Length - 1 })
00:01:20 v #976 > >         |> Seq.map (fun i -> input.[[ i .. ]] + input.[[ .. i - 1 ]])
00:01:20 v #977 > >         |> SpiralSm.concat " "
00:01:20 v #978 > >
00:01:20 v #979 > >     "FC",
00:01:20 v #980 > >     fun input ->
00:01:20 v #981 > >         Array.singleton 0
00:01:20 v #982 > >         |> Array.append [[| 1 .. input.Length - 1 |]]
00:01:20 v #983 > >         |> Array.Parallel.map (fun i -> input.[[ i .. ]] + input.[[ .. i - 1 ]])
00:01:20 v #984 > >         |> SpiralSm.concat " "
00:01:20 v #985 > > ]]
00:01:20 v #986 > > let testCases = seq {
00:01:20 v #987 > >     "abc", "bca cab abc"
00:01:20 v #988 > >     "abcde", "bcdea cdeab deabc eabcd abcde"
00:01:20 v #989 > >     "abcdefghi", "bcdefghia cdefghiab defghiabc efghiabcd fghiabcde ghiabcdef
00:01:20 v #990 > > hiabcdefg iabcdefgh abcdefghi"
00:01:20 v #991 > >     "abab", "baba abab baba abab"
00:01:20 v #992 > >     "aa", "aa aa"
00:01:20 v #993 > >     "z", "z"
00:01:20 v #994 > > }
00:01:20 v #995 > > let rec rotateStringsTests = runAll (nameof rotateStringsTests) _count solutions
00:01:20 v #996 > > testCases
00:01:20 v #997 > > rotateStringsTests
00:01:20 v #998 > > |> sortResultList
00:02:45 v #999 > >
00:02:45 v #1000 > > ── [ 1.43m - stdout ] ──────────────────────────────────────────────────────────
00:02:45 v #1001 > > │
00:02:45 v #1002 > > │
00:02:45 v #1003 > > │ Test: rotateStringsTests
00:02:45 v #1004 > > │
00:02:45 v #1005 > > │ Solution: abc
00:02:45 v #1006 > > │ Test case 1. A. Time: 1034L
00:02:45 v #1007 > > │ Test case 2. B. Time: 868L
00:02:45 v #1008 > > │ Test case 3. C. Time: 818L
00:02:45 v #1009 > > │ Test case 4. CA. Time: 1168L
00:02:45 v #1010 > > │ Test case 5. CB. Time: 1020L
00:02:45 v #1011 > > │ Test case 6. D. Time: 925L
00:02:45 v #1012 > > │ Test case 7. E. Time: 658L
00:02:45 v #1013 > > │ Test case 8. F. Time: 600L
00:02:45 v #1014 > > │ Test case 9. FA. Time: 778L
00:02:45 v #1015 > > │ Test case 10. FB. Time: 1351L
00:02:45 v #1016 > > │ Test case 11. FC. Time: 1761L
00:02:45 v #1017 > > │
00:02:45 v #1018 > > │ Solution: abcde
00:02:45 v #1019 > > │ Test case 1. A. Time: 1198L
00:02:45 v #1020 > > │ Test case 2. B. Time: 980L
00:02:45 v #1021 > > │ Test case 3. C. Time: 1050L
00:02:45 v #1022 > > │ Test case 4. CA. Time: 1158L
00:02:45 v #1023 > > │ Test case 5. CB. Time: 1222L
00:02:45 v #1024 > > │ Test case 6. D. Time: 1422L
00:02:45 v #1025 > > │ Test case 7. E. Time: 944L
00:02:45 v #1026 > > │ Test case 8. F. Time: 785L
00:02:45 v #1027 > > │ Test case 9. FA. Time: 972L
00:02:45 v #1028 > > │ Test case 10. FB. Time: 1479L
00:02:45 v #1029 > > │ Test case 11. FC. Time: 2186L
00:02:45 v #1030 > > │
00:02:45 v #1031 > > │ Solution: abcdefghi
00:02:45 v #1032 > > │ Test case 1. A. Time: 2179L
00:02:45 v #1033 > > │ Test case 2. B. Time: 1690L
00:02:45 v #1034 > > │ Test case 3. C. Time: 1648L
00:02:45 v #1035 > > │ Test case 4. CA. Time: 1832L
00:02:45 v #1036 > > │ Test case 5. CB. Time: 1975L
00:02:45 v #1037 > > │ Test case 6. D. Time: 2646L
00:02:45 v #1038 > > │ Test case 7. E. Time: 1633L
00:02:45 v #1039 > > │ Test case 8. F. Time: 1276L
00:02:45 v #1040 > > │ Test case 9. FA. Time: 1630L
00:02:45 v #1041 > > │ Test case 10. FB. Time: 2130L
00:02:45 v #1042 > > │ Test case 11. FC. Time: 2459L
00:02:45 v #1043 > > │
00:02:45 v #1044 > > │ Solution: abab
00:02:45 v #1045 > > │ Test case 1. A. Time: 977L
00:02:45 v #1046 > > │ Test case 2. B. Time: 777L
00:02:45 v #1047 > > │ Test case 3. C. Time: 922L
00:02:45 v #1048 > > │ Test case 4. CA. Time: 1048L
00:02:45 v #1049 > > │ Test case 5. CB. Time: 1112L
00:02:45 v #1050 > > │ Test case 6. D. Time: 1074L
00:02:45 v #1051 > > │ Test case 7. E. Time: 787L
00:02:45 v #1052 > > │ Test case 8. F. Time: 672L
00:02:45 v #1053 > > │ Test case 9. FA. Time: 796L
00:02:45 v #1054 > > │ Test case 10. FB. Time: 1279L
00:02:45 v #1055 > > │ Test case 11. FC. Time: 1823L
00:02:45 v #1056 > > │
00:02:45 v #1057 > > │ Solution: aa
00:02:45 v #1058 > > │ Test case 1. A. Time: 697L
00:02:45 v #1059 > > │ Test case 2. B. Time: 645L
00:02:45 v #1060 > > │ Test case 3. C. Time: 691L
00:02:45 v #1061 > > │ Test case 4. CA. Time: 843L
00:02:45 v #1062 > > │ Test case 5. CB. Time: 778L
00:02:45 v #1063 > > │ Test case 6. D. Time: 725L
00:02:45 v #1064 > > │ Test case 7. E. Time: 655L
00:02:45 v #1065 > > │ Test case 8. F. Time: 576L
00:02:45 v #1066 > > │ Test case 9. FA. Time: 641L
00:02:45 v #1067 > > │ Test case 10. FB. Time: 1045L
00:02:45 v #1068 > > │ Test case 11. FC. Time: 1465L
00:02:45 v #1069 > > │
00:02:45 v #1070 > > │ Solution: z
00:02:45 v #1071 > > │ Test case 1. A. Time: 443L
00:02:45 v #1072 > > │ Test case 2. B. Time: 419L
00:02:45 v #1073 > > │ Test case 3. C. Time: 489L
00:02:45 v #1074 > > │ Test case 4. CA. Time: 691L
00:02:45 v #1075 > > │ Test case 5. CB. Time: 564L
00:02:45 v #1076 > > │ Test case 6. D. Time: 475L
00:02:45 v #1077 > > │ Test case 7. E. Time: 411L
00:02:45 v #1078 > > │ Test case 8. F. Time: 141L
00:02:45 v #1079 > > │ Test case 9. FA. Time: 148L
00:02:45 v #1080 > > │ Test case 10. FB. Time: 399L
00:02:45 v #1081 > > │ Test case 11. FC. Time: 850L
00:02:45 v #1082 > > │
00:02:45 v #1083 > > │ Input    	| Expected
00:02:45 v #1084 > > | Result
00:02:45 v #1085 > >
00:02:45 v #1086 > > | Best
00:02:45 v #1087 > > │ ---      	| ---
00:02:45 v #1088 > >
00:02:45 v #1089 > > | ---
00:02:45 v #1090 > >
00:02:45 v #1091 > > | ---
00:02:45 v #1092 > > │ abc      	| bca cab abc
00:02:45 v #1093 > > | bca cab abc
00:02:45 v #1094 > > | (8, 600)
00:02:45 v #1095 > > │ abcde    	| bcdea cdeab deabc eabcd abcde
00:02:45 v #1096 > > | bcdea cdeab deabc eabcd abcde
00:02:45 v #1097 > > | (8, 785)
00:02:45 v #1098 > > │ abcdefghi	| bcdefghia cdefghiab defghiabc efghiabcd fghiabcde
00:02:45 v #1099 > > ghiabcdef hiabcdefg iabcdefgh abcdefghi	| bcdefghia cdefghiab defghiabc efghiabcd
00:02:45 v #1100 > > fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi	| (8, 1276)
00:02:45 v #1101 > > │ abab     	| baba abab baba abab
00:02:45 v #1102 > > | baba abab baba abab
00:02:45 v #1103 > > | (8, 672)
00:02:45 v #1104 > > │ aa       	| aa aa
00:02:45 v #1105 > >
00:02:45 v #1106 > > | aa aa
00:02:45 v #1107 > >
00:02:45 v #1108 > > | (8, 576)
00:02:45 v #1109 > > │ z        	| z
00:02:45 v #1110 > >
00:02:45 v #1111 > > | z
00:02:45 v #1112 > >
00:02:45 v #1113 > > | (8, 141)
00:02:45 v #1114 > > │
00:02:45 v #1115 > > │ Average Ranking
00:02:45 v #1116 > > │ Test case 8. Average Time: 675L
00:02:45 v #1117 > > │ Test case 9. Average Time: 827L
00:02:45 v #1118 > > │ Test case 7. Average Time: 848L
00:02:45 v #1119 > > │ Test case 2. Average Time: 896L
00:02:45 v #1120 > > │ Test case 3. Average Time: 936L
00:02:45 v #1121 > > │ Test case 1. Average Time: 1088L
00:02:45 v #1122 > > │ Test case 5. Average Time: 1111L
00:02:45 v #1123 > > │ Test case 4. Average Time: 1123L
00:02:45 v #1124 > > │ Test case 6. Average Time: 1211L
00:02:45 v #1125 > > │ Test case 10. Average Time: 1280L
00:02:45 v #1126 > > │ Test case 11. Average Time: 1757L
00:02:45 v #1127 > > │
00:02:45 v #1128 > >
00:02:45 v #1129 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:45 v #1130 > > │ ## rotate_strings_tests
00:02:45 v #1131 > >
00:02:45 v #1132 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:45 v #1133 > > │ ```
00:02:45 v #1134 > > │ 02:21:12 verbose #1 benchmark.run_all / {count =
00:02:45 v #1135 > > 2000000; test_name = rotate_strings_tests}
00:02:45 v #1136 > > │
00:02:45 v #1137 > > │ 02:21:12 verbose #2 benchmark.run / {input_str =
00:02:45 v #1138 > > "abc"}
00:02:45 v #1139 > > │ 02:21:13 verbose #3 benchmark.run / solutions.map / {i
00:02:45 v #1140 > > = 1; test_name = F; time = 638}
00:02:45 v #1141 > > │ 02:21:14 verbose #4 benchmark.run / solutions.map / {i
00:02:45 v #1142 > > = 2; test_name = FA; time = 779}
00:02:45 v #1143 > > │
00:02:45 v #1144 > > │ 02:21:14 verbose #5 benchmark.run / {input_str =
00:02:45 v #1145 > > "abcde"}
00:02:45 v #1146 > > │ 02:21:15 verbose #6 benchmark.run / solutions.map / {i
00:02:45 v #1147 > > = 1; test_name = F; time = 745}
00:02:45 v #1148 > > │ 02:21:16 verbose #7 benchmark.run / solutions.map / {i
00:02:45 v #1149 > > = 2; test_name = FA; time = 809}
00:02:45 v #1150 > > │
00:02:45 v #1151 > > │ 02:21:16 verbose #8 benchmark.run / {input_str =
00:02:45 v #1152 > > "abcdefghi"}
00:02:45 v #1153 > > │ 02:21:17 verbose #9 benchmark.run / solutions.map / {i
00:02:45 v #1154 > > = 1; test_name = F; time = 1092}
00:02:45 v #1155 > > │ 02:21:18 verbose #10 benchmark.run / solutions.map
00:02:45 v #1156 > > {i = 2; test_name = FA; time = 1304}
00:02:45 v #1157 > > │
00:02:45 v #1158 > > │ 02:21:18 verbose #11 benchmark.run / {input_str =
00:02:45 v #1159 > > "abab"}
00:02:45 v #1160 > > │ 02:21:19 verbose #12 benchmark.run / solutions.map
00:02:45 v #1161 > > {i = 1; test_name = F; time = 536}
00:02:45 v #1162 > > │ 02:21:20 verbose #13 benchmark.run / solutions.map
00:02:45 v #1163 > > {i = 2; test_name = FA; time = 620}
00:02:45 v #1164 > > │
00:02:45 v #1165 > > │ 02:21:20 verbose #14 benchmark.run / {input_str =
00:02:45 v #1166 > > "aa"}
00:02:45 v #1167 > > │ 02:21:21 verbose #15 benchmark.run / solutions.map
00:02:45 v #1168 > > {i = 1; test_name = F; time = 365}
00:02:45 v #1169 > > │ 02:21:21 verbose #16 benchmark.run / solutions.map
00:02:45 v #1170 > > {i = 2; test_name = FA; time = 396}
00:02:45 v #1171 > > │
00:02:45 v #1172 > > │ 02:21:21 verbose #17 benchmark.run / {input_str = "z"}
00:02:45 v #1173 > > │ 02:21:22 verbose #18 benchmark.run / solutions.map
00:02:45 v #1174 > > {i = 1; test_name = F; time = 158}
00:02:45 v #1175 > > │ 02:21:22 verbose #19 benchmark.run / solutions.map
00:02:45 v #1176 > > {i = 2; test_name = FA; time = 143}
00:02:45 v #1177 > > │ ```
00:02:45 v #1178 > > │ input      	| expected
00:02:45 v #1179 > >
00:02:45 v #1180 > > | result
00:02:45 v #1181 > >
00:02:45 v #1182 > > | best
00:02:45 v #1183 > > │ ---        	| ---
00:02:45 v #1184 > >
00:02:45 v #1185 > > | ---
00:02:45 v #1186 > >
00:02:45 v #1187 > > | ---
00:02:45 v #1188 > > │ "abc"      	| "bca cab abc"
00:02:45 v #1189 > > | "bca cab abc"
00:02:45 v #1190 > > | 1, 638
00:02:45 v #1191 > > │ "abcde"    	| "bcdea cdeab deabc eabcd abcde"
00:02:45 v #1192 > > | "bcdea cdeab deabc eabcd abcde"
00:02:45 v #1193 > > | 1, 745
00:02:45 v #1194 > > │ "abcdefghi"	| "bcdefghia cdefghiab defghiabc efghiabcd
00:02:45 v #1195 > > fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi"	| "bcdefghia cdefghiab
00:02:45 v #1196 > > defghiabc efghiabcd fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi"	| 1, 1092
00:02:45 v #1197 > > │ "abab"     	| "baba abab baba abab"
00:02:45 v #1198 > > | "baba abab baba abab"
00:02:45 v #1199 > > | 1, 536
00:02:45 v #1200 > > │ "aa"       	| "aa aa"
00:02:45 v #1201 > >
00:02:45 v #1202 > > | "aa aa"
00:02:45 v #1203 > >
00:02:45 v #1204 > > | 1, 365
00:02:45 v #1205 > > │ "z"        	| "z"
00:02:45 v #1206 > >
00:02:45 v #1207 > > | "z"
00:02:45 v #1208 > >
00:02:45 v #1209 > > | 2, 143
00:02:45 v #1210 > > │ ```
00:02:45 v #1211 > > │ 02:21:22 verbose #20 benchmark.sort_result_list
00:02:45 v #1212 > > averages.iter / {avg = 589; i = 1}
00:02:45 v #1213 > > │ 02:21:22 verbose #21 benchmark.sort_result_list
00:02:45 v #1214 > > averages.iter / {avg = 675; i = 2}
00:02:45 v #1215 > > │ ```
00:02:45 v #1216 > >
00:02:45 v #1217 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:45 v #1218 > > //// test
00:02:45 v #1219 > > //// timeout=60000
00:02:45 v #1220 > >
00:02:45 v #1221 > > inl get_solutions () =
00:02:45 v #1222 > >     [[
00:02:45 v #1223 > >         // "A",
00:02:45 v #1224 > >         // fun (input : string) =>
00:02:45 v #1225 > >         //     let resultList =
00:02:45 v #1226 > >         //         List.fold (fun acc x =>
00:02:45 v #1227 > >         //             let rotate (text : string) (letter : string) =
00:02:45 v #1228 > > text.Substring (1, input.Length - 1) + letter
00:02:45 v #1229 > >         //             [[ rotate (if acc.IsEmpty then input else acc.Head)
00:02:45 v #1230 > > (string x) ]] ++ acc
00:02:45 v #1231 > >         //         ) [[]] (Seq.toList input)
00:02:45 v #1232 > >
00:02:45 v #1233 > >         //     List.foldBack (fun acc x => x + acc + " ") resultList ""
00:02:45 v #1234 > >         //     |> fun x => x.TrimEnd ()
00:02:45 v #1235 > >
00:02:45 v #1236 > >         // "B",
00:02:45 v #1237 > >         // fun input =>
00:02:45 v #1238 > >         //     input
00:02:45 v #1239 > >         //     |> Seq.toList
00:02:45 v #1240 > >         //     |> List.fold (fun (acc : string list) letter =>
00:02:45 v #1241 > >         //         let last =
00:02:45 v #1242 > >         //             if acc.IsEmpty
00:02:45 v #1243 > >         //             then input
00:02:45 v #1244 > >         //             else acc.Head
00:02:45 v #1245 > >
00:02:45 v #1246 > >         //         let item = last.[[1 .. input.Length - 1]] + string letter
00:02:45 v #1247 > >
00:02:45 v #1248 > >         //         item :: acc
00:02:45 v #1249 > >         //     ) [[]]
00:02:45 v #1250 > >         //     |> List.rev
00:02:45 v #1251 > >         //     |> SpiralSm.concat " "
00:02:45 v #1252 > >
00:02:45 v #1253 > >         // "C",
00:02:45 v #1254 > >         // fun input =>
00:02:45 v #1255 > >         //     input
00:02:45 v #1256 > >         //     |> Seq.toList
00:02:45 v #1257 > >         //     |> List.fold (fun (acc : list string) letter => acc.Head.[[ 1 ..
00:02:45 v #1258 > > input.Length - 1 ]] + string letter :: acc) [[ input ]]
00:02:45 v #1259 > >         //     |> List.rev
00:02:45 v #1260 > >         //     |> List.skip 1
00:02:45 v #1261 > >         //     |> SpiralSm.concat " "
00:02:45 v #1262 > >
00:02:45 v #1263 > >         // "CA",
00:02:45 v #1264 > >         // fun input =>
00:02:45 v #1265 > >         //     input
00:02:45 v #1266 > >         //     |> Seq.fold (fun (acc : list string) letter => acc.Head.[[ 1 ..
00:02:45 v #1267 > > input.Length - 1 ]] + string letter :: acc) [[ input ]]
00:02:45 v #1268 > >         //     |> Seq.rev
00:02:45 v #1269 > >         //     |> Seq.skip 1
00:02:45 v #1270 > >         //     |> SpiralSm.concat " "
00:02:45 v #1271 > >
00:02:45 v #1272 > >         // "CB",
00:02:45 v #1273 > >         // fun input =>
00:02:45 v #1274 > >         //     input
00:02:45 v #1275 > >         //     |> Seq.toArray
00:02:45 v #1276 > >         //     |> Array.fold (fun (acc : a _ string) letter => acc |>
00:02:45 v #1277 > > Array.append (a ;[[ acc.[[0]].[[ 1 .. input.Length - 1 ]] + string letter ]]))
00:02:45 v #1278 > > (a ;[[ input ]])
00:02:45 v #1279 > >         //     |> Array.rev
00:02:45 v #1280 > >         //     |> Array.skip 1
00:02:45 v #1281 > >         //     |> SpiralSm.concat " "
00:02:45 v #1282 > >
00:02:45 v #1283 > >         // "D",
00:02:45 v #1284 > >         // fun input =>
00:02:45 v #1285 > >         //     input
00:02:45 v #1286 > >         //     |> Seq.toList
00:02:45 v #1287 > >         //     |> fun list =>
00:02:45 v #1288 > >         //         let rec loop (acc : list (list char)) = function
00:02:45 v #1289 > >         //             | _ when acc.Length = list.Length => acc
00:02:45 v #1290 > >         //             | head :: tail =>
00:02:45 v #1291 > >         //                 let item = tail ++ [[ head ]]
00:02:45 v #1292 > >         //                 loop (item :: acc) item
00:02:45 v #1293 > >         //             | [[]] => [[]]
00:02:45 v #1294 > >         //         loop [[]] list
00:02:45 v #1295 > >         //     |> List.rev
00:02:45 v #1296 > >         //     |> List.map (List.toArray >> String)
00:02:45 v #1297 > >         //     |> SpiralSm.concat " "
00:02:45 v #1298 > >
00:02:45 v #1299 > >         // "E",
00:02:45 v #1300 > >         // fun input =>
00:02:45 v #1301 > >         //     input
00:02:45 v #1302 > >         //     |> Seq.toList
00:02:45 v #1303 > >         //     |> fun list =>
00:02:45 v #1304 > >         //         let rec loop (last : string) = function
00:02:45 v #1305 > >         //             | head :: tail =>
00:02:45 v #1306 > >         //                 let item = last.[[1 .. input.Length - 1]] + string
00:02:45 v #1307 > > head
00:02:45 v #1308 > >         //                 item :: loop item tail
00:02:45 v #1309 > >         //             | [[]] => [[]]
00:02:45 v #1310 > >         //         loop input list
00:02:45 v #1311 > >         //     |> SpiralSm.concat " "
00:02:45 v #1312 > >
00:02:45 v #1313 > >         "F",
00:02:45 v #1314 > >         fun input =>
00:02:45 v #1315 > >         // Array.singleton 0
00:02:45 v #1316 > >         // |> Array.append [[| 1 .. input.Length - 1 |]]
00:02:45 v #1317 > >         // |> Array.map (fun i -> input.[[ i .. ]] + input.[[ .. i - 1 ]])
00:02:45 v #1318 > >         // |> SpiralSm.concat " "
00:02:45 v #1319 > >             inl input_length = input |> sm.length
00:02:45 v #1320 > >             am.singleton 0i32
00:02:45 v #1321 > >             |> am.append (am'.init_series 1 (input_length - 1) 1 |> fun x => a x
00:02:45 v #1322 > > : _ int _)
00:02:45 v #1323 > >             |> fun (a x) => x
00:02:45 v #1324 > >             |> am'.map_base fun i =>
00:02:45 v #1325 > >                 inl a = input |> sm'.slice i (input_length - 1)
00:02:45 v #1326 > >                 inl b = input |> sm'.slice 0 (i - 1)
00:02:45 v #1327 > >                 a +. b
00:02:45 v #1328 > >             |> fun x => a x : _ int _
00:02:45 v #1329 > >             |> seq.of_array
00:02:45 v #1330 > >             |> sm'.concat " "
00:02:45 v #1331 > >
00:02:45 v #1332 > >         "FA",
00:02:45 v #1333 > >         fun input =>
00:02:45 v #1334 > >         //     List.singleton 0
00:02:45 v #1335 > >         //     |> List.append [[ 1 .. input.Length - 1 ]]
00:02:45 v #1336 > >         //   //  |> List.map (fun i => input.[[ i .. ]] + input.[[ .. i - 1 ]])
00:02:45 v #1337 > >         //     |> SpiralSm.concat " "
00:02:45 v #1338 > >             inl input_length = input |> sm.length
00:02:45 v #1339 > >             listm.singleton 0i32
00:02:45 v #1340 > >             |> listm.append (listm'.init_series 1 (input_length - 1) 1)
00:02:45 v #1341 > >             |> listm.map (fun i =>
00:02:45 v #1342 > >                 inl a = input |> sm'.slice i (input_length - 1)
00:02:45 v #1343 > >                 inl b = if i = 0 then "" else input |> sm'.slice 0 (i - 1)
00:02:45 v #1344 > >                 a +. b
00:02:45 v #1345 > >             )
00:02:45 v #1346 > >             |> listm'.box
00:02:45 v #1347 > >             |> listm'.to_array'
00:02:45 v #1348 > >             |> fun x => a x : _ int _
00:02:45 v #1349 > >             |> seq.of_array
00:02:45 v #1350 > >             |> sm'.concat " "
00:02:45 v #1351 > >
00:02:45 v #1352 > >         // "FB",
00:02:45 v #1353 > >         // fun input =>
00:02:45 v #1354 > >         //     Seq.singleton 0
00:02:45 v #1355 > >         //   //  |> Seq.append (seq { 1 .. input.Length - 1 })
00:02:45 v #1356 > >         //   //  |> Seq.map (fun i => input.[[ i .. ]] + input.[[ .. i - 1 ]])
00:02:45 v #1357 > >         //     |> SpiralSm.concat " "
00:02:45 v #1358 > >
00:02:45 v #1359 > >         // "FC",
00:02:45 v #1360 > >         // fun input =>
00:02:45 v #1361 > >         //     Array.singleton 0
00:02:45 v #1362 > >         //     |> Array.append (a ;[[ 1 .. input.Length - 1 ]])
00:02:45 v #1363 > >         ////    |> Array.Parallel.map (fun i => input.[[ i .. ]] + input.[[ .. i
00:02:45 v #1364 > > - 1 ]])
00:02:45 v #1365 > >         //     |> SpiralSm.concat " "
00:02:45 v #1366 > >     ]]
00:02:45 v #1367 > >
00:02:45 v #1368 > > inl rec rotate_strings_tests () =
00:02:45 v #1369 > >     inl test_cases = [[
00:02:45 v #1370 > >         "abc", "bca cab abc"
00:02:45 v #1371 > >         "abcde", "bcdea cdeab deabc eabcd abcde"
00:02:45 v #1372 > >         "abcdefghi", "bcdefghia cdefghiab defghiabc efghiabcd fghiabcde
00:02:45 v #1373 > > ghiabcdef hiabcdefg iabcdefgh abcdefghi"
00:02:45 v #1374 > >         "abab", "baba abab baba abab"
00:02:45 v #1375 > >         "aa", "aa aa"
00:02:45 v #1376 > >         "z", "z"
00:02:45 v #1377 > >     ]]
00:02:45 v #1378 > >
00:02:45 v #1379 > >     inl solutions = get_solutions ()
00:02:45 v #1380 > >
00:02:45 v #1381 > >     // inl is_fast () = true
00:02:45 v #1382 > >
00:02:45 v #1383 > >     inl count =
00:02:45 v #1384 > >         if is_fast ()
00:02:45 v #1385 > >         then 1000i32
00:02:45 v #1386 > >         else 2000000i32
00:02:45 v #1387 > >
00:02:45 v #1388 > >     run_all (reflection.nameof { rotate_strings_tests }) count solutions
00:02:45 v #1389 > > test_cases
00:02:45 v #1390 > >     |> sort_result_list
00:02:45 v #1391 > >
00:02:45 v #1392 > > rotate_strings_tests ()
00:02:59 v #1393 > >
00:02:59 v #1394 > > ── [ 13.58s - stdout ] ─────────────────────────────────────────────────────────
00:02:59 v #1395 > > │
00:02:59 v #1396 > > │ ```
00:02:59 v #1397 > > │ 00:00:00 v #1 benchmark.run_all / { test_name =
00:02:59 v #1398 > > rotate_strings_tests; count = 2000000 }
00:02:59 v #1399 > > │
00:02:59 v #1400 > > │ 00:00:00 v #2 benchmark.run / { input_str = "abc" }
00:02:59 v #1401 > > │ 00:00:00 v #3 benchmark.run / solutions.map / { i = 1;
00:02:59 v #1402 > > test_name = F; time = 814 }
00:02:59 v #1403 > > │ 00:00:02 v #4 benchmark.run / solutions.map / { i = 2;
00:02:59 v #1404 > > test_name = FA; time = 989 }
00:02:59 v #1405 > > │
00:02:59 v #1406 > > │ 00:00:02 v #5 benchmark.run / { input_str = "abcde" }
00:02:59 v #1407 > > │ 00:00:03 v #6 benchmark.run / solutions.map / { i = 1;
00:02:59 v #1408 > > test_name = F; time = 836 }
00:02:59 v #1409 > > │ 00:00:04 v #7 benchmark.run / solutions.map / { i = 2;
00:02:59 v #1410 > > test_name = FA; time = 1014 }
00:02:59 v #1411 > > │
00:02:59 v #1412 > > │ 00:00:04 v #8 benchmark.run / { input_str = "abcdefghi"
00:02:59 v #1413 > > }
00:02:59 v #1414 > > │ 00:00:06 v #9 benchmark.run / solutions.map / { i = 1;
00:02:59 v #1415 > > test_name = F; time = 1401 }
00:02:59 v #1416 > > │ 00:00:08 v #10 benchmark.run / solutions.map / { i = 2;
00:02:59 v #1417 > > test_name = FA; time = 1762 }
00:02:59 v #1418 > > │
00:02:59 v #1419 > > │ 00:00:08 v #11 benchmark.run / { input_str = "abab" }
00:02:59 v #1420 > > │ 00:00:09 v #12 benchmark.run / solutions.map / { i = 1;
00:02:59 v #1421 > > test_name = F; time = 661 }
00:02:59 v #1422 > > │ 00:00:10 v #13 benchmark.run / solutions.map / { i = 2;
00:02:59 v #1423 > > test_name = FA; time = 838 }
00:02:59 v #1424 > > │
00:02:59 v #1425 > > │ 00:00:10 v #14 benchmark.run / { input_str = "aa" }
00:02:59 v #1426 > > │ 00:00:11 v #15 benchmark.run / solutions.map / { i = 1;
00:02:59 v #1427 > > test_name = F; time = 537 }
00:02:59 v #1428 > > │ 00:00:11 v #16 benchmark.run / solutions.map / { i = 2;
00:02:59 v #1429 > > test_name = FA; time = 630 }
00:02:59 v #1430 > > │
00:02:59 v #1431 > > │ 00:00:11 v #17 benchmark.run / { input_str = "z" }
00:02:59 v #1432 > > │ 00:00:12 v #18 benchmark.run / solutions.map / { i = 1;
00:02:59 v #1433 > > test_name = F; time = 107 }
00:02:59 v #1434 > > │ 00:00:12 v #19 benchmark.run / solutions.map / { i = 2;
00:02:59 v #1435 > > test_name = FA; time = 121 }
00:02:59 v #1436 > > │ ```
00:02:59 v #1437 > > │ input      	| expected
00:02:59 v #1438 > >
00:02:59 v #1439 > > | result
00:02:59 v #1440 > >
00:02:59 v #1441 > > | best
00:02:59 v #1442 > > │ ---        	| ---
00:02:59 v #1443 > >
00:02:59 v #1444 > > | ---
00:02:59 v #1445 > >
00:02:59 v #1446 > > | ---
00:02:59 v #1447 > > │ "abc"      	| "bca cab abc"
00:02:59 v #1448 > > | "bca cab abc"
00:02:59 v #1449 > > | 1, 814
00:02:59 v #1450 > > │ "abcde"    	| "bcdea cdeab deabc eabcd abcde"
00:02:59 v #1451 > > | "bcdea cdeab deabc eabcd abcde"
00:02:59 v #1452 > > | 1, 836
00:02:59 v #1453 > > │ "abcdefghi"	| "bcdefghia cdefghiab defghiabc efghiabcd
00:02:59 v #1454 > > fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi"	| "bcdefghia cdefghiab
00:02:59 v #1455 > > defghiabc efghiabcd fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi"	| 1, 1401
00:02:59 v #1456 > > │ "abab"     	| "baba abab baba abab"
00:02:59 v #1457 > > | "baba abab baba abab"
00:02:59 v #1458 > > | 1, 661
00:02:59 v #1459 > > │ "aa"       	| "aa aa"
00:02:59 v #1460 > >
00:02:59 v #1461 > > | "aa aa"
00:02:59 v #1462 > >
00:02:59 v #1463 > > | 1, 537
00:02:59 v #1464 > > │ "z"        	| "z"
00:02:59 v #1465 > >
00:02:59 v #1466 > > | "z"
00:02:59 v #1467 > >
00:02:59 v #1468 > > | 1, 107
00:02:59 v #1469 > > │ ```
00:02:59 v #1470 > > │ 00:00:12 v #20 benchmark.sort_result_list
00:02:59 v #1471 > > averages.iter / { i = 1; avg = 726 }
00:02:59 v #1472 > > │ 00:00:12 v #21 benchmark.sort_result_list
00:02:59 v #1473 > > averages.iter / { i = 2; avg = 892 }
00:02:59 v #1474 > > │ ```
00:02:59 v #1475 > > │
00:02:59 v #1476 > >
00:02:59 v #1477 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:59 v #1478 > > //// test
00:02:59 v #1479 > >
00:02:59 v #1480 > > // rotate_strings_tests ()
00:02:59 v #1481 > > ()
00:02:59 v #1482 > >
00:02:59 v #1483 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:59 v #1484 > > │ ## binary_search_tests
00:02:59 v #1485 > >
00:02:59 v #1486 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:59 v #1487 > > │ ```
00:02:59 v #1488 > > │ 02:19:29 verbose #1 benchmark.run_all / {count =
00:02:59 v #1489 > > 10000000; test_name = binary_search_tests}
00:02:59 v #1490 > > │
00:02:59 v #1491 > > │ 02:19:29 verbose #2 benchmark.run / {input_str =
00:02:59 v #1492 > > struct ([|1; 3; 4; 6; 8; 9; 11|], 6, 7)}
00:02:59 v #1493 > > │ 02:19:30 verbose #3 benchmark.run / solutions.map / {i
00:02:59 v #1494 > > = 1; test_name = semi_open_1; time = 662}
00:02:59 v #1495 > > │ 02:19:30 verbose #4 benchmark.run / solutions.map / {i
00:02:59 v #1496 > > = 2; test_name = closed_1; time = 619}
00:02:59 v #1497 > > │ 02:19:31 verbose #5 benchmark.run / solutions.map / {i
00:02:59 v #1498 > > = 3; test_name = semi_open_2; time = 644}
00:02:59 v #1499 > > │ 02:19:32 verbose #6 benchmark.run / solutions.map / {i
00:02:59 v #1500 > > = 4; test_name = closed_2; time = 610}
00:02:59 v #1501 > > │
00:02:59 v #1502 > > │ 02:19:32 verbose #7 benchmark.run / {input_str =
00:02:59 v #1503 > > struct ([|1; 3; 4; 6; 8; 9; 11|], 1, 7)}
00:02:59 v #1504 > > │ 02:19:33 verbose #8 benchmark.run / solutions.map / {i
00:02:59 v #1505 > > = 1; test_name = semi_open_1; time = 607}
00:02:59 v #1506 > > │ 02:19:33 verbose #9 benchmark.run / solutions.map / {i
00:02:59 v #1507 > > = 2; test_name = closed_1; time = 559}
00:02:59 v #1508 > > │ 02:19:34 verbose #10 benchmark.run / solutions.map
00:02:59 v #1509 > > {i = 3; test_name = semi_open_2; time = 612}
00:02:59 v #1510 > > │ 02:19:35 verbose #11 benchmark.run / solutions.map
00:02:59 v #1511 > > {i = 4; test_name = closed_2; time = 577}
00:02:59 v #1512 > > │
00:02:59 v #1513 > > │ 02:19:35 verbose #12 benchmark.run / {input_str =
00:02:59 v #1514 > > struct ([|1; 3; 4; 6; 8; 9; 11|], 11, 7)}
00:02:59 v #1515 > > │ 02:19:35 verbose #13 benchmark.run / solutions.map
00:02:59 v #1516 > > {i = 1; test_name = semi_open_1; time = 550}
00:02:59 v #1517 > > │ 02:19:36 verbose #14 benchmark.run / solutions.map
00:02:59 v #1518 > > {i = 2; test_name = closed_1; time = 580}
00:02:59 v #1519 > > │ 02:19:37 verbose #15 benchmark.run / solutions.map
00:02:59 v #1520 > > {i = 3; test_name = semi_open_2; time = 624}
00:02:59 v #1521 > > │ 02:19:37 verbose #16 benchmark.run / solutions.map
00:02:59 v #1522 > > {i = 4; test_name = closed_2; time = 590}
00:02:59 v #1523 > > │
00:02:59 v #1524 > > │ 02:19:37 verbose #17 benchmark.run / {input_str =
00:02:59 v #1525 > > struct ([|1; 3; 4; 6; 8; 9; 11|], 12, 7)}
00:02:59 v #1526 > > │ 02:19:38 verbose #18 benchmark.run / solutions.map
00:02:59 v #1527 > > {i = 1; test_name = semi_open_1; time = 574}
00:02:59 v #1528 > > │ 02:19:39 verbose #19 benchmark.run / solutions.map
00:02:59 v #1529 > > {i = 2; test_name = closed_1; time = 577}
00:02:59 v #1530 > > │ 02:19:39 verbose #20 benchmark.run / solutions.map
00:02:59 v #1531 > > {i = 3; test_name = semi_open_2; time = 582}
00:02:59 v #1532 > > │ 02:19:40 verbose #21 benchmark.run / solutions.map
00:02:59 v #1533 > > {i = 4; test_name = closed_2; time = 585}
00:02:59 v #1534 > > │
00:02:59 v #1535 > > │ 02:19:40 verbose #22 benchmark.run / {input_str =
00:02:59 v #1536 > > struct ([|1; 2; 3; 4...00; ...|], 60, 1000)}
00:02:59 v #1537 > > │ 02:19:41 verbose #23 benchmark.run / solutions.map
00:02:59 v #1538 > > {i = 1; test_name = semi_open_1; time = 610}
00:02:59 v #1539 > > │ 02:19:42 verbose #24 benchmark.run / solutions.map
00:02:59 v #1540 > > {i = 2; test_name = closed_1; time = 672}
00:02:59 v #1541 > > │ 02:19:42 verbose #25 benchmark.run / solutions.map
00:02:59 v #1542 > > {i = 3; test_name = semi_open_2; time = 636}
00:02:59 v #1543 > > │ 02:19:43 verbose #26 benchmark.run / solutions.map
00:02:59 v #1544 > > {i = 4; test_name = closed_2; time = 629}
00:02:59 v #1545 > > │
00:02:59 v #1546 > > │ 02:19:43 verbose #27 benchmark.run / {input_str =
00:02:59 v #1547 > > struct ([|1; 3; 4; 6; 8; 9; 11|], 6, 7)}
00:02:59 v #1548 > > │ 02:19:44 verbose #28 benchmark.run / solutions.map
00:02:59 v #1549 > > {i = 1; test_name = semi_open_1; time = 599}
00:02:59 v #1550 > > │ 02:19:44 verbose #29 benchmark.run / solutions.map
00:02:59 v #1551 > > {i = 2; test_name = closed_1; time = 561}
00:02:59 v #1552 > > │ 02:19:45 verbose #30 benchmark.run / solutions.map
00:02:59 v #1553 > > {i = 3; test_name = semi_open_2; time = 604}
00:02:59 v #1554 > > │ 02:19:46 verbose #31 benchmark.run / solutions.map
00:02:59 v #1555 > > {i = 4; test_name = closed_2; time = 573}
00:02:59 v #1556 > > │
00:02:59 v #1557 > > │ 02:19:46 verbose #32 benchmark.run / {input_str =
00:02:59 v #1558 > > struct ([|1; 3; 4; 6; 8; 9; 11|], 1, 7)}
00:02:59 v #1559 > > │ 02:19:47 verbose #33 benchmark.run / solutions.map
00:02:59 v #1560 > > {i = 1; test_name = semi_open_1; time = 635}
00:02:59 v #1561 > > │ 02:19:47 verbose #34 benchmark.run / solutions.map
00:02:59 v #1562 > > {i = 2; test_name = closed_1; time = 603}
00:02:59 v #1563 > > │ 02:19:48 verbose #35 benchmark.run / solutions.map
00:02:59 v #1564 > > {i = 3; test_name = semi_open_2; time = 644}
00:02:59 v #1565 > > │ 02:19:49 verbose #36 benchmark.run / solutions.map
00:02:59 v #1566 > > {i = 4; test_name = closed_2; time = 628}
00:02:59 v #1567 > > │
00:02:59 v #1568 > > │ 02:19:49 verbose #37 benchmark.run / {input_str =
00:02:59 v #1569 > > struct ([|1; 3; 4; 6; 8; 9; 11|], 11, 7)}
00:02:59 v #1570 > > │ 02:19:49 verbose #38 benchmark.run / solutions.map
00:02:59 v #1571 > > {i = 1; test_name = semi_open_1; time = 643}
00:02:59 v #1572 > > │ 02:19:50 verbose #39 benchmark.run / solutions.map
00:02:59 v #1573 > > {i = 2; test_name = closed_1; time = 606}
00:02:59 v #1574 > > │ 02:19:51 verbose #40 benchmark.run / solutions.map
00:02:59 v #1575 > > {i = 3; test_name = semi_open_2; time = 636}
00:02:59 v #1576 > > │ 02:19:52 verbose #41 benchmark.run / solutions.map
00:02:59 v #1577 > > {i = 4; test_name = closed_2; time = 624}
00:02:59 v #1578 > > │
00:02:59 v #1579 > > │ 02:19:52 verbose #42 benchmark.run / {input_str =
00:02:59 v #1580 > > struct ([|1; 3; 4; 6; 8; 9; 11|], 12, 7)}
00:02:59 v #1581 > > │ 02:19:52 verbose #43 benchmark.run / solutions.map
00:02:59 v #1582 > > {i = 1; test_name = semi_open_1; time = 689}
00:02:59 v #1583 > > │ 02:19:53 verbose #44 benchmark.run / solutions.map
00:02:59 v #1584 > > {i = 2; test_name = closed_1; time = 613}
00:02:59 v #1585 > > │ 02:19:54 verbose #45 benchmark.run / solutions.map
00:02:59 v #1586 > > {i = 3; test_name = semi_open_2; time = 623}
00:02:59 v #1587 > > │ 02:19:55 verbose #46 benchmark.run / solutions.map
00:02:59 v #1588 > > {i = 4; test_name = closed_2; time = 613}
00:02:59 v #1589 > > │
00:02:59 v #1590 > > │ 02:19:55 verbose #47 benchmark.run / {input_str =
00:02:59 v #1591 > > struct ([|1; 2; 3; 4...100; ...|], 60, 100)}
00:02:59 v #1592 > > │ 02:19:55 verbose #48 benchmark.run / solutions.map
00:02:59 v #1593 > > {i = 1; test_name = semi_open_1; time = 630}
00:02:59 v #1594 > > │ 02:19:56 verbose #49 benchmark.run / solutions.map
00:02:59 v #1595 > > {i = 2; test_name = closed_1; time = 633}
00:02:59 v #1596 > > │ 02:19:57 verbose #50 benchmark.run / solutions.map
00:02:59 v #1597 > > {i = 3; test_name = semi_open_2; time = 653}
00:02:59 v #1598 > > │ 02:19:58 verbose #51 benchmark.run / solutions.map
00:02:59 v #1599 > > {i = 4; test_name = closed_2; time = 646}
00:02:59 v #1600 > > │ ```
00:02:59 v #1601 > > │ input                                    	| expected	| result  	|
00:02:59 v #1602 > > best
00:02:59 v #1603 > > │ ---                                      	| ---     	| ---     	|
00:02:59 v #1604 > > ---
00:02:59 v #1605 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 6, 7)    	| US4_0 3 	| US4_0 3 	|
00:02:59 v #1606 > > 4, 610
00:02:59 v #1607 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 1, 7)    	| US4_0 0 	| US4_0 0 	|
00:02:59 v #1608 > > 2, 559
00:02:59 v #1609 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 11, 7)   	| US4_0 6 	| US4_0 6 	|
00:02:59 v #1610 > > 1, 550
00:02:59 v #1611 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 12, 7)   	| US4_1   	| US4_1   	|
00:02:59 v #1612 > > 1, 574
00:02:59 v #1613 > > │ struct ([1; 2; 3; 4...00; ...], 60, 1000)	| US4_0 59	| US4_0 59	|
00:02:59 v #1614 > > 1, 610
00:02:59 v #1615 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 6, 7)    	| US4_0 3 	| US4_0 3 	|
00:02:59 v #1616 > > 2, 561
00:02:59 v #1617 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 1, 7)    	| US4_0 0 	| US4_0 0 	|
00:02:59 v #1618 > > 2, 603
00:02:59 v #1619 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 11, 7)   	| US4_0 6 	| US4_0 6 	|
00:02:59 v #1620 > > 2, 606
00:02:59 v #1621 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 12, 7)   	| US4_1   	| US4_1   	|
00:02:59 v #1622 > > 2, 613
00:02:59 v #1623 > > │ struct ([1; 2; 3; 4...100; ...], 60, 100)	| US4_0 59	| US4_0 59	|
00:02:59 v #1624 > > 1, 630
00:02:59 v #1625 > > │ ```
00:02:59 v #1626 > > │ 02:19:58 verbose #52 benchmark.sort_result_list
00:02:59 v #1627 > > averages.iter / {avg = 602; i = 2}
00:02:59 v #1628 > > │ 02:19:58 verbose #53 benchmark.sort_result_list
00:02:59 v #1629 > > averages.iter / {avg = 607; i = 4}
00:02:59 v #1630 > > │ 02:19:58 verbose #54 benchmark.sort_result_list
00:02:59 v #1631 > > averages.iter / {avg = 619; i = 1}
00:02:59 v #1632 > > │ 02:19:58 verbose #55 benchmark.sort_result_list
00:02:59 v #1633 > > averages.iter / {avg = 625; i = 3}
00:02:59 v #1634 > > │ ```
00:02:59 v #1635 > >
00:02:59 v #1636 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:59 v #1637 > > //// test
00:02:59 v #1638 > > //// timeout=90000
00:02:59 v #1639 > >
00:02:59 v #1640 > > inl binary_search_semi_open_1 arr target left right =
00:02:59 v #1641 > >     inl rec body left right =
00:02:59 v #1642 > >         if left >= right
00:02:59 v #1643 > >         then None
00:02:59 v #1644 > >         else
00:02:59 v #1645 > >             inl mid = (left + right) / 2
00:02:59 v #1646 > >             inl item = index arr mid
00:02:59 v #1647 > >             if item = target
00:02:59 v #1648 > >             then Some mid
00:02:59 v #1649 > >             elif item < target
00:02:59 v #1650 > >             then loop (mid + 1) right
00:02:59 v #1651 > >             else loop left mid
00:02:59 v #1652 > >     and inl loop left right =
00:02:59 v #1653 > >         if var_is right |> not
00:02:59 v #1654 > >         then body left right
00:02:59 v #1655 > >         else
00:02:59 v #1656 > >             inl left = dyn left
00:02:59 v #1657 > >             join body left right
00:02:59 v #1658 > >     loop left right
00:02:59 v #1659 > >
00:02:59 v #1660 > > inl binary_search_closed_1 arr target left right =
00:02:59 v #1661 > >     inl rec body left right =
00:02:59 v #1662 > >         if left > right
00:02:59 v #1663 > >         then None
00:02:59 v #1664 > >         else
00:02:59 v #1665 > >             inl mid = (left + right) / 2
00:02:59 v #1666 > >             inl item = index arr mid
00:02:59 v #1667 > >             if item = target
00:02:59 v #1668 > >             then Some mid
00:02:59 v #1669 > >             elif item < target
00:02:59 v #1670 > >             then loop (mid + 1) right
00:02:59 v #1671 > >             else loop left (mid - 1)
00:02:59 v #1672 > >     and inl loop left right =
00:02:59 v #1673 > >         if var_is right |> not
00:02:59 v #1674 > >         then body left right
00:02:59 v #1675 > >         else
00:02:59 v #1676 > >             inl left = dyn left
00:02:59 v #1677 > >             join body left right
00:02:59 v #1678 > >     loop left right
00:02:59 v #1679 > >
00:02:59 v #1680 > > inl binary_search_semi_open_2 arr target left right =
00:02:59 v #1681 > >     let rec body left right =
00:02:59 v #1682 > >         if left >= right
00:02:59 v #1683 > >         then None
00:02:59 v #1684 > >         else
00:02:59 v #1685 > >             inl mid = (left + right) / 2
00:02:59 v #1686 > >             inl item = index arr mid
00:02:59 v #1687 > >             if item = target
00:02:59 v #1688 > >             then Some mid
00:02:59 v #1689 > >             elif item < target
00:02:59 v #1690 > >             then loop (mid + 1) right
00:02:59 v #1691 > >             else loop left mid
00:02:59 v #1692 > >     and inl loop left right = body left right
00:02:59 v #1693 > >     loop left right
00:02:59 v #1694 > >
00:02:59 v #1695 > > inl binary_search_closed_2 arr target left right =
00:02:59 v #1696 > >     let rec body left right =
00:02:59 v #1697 > >         if left > right
00:02:59 v #1698 > >         then None
00:02:59 v #1699 > >         else
00:02:59 v #1700 > >             inl mid = (left + right) / 2
00:02:59 v #1701 > >             inl item = index arr mid
00:02:59 v #1702 > >             if item = target
00:02:59 v #1703 > >             then Some mid
00:02:59 v #1704 > >             elif item < target
00:02:59 v #1705 > >             then loop (mid + 1) right
00:02:59 v #1706 > >             else loop left (mid - 1)
00:02:59 v #1707 > >     and inl loop left right = body left right
00:02:59 v #1708 > >     loop left right
00:02:59 v #1709 > >
00:02:59 v #1710 > > inl get_solutions () =
00:02:59 v #1711 > >     [[
00:02:59 v #1712 > >         "semi_open_1",
00:02:59 v #1713 > >         fun (arr, (target, len)) =>
00:02:59 v #1714 > >             binary_search_semi_open_1 arr target 0 len
00:02:59 v #1715 > >
00:02:59 v #1716 > >         "closed_1",
00:02:59 v #1717 > >         fun (arr, (target, len)) =>
00:02:59 v #1718 > >             binary_search_closed_1 arr target 0 (len - 1)
00:02:59 v #1719 > >
00:02:59 v #1720 > >         "semi_open_2",
00:02:59 v #1721 > >         fun (arr, (target, len)) =>
00:02:59 v #1722 > >             binary_search_semi_open_2 arr target 0 len
00:02:59 v #1723 > >
00:02:59 v #1724 > >         "closed_2",
00:02:59 v #1725 > >         fun (arr, (target, len)) =>
00:02:59 v #1726 > >             binary_search_closed_2 arr target 0 (len - 1)
00:02:59 v #1727 > >     ]]
00:02:59 v #1728 > >
00:02:59 v #1729 > > inl rec binary_search_tests () =
00:02:59 v #1730 > >     inl arr_with_len target len arr =
00:02:59 v #1731 > >         arr, (target, (len |> optionm'.default_with fun () => length arr))
00:02:59 v #1732 > >
00:02:59 v #1733 > >     inl test_cases = [[
00:02:59 v #1734 > >         (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 6 None), (Some 3i32)
00:02:59 v #1735 > >         (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 1 None), (Some 0i32)
00:02:59 v #1736 > >         (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 11 None), (Some 6i32)
00:02:59 v #1737 > >         (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 12 None), None
00:02:59 v #1738 > >         ((am'.init_series 1i32 1000 1 |> fun x => a x : _ int _) |> arr_with_len
00:02:59 v #1739 > > 60 None), (Some 59)
00:02:59 v #1740 > >
00:02:59 v #1741 > >         (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 6 (Some 7)), (Some
00:02:59 v #1742 > > 3i32)
00:02:59 v #1743 > >         (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 1 (Some 7)), (Some
00:02:59 v #1744 > > 0i32)
00:02:59 v #1745 > >         (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 11 (Some 7)), (Some
00:02:59 v #1746 > > 6i32)
00:02:59 v #1747 > >         (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 12 (Some 7)), None
00:02:59 v #1748 > >         ((am'.init_series 1i32 1000 1 |> fun x => a x : _ int _) |> arr_with_len
00:02:59 v #1749 > > 60 (Some 100)), (Some 59)
00:02:59 v #1750 > >     ]]
00:02:59 v #1751 > >
00:02:59 v #1752 > >     inl solutions = get_solutions ()
00:02:59 v #1753 > >
00:02:59 v #1754 > >     // inl is_fast () = true
00:02:59 v #1755 > >
00:02:59 v #1756 > >     inl count =
00:02:59 v #1757 > >         if is_fast ()
00:02:59 v #1758 > >         then 1000i32
00:02:59 v #1759 > >         else 10000000i32
00:02:59 v #1760 > >
00:02:59 v #1761 > >     run_all (reflection.nameof { binary_search_tests }) count solutions
00:02:59 v #1762 > > test_cases
00:02:59 v #1763 > >     |> sort_result_list
00:02:59 v #1764 > >
00:02:59 v #1765 > >
00:02:59 v #1766 > > let main () =
00:02:59 v #1767 > >     binary_search_tests ()
00:03:10 v #1768 > >
00:03:10 v #1769 > > ── [ 11.41s - stdout ] ─────────────────────────────────────────────────────────
00:03:10 v #1770 > > │
00:03:10 v #1771 > > │ ```
00:03:10 v #1772 > > │ 00:00:00 v #1 benchmark.run_all / { test_name =
00:03:10 v #1773 > > binary_search_tests; count = 10000000 }
00:03:10 v #1774 > > │
00:03:10 v #1775 > > │ 00:00:00 v #2 benchmark.run / { input_str = struct ([|1;
00:03:10 v #1776 > > 3; 4; 6; 8; 9; 11|], 6, 7) }
00:03:10 v #1777 > > │ 00:00:00 v #3 benchmark.run / solutions.map / { i = 1;
00:03:10 v #1778 > > test_name = semi_open_1; time = 166 }
00:03:10 v #1779 > > │ 00:00:00 v #4 benchmark.run / solutions.map / { i = 2;
00:03:10 v #1780 > > test_name = closed_1; time = 150 }
00:03:10 v #1781 > > │ 00:00:00 v #5 benchmark.run / solutions.map / { i = 3;
00:03:10 v #1782 > > test_name = semi_open_2; time = 147 }
00:03:10 v #1783 > > │ 00:00:01 v #6 benchmark.run / solutions.map / { i = 4;
00:03:10 v #1784 > > test_name = closed_2; time = 154 }
00:03:10 v #1785 > > │
00:03:10 v #1786 > > │ 00:00:01 v #7 benchmark.run / { input_str = struct ([|1;
00:03:10 v #1787 > > 3; 4; 6; 8; 9; 11|], 1, 7) }
00:03:10 v #1788 > > │ 00:00:01 v #8 benchmark.run / solutions.map / { i = 1;
00:03:10 v #1789 > > test_name = semi_open_1; time = 241 }
00:03:10 v #1790 > > │ 00:00:02 v #9 benchmark.run / solutions.map / { i = 2;
00:03:10 v #1791 > > test_name = closed_1; time = 257 }
00:03:10 v #1792 > > │ 00:00:02 v #10 benchmark.run / solutions.map / { i = 3;
00:03:10 v #1793 > > test_name = semi_open_2; time = 247 }
00:03:10 v #1794 > > │ 00:00:02 v #11 benchmark.run / solutions.map / { i = 4;
00:03:10 v #1795 > > test_name = closed_2; time = 252 }
00:03:10 v #1796 > > │
00:03:10 v #1797 > > │ 00:00:02 v #12 benchmark.run / { input_str = struct
00:03:10 v #1798 > > ([|1; 3; 4; 6; 8; 9; 11|], 11, 7) }
00:03:10 v #1799 > > │ 00:00:03 v #13 benchmark.run / solutions.map / { i = 1;
00:03:10 v #1800 > > test_name = semi_open_1; time = 265 }
00:03:10 v #1801 > > │ 00:00:03 v #14 benchmark.run / solutions.map / { i = 2;
00:03:10 v #1802 > > test_name = closed_1; time = 111 }
00:03:10 v #1803 > > │ 00:00:03 v #15 benchmark.run / solutions.map / { i = 3;
00:03:10 v #1804 > > test_name = semi_open_2; time = 85 }
00:03:10 v #1805 > > │ 00:00:03 v #16 benchmark.run / solutions.map / { i = 4;
00:03:10 v #1806 > > test_name = closed_2; time = 88 }
00:03:10 v #1807 > > │
00:03:10 v #1808 > > │ 00:00:03 v #17 benchmark.run / { input_str = struct
00:03:10 v #1809 > > ([|1; 3; 4; 6; 8; 9; 11|], 12, 7) }
00:03:10 v #1810 > > │ 00:00:04 v #18 benchmark.run / solutions.map / { i = 1;
00:03:10 v #1811 > > test_name = semi_open_1; time = 89 }
00:03:10 v #1812 > > │ 00:00:04 v #19 benchmark.run / solutions.map / { i = 2;
00:03:10 v #1813 > > test_name = closed_1; time = 87 }
00:03:10 v #1814 > > │ 00:00:04 v #20 benchmark.run / solutions.map / { i = 3;
00:03:10 v #1815 > > test_name = semi_open_2; time = 86 }
00:03:10 v #1816 > > │ 00:00:04 v #21 benchmark.run / solutions.map / { i = 4;
00:03:10 v #1817 > > test_name = closed_2; time = 83 }
00:03:10 v #1818 > > │
00:03:10 v #1819 > > │ 00:00:04 v #22 benchmark.run / { input_str = struct
00:03:10 v #1820 > > ([|1; 2; 3; 4...00; ...|], 60, 1000) }
00:03:10 v #1821 > > │ 00:00:05 v #23 benchmark.run / solutions.map / { i = 1;
00:03:10 v #1822 > > test_name = semi_open_1; time = 110 }
00:03:10 v #1823 > > │ 00:00:05 v #24 benchmark.run / solutions.map / { i = 2;
00:03:10 v #1824 > > test_name = closed_1; time = 118 }
00:03:10 v #1825 > > │ 00:00:05 v #25 benchmark.run / solutions.map / { i = 3;
00:03:10 v #1826 > > test_name = semi_open_2; time = 108 }
00:03:10 v #1827 > > │ 00:00:05 v #26 benchmark.run / solutions.map / { i = 4;
00:03:10 v #1828 > > test_name = closed_2; time = 113 }
00:03:10 v #1829 > > │
00:03:10 v #1830 > > │ 00:00:05 v #27 benchmark.run / { input_str = struct
00:03:10 v #1831 > > ([|1; 3; 4; 6; 8; 9; 11|], 6, 7) }
00:03:10 v #1832 > > │ 00:00:06 v #28 benchmark.run / solutions.map / { i = 1;
00:03:10 v #1833 > > test_name = semi_open_1; time = 72 }
00:03:10 v #1834 > > │ 00:00:06 v #29 benchmark.run / solutions.map / { i = 2;
00:03:10 v #1835 > > test_name = closed_1; time = 73 }
00:03:10 v #1836 > > │ 00:00:06 v #30 benchmark.run / solutions.map / { i = 3;
00:03:10 v #1837 > > test_name = semi_open_2; time = 69 }
00:03:10 v #1838 > > │ 00:00:06 v #31 benchmark.run / solutions.map / { i = 4;
00:03:10 v #1839 > > test_name = closed_2; time = 70 }
00:03:10 v #1840 > > │
00:03:10 v #1841 > > │ 00:00:06 v #32 benchmark.run / { input_str = struct
00:03:10 v #1842 > > ([|1; 3; 4; 6; 8; 9; 11|], 1, 7) }
00:03:10 v #1843 > > │ 00:00:06 v #33 benchmark.run / solutions.map / { i = 1;
00:03:10 v #1844 > > test_name = semi_open_1; time = 81 }
00:03:10 v #1845 > > │ 00:00:07 v #34 benchmark.run / solutions.map / { i = 2;
00:03:10 v #1846 > > test_name = closed_1; time = 87 }
00:03:10 v #1847 > > │ 00:00:07 v #35 benchmark.run / solutions.map / { i = 3;
00:03:10 v #1848 > > test_name = semi_open_2; time = 79 }
00:03:10 v #1849 > > │ 00:00:07 v #36 benchmark.run / solutions.map / { i = 4;
00:03:10 v #1850 > > test_name = closed_2; time = 85 }
00:03:10 v #1851 > > │
00:03:10 v #1852 > > │ 00:00:07 v #37 benchmark.run / { input_str = struct
00:03:10 v #1853 > > ([|1; 3; 4; 6; 8; 9; 11|], 11, 7) }
00:03:10 v #1854 > > │ 00:00:07 v #38 benchmark.run / solutions.map / { i = 1;
00:03:10 v #1855 > > test_name = semi_open_1; time = 83 }
00:03:10 v #1856 > > │ 00:00:08 v #39 benchmark.run / solutions.map / { i = 2;
00:03:10 v #1857 > > test_name = closed_1; time = 86 }
00:03:10 v #1858 > > │ 00:00:08 v #40 benchmark.run / solutions.map / { i = 3;
00:03:10 v #1859 > > test_name = semi_open_2; time = 83 }
00:03:10 v #1860 > > │ 00:00:08 v #41 benchmark.run / solutions.map / { i = 4;
00:03:10 v #1861 > > test_name = closed_2; time = 86 }
00:03:10 v #1862 > > │
00:03:10 v #1863 > > │ 00:00:08 v #42 benchmark.run / { input_str = struct
00:03:10 v #1864 > > ([|1; 3; 4; 6; 8; 9; 11|], 12, 7) }
00:03:10 v #1865 > > │ 00:00:08 v #43 benchmark.run / solutions.map / { i = 1;
00:03:10 v #1866 > > test_name = semi_open_1; time = 87 }
00:03:10 v #1867 > > │ 00:00:09 v #44 benchmark.run / solutions.map / { i = 2;
00:03:10 v #1868 > > test_name = closed_1; time = 86 }
00:03:10 v #1869 > > │ 00:00:09 v #45 benchmark.run / solutions.map / { i = 3;
00:03:10 v #1870 > > test_name = semi_open_2; time = 87 }
00:03:10 v #1871 > > │ 00:00:09 v #46 benchmark.run / solutions.map / { i = 4;
00:03:10 v #1872 > > test_name = closed_2; time = 85 }
00:03:10 v #1873 > > │
00:03:10 v #1874 > > │ 00:00:09 v #47 benchmark.run / { input_str = struct
00:03:10 v #1875 > > ([|1; 2; 3; 4...100; ...|], 60, 100) }
00:03:10 v #1876 > > │ 00:00:09 v #48 benchmark.run / solutions.map / { i = 1;
00:03:10 v #1877 > > test_name = semi_open_1; time = 102 }
00:03:10 v #1878 > > │ 00:00:09 v #49 benchmark.run / solutions.map / { i = 2;
00:03:10 v #1879 > > test_name = closed_1; time = 105 }
00:03:10 v #1880 > > │ 00:00:10 v #50 benchmark.run / solutions.map / { i = 3;
00:03:10 v #1881 > > test_name = semi_open_2; time = 105 }
00:03:10 v #1882 > > │ 00:00:10 v #51 benchmark.run / solutions.map / { i = 4;
00:03:10 v #1883 > > test_name = closed_2; time = 105 }
00:03:10 v #1884 > > │ ```
00:03:10 v #1885 > > │ input                                    	| expected	| result  	|
00:03:10 v #1886 > > best
00:03:10 v #1887 > > │ ---                                      	| ---     	| ---     	|
00:03:10 v #1888 > > ---
00:03:10 v #1889 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 6, 7)    	| US6_0 3 	| US6_0 3 	|
00:03:10 v #1890 > > 3, 147
00:03:10 v #1891 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 1, 7)    	| US6_0 0 	| US6_0 0 	|
00:03:10 v #1892 > > 1, 241
00:03:10 v #1893 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 11, 7)   	| US6_0 6 	| US6_0 6 	|
00:03:10 v #1894 > > 3, 85
00:03:10 v #1895 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 12, 7)   	| US6_1   	| US6_1   	|
00:03:10 v #1896 > > 4, 83
00:03:10 v #1897 > > │ struct ([1; 2; 3; 4...00; ...], 60, 1000)	| US6_0 59	| US6_0 59	|
00:03:10 v #1898 > > 3, 108
00:03:10 v #1899 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 6, 7)    	| US6_0 3 	| US6_0 3 	|
00:03:10 v #1900 > > 3, 69
00:03:10 v #1901 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 1, 7)    	| US6_0 0 	| US6_0 0 	|
00:03:10 v #1902 > > 3, 79
00:03:10 v #1903 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 11, 7)   	| US6_0 6 	| US6_0 6 	|
00:03:10 v #1904 > > 1, 83
00:03:10 v #1905 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 12, 7)   	| US6_1   	| US6_1   	|
00:03:10 v #1906 > > 4, 85
00:03:10 v #1907 > > │ struct ([1; 2; 3; 4...100; ...], 60, 100)	| US6_0 59	| US6_0 59	|
00:03:10 v #1908 > > 1, 102
00:03:10 v #1909 > > │ ```
00:03:10 v #1910 > > │ 00:00:10 v #52 benchmark.sort_result_list
00:03:10 v #1911 > > averages.iter / { i = 3; avg = 109 }
00:03:10 v #1912 > > │ 00:00:10 v #53 benchmark.sort_result_list
00:03:10 v #1913 > > averages.iter / { i = 4; avg = 112 }
00:03:10 v #1914 > > │ 00:00:10 v #54 benchmark.sort_result_list
00:03:10 v #1915 > > averages.iter / { i = 2; avg = 116 }
00:03:10 v #1916 > > │ 00:00:10 v #55 benchmark.sort_result_list
00:03:10 v #1917 > > averages.iter / { i = 1; avg = 129 }
00:03:10 v #1918 > > │ ```
00:03:10 v #1919 > > │
00:03:10 v #1920 > >
00:03:10 v #1921 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:10 v #1922 > > │ ## returnLettersWithOddCountTests
00:03:10 v #1923 > >
00:03:10 v #1924 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:10 v #1925 > > │ Test: ReturnLettersWithOddCount
00:03:10 v #1926 > > │
00:03:10 v #1927 > > │ Solution: 1
00:03:10 v #1928 > > │ Test case 1. A. Time: 645L
00:03:10 v #1929 > > │
00:03:10 v #1930 > > │ Solution: 2
00:03:10 v #1931 > > │ Test case 1. A. Time: 663L
00:03:10 v #1932 > > │
00:03:10 v #1933 > > │ Solution: 3
00:03:10 v #1934 > > │ Test case 1. A. Time: 680L
00:03:10 v #1935 > > │
00:03:10 v #1936 > > │ Solution: 9
00:03:10 v #1937 > > │ Test case 1. A. Time: 730L
00:03:10 v #1938 > > │
00:03:10 v #1939 > > │ Solution: 10
00:03:10 v #1940 > > │ Test case 1. A. Time: 815L
00:03:10 v #1941 > > │
00:03:10 v #1942 > > │ Input   | Expected        | Result          | Best
00:03:10 v #1943 > > │ ---     | ---             | ---             | ---
00:03:10 v #1944 > > │ 1       | a               | a               | (1, 645)
00:03:10 v #1945 > > │ 2       | ba              | ba              | (1, 663)
00:03:10 v #1946 > > │ 3       | aaa             | aaa             | (1, 680)
00:03:10 v #1947 > > │ 9       | aaaaaaaaa       | aaaaaaaaa       | (1, 730)
00:03:10 v #1948 > > │ 10      | baaaaaaaaa      | baaaaaaaaa      | (1, 815)
00:03:10 v #1949 > > │
00:03:10 v #1950 > > │ Averages
00:03:10 v #1951 > > │ Test case 1. Average Time: 706L
00:03:10 v #1952 > > │
00:03:10 v #1953 > > │ Ranking
00:03:10 v #1954 > > │ Test case 1. Average Time: 706L
00:03:10 v #1955 > >
00:03:10 v #1956 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:03:10 v #1957 > > //// test
00:03:10 v #1958 > >
00:03:10 v #1959 > > let solutions = [[
00:03:10 v #1960 > >     "A",
00:03:10 v #1961 > >     fun n ->
00:03:10 v #1962 > >         let mutable _builder = StringBuilder (new string('a', n))
00:03:10 v #1963 > >         if n % 2 = 0 then
00:03:10 v #1964 > >             _builder.[[0]] <- 'b'
00:03:10 v #1965 > >
00:03:10 v #1966 > >         _builder.ToString ()
00:03:10 v #1967 > > ]]
00:03:10 v #1968 > > let testCases = seq {
00:03:10 v #1969 > >     1, "a"
00:03:10 v #1970 > >     2, "ba"
00:03:10 v #1971 > >     3, "aaa"
00:03:10 v #1972 > >     9, "aaaaaaaaa"
00:03:10 v #1973 > >     10, "baaaaaaaaa"
00:03:10 v #1974 > > }
00:03:10 v #1975 > > let rec returnLettersWithOddCountTests =
00:03:10 v #1976 > >     runAll (nameof returnLettersWithOddCountTests) _count solutions testCases
00:03:10 v #1977 > > returnLettersWithOddCountTests
00:03:10 v #1978 > > |> sortResultList
00:03:13 v #1979 > >
00:03:13 v #1980 > > ── [ 2.61s - stdout ] ──────────────────────────────────────────────────────────
00:03:13 v #1981 > > │
00:03:13 v #1982 > > │
00:03:13 v #1983 > > │ Test: returnLettersWithOddCountTests
00:03:13 v #1984 > > │
00:03:13 v #1985 > > │ Solution: 1
00:03:13 v #1986 > > │ Test case 1. A. Time: 347L
00:03:13 v #1987 > > │
00:03:13 v #1988 > > │ Solution: 2
00:03:13 v #1989 > > │ Test case 1. A. Time: 357L
00:03:13 v #1990 > > │
00:03:13 v #1991 > > │ Solution: 3
00:03:13 v #1992 > > │ Test case 1. A. Time: 345L
00:03:13 v #1993 > > │
00:03:13 v #1994 > > │ Solution: 9
00:03:13 v #1995 > > │ Test case 1. A. Time: 359L
00:03:13 v #1996 > > │
00:03:13 v #1997 > > │ Solution: 10
00:03:13 v #1998 > > │ Test case 1. A. Time: 331L
00:03:13 v #1999 > > │
00:03:13 v #2000 > > │ Input	| Expected  	| Result    	| Best
00:03:13 v #2001 > > │ ---  	| ---       	| ---       	| ---
00:03:13 v #2002 > > │ 1    	| a         	| a         	| (1, 347)
00:03:13 v #2003 > > │ 2    	| ba        	| ba        	| (1, 357)
00:03:13 v #2004 > > │ 3    	| aaa       	| aaa       	| (1, 345)
00:03:13 v #2005 > > │ 9    	| aaaaaaaaa 	| aaaaaaaaa 	| (1, 359)
00:03:13 v #2006 > > │ 10   	| baaaaaaaaa	| baaaaaaaaa	| (1, 331)
00:03:13 v #2007 > > │
00:03:13 v #2008 > > │ Average Ranking
00:03:13 v #2009 > > │ Test case 1. Average Time: 347L
00:03:13 v #2010 > > │
00:03:13 v #2011 > >
00:03:13 v #2012 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:13 v #2013 > > │ ## hasAnyPairCloseToEachotherTests
00:03:13 v #2014 > >
00:03:13 v #2015 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:13 v #2016 > > │ Test: HasAnyPairCloseToEachother
00:03:13 v #2017 > > │
00:03:13 v #2018 > > │ Solution: 0
00:03:13 v #2019 > > │ Test case 1. A. Time: 137L
00:03:13 v #2020 > > │
00:03:13 v #2021 > > │ Solution: 1,2
00:03:13 v #2022 > > │ Test case 1. A. Time: 186L
00:03:13 v #2023 > > │
00:03:13 v #2024 > > │ Solution: 3,5
00:03:13 v #2025 > > │ Test case 1. A. Time: 206L
00:03:13 v #2026 > > │
00:03:13 v #2027 > > │ Solution: 3,4,6
00:03:13 v #2028 > > │ Test case 1. A. Time: 149L
00:03:13 v #2029 > > │
00:03:13 v #2030 > > │ Solution: 2,4,6
00:03:13 v #2031 > > │ Test case 1. A. Time: 150L
00:03:13 v #2032 > > │
00:03:13 v #2033 > > │ Input   | Expected        | Result  | Best
00:03:13 v #2034 > > │ ---     | ---             | ---     | ---
00:03:13 v #2035 > > │ 0       | False           | False   | (1, 137)
00:03:13 v #2036 > > │ 1,2     | True            | True    | (1, 186)
00:03:13 v #2037 > > │ 3,5     | False           | False   | (1, 206)
00:03:13 v #2038 > > │ 3,4,6   | True            | True    | (1, 149)
00:03:13 v #2039 > > │ 2,4,6   | False           | False   | (1, 150)
00:03:13 v #2040 > > │
00:03:13 v #2041 > > │ Averages
00:03:13 v #2042 > > │ Test case 1. Average Time: 165L
00:03:13 v #2043 > > │
00:03:13 v #2044 > > │ Ranking
00:03:13 v #2045 > > │ Test case 1. Average Time: 165L
00:03:13 v #2046 > >
00:03:13 v #2047 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:03:13 v #2048 > > //// test
00:03:13 v #2049 > >
00:03:13 v #2050 > > let solutions = [[
00:03:13 v #2051 > >     "A",
00:03:13 v #2052 > >     fun (a: int[[]]) ->
00:03:13 v #2053 > >         let indices = System.Linq.Enumerable.Range(0, a.Length) |>
00:03:13 v #2054 > > System.Linq.Enumerable.ToArray
00:03:13 v #2055 > >         System.Array.Sort (a, indices)
00:03:13 v #2056 > >
00:03:13 v #2057 > >         indices
00:03:13 v #2058 > >         |> Array.take (a.Length - 1)
00:03:13 v #2059 > >         |> Array.exists (fun i -> a.[[i + 1]] - a.[[i]] = 1)
00:03:13 v #2060 > > ]]
00:03:13 v #2061 > > let testCases = seq {
00:03:13 v #2062 > >     [[| 0 |]], false
00:03:13 v #2063 > >     [[| 1; 2 |]], true
00:03:13 v #2064 > >     [[| 3; 5 |]], false
00:03:13 v #2065 > >     [[| 3; 4; 6 |]], true
00:03:13 v #2066 > >     [[| 2; 4; 6 |]], false
00:03:13 v #2067 > > }
00:03:13 v #2068 > > let rec hasAnyPairCloseToEachotherTests =
00:03:13 v #2069 > >     runAll (nameof hasAnyPairCloseToEachotherTests) _count solutions testCases
00:03:13 v #2070 > > hasAnyPairCloseToEachotherTests
00:03:13 v #2071 > > |> sortResultList
00:03:14 v #2072 > >
00:03:14 v #2073 > > ── [ 1.28s - stdout ] ──────────────────────────────────────────────────────────
00:03:14 v #2074 > > │
00:03:14 v #2075 > > │
00:03:14 v #2076 > > │ Test: hasAnyPairCloseToEachotherTests
00:03:14 v #2077 > > │
00:03:14 v #2078 > > │ Solution: 0
00:03:14 v #2079 > > │ Test case 1. A. Time: 153L
00:03:14 v #2080 > > │
00:03:14 v #2081 > > │ Solution: 1,2
00:03:14 v #2082 > > │ Test case 1. A. Time: 112L
00:03:14 v #2083 > > │
00:03:14 v #2084 > > │ Solution: 3,5
00:03:14 v #2085 > > │ Test case 1. A. Time: 59L
00:03:14 v #2086 > > │
00:03:14 v #2087 > > │ Solution: 3,4,6
00:03:14 v #2088 > > │ Test case 1. A. Time: 66L
00:03:14 v #2089 > > │
00:03:14 v #2090 > > │ Solution: 2,4,6
00:03:14 v #2091 > > │ Test case 1. A. Time: 64L
00:03:14 v #2092 > > │
00:03:14 v #2093 > > │ Input	| Expected	| Result	| Best
00:03:14 v #2094 > > │ ---  	| ---     	| ---   	| ---
00:03:14 v #2095 > > │ 0    	| False   	| False 	| (1, 153)
00:03:14 v #2096 > > │ 1,2  	| True    	| True  	| (1, 112)
00:03:14 v #2097 > > │ 3,5  	| False   	| False 	| (1, 59)
00:03:14 v #2098 > > │ 3,4,6	| True    	| True  	| (1, 66)
00:03:14 v #2099 > > │ 2,4,6	| False   	| False 	| (1, 64)
00:03:14 v #2100 > > │
00:03:14 v #2101 > > │ Average Ranking
00:03:14 v #2102 > > │ Test case 1. Average Time: 90L
00:03:14 v #2103 > > │
00:03:14 v #2104 > 00:03:13 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 85828 }
00:03:14 v #2105 > 00:03:13 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/apps/perf/Perf.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/perf/Perf.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:03:15 v #2106 > 00:03:14 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/perf/Perf.dib.ipynb to html
00:03:15 v #2107 > 00:03:14 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:03:15 v #2108 > 00:03:14 v #7 !   validate(nb)
00:03:15 v #2109 > 00:03:14 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:03:15 v #2110 > 00:03:14 v #9 !   return _pygments_highlight(
00:03:16 v #2111 > 00:03:15 v #10 ! [NbConvertApp] Writing 458115 bytes to /home/runner/work/polyglot/polyglot/apps/perf/Perf.dib.html
00:03:16 v #2112 > 00:03:15 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 890 }
00:03:16 v #2113 > 00:03:15 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 890 }
00:03:16 v #2114 > 00:03:15 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/perf/Perf.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/perf/Perf.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:03:16 v #2115 > 00:03:15 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:03:16 v #2116 > 00:03:15 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:03:16 v #2117 > 00:03:15 d #16 spiral.run / dib / { exit_code = 0; result_length = 86777 }
00:03:16 d #2118 runtime.execute_with_options_async / { exit_code = 0; output_length = 93594 }
00:03:16 d #3 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path Perf.dib --retries 3
00:03:16 v #30 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 d #1 writeDibCode / output: Fs / path: Perf.dib
00:00:00 d #2 parseDibCode / output: Fs / file: Perf.dib
In [ ]:
{ pwsh ../apps/dir-tree-html/build.ps1 } | Invoke-Block
00:00:00 v #1 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"; options = { command = dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = Some <fun:compiler@87-4>; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:00:00 v #2 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #2 > 00:00:00 d #1 pwd: /home/runner/work/polyglot/polyglot
00:00:00 v #3 > 00:00:00 d #2 dllPath: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release
00:00:00 v #4 > 00:00:00 d #3 targetDir: /home/runner/work/polyglot/polyglot/target/spiral_Eval
00:00:00 v #3 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #4 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #5 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #6 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #7 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #8 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #9 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #10 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #11 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #12 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #13 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #14 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #15 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #16 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #17 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #18 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #19 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #20 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #21 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #22 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #23 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #24 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #25 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #5 > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:00 v #26 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #27 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #28 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:01 v #1 Supervisor.sendJson / port: 13805 / json: {"Ping":true} / result:
00:00:01 v #2 Supervisor.awaitCompiler / Ping / result: 'Some null' / port: 13805 / retry: 1
00:00:01 v #6 > Server bound to: http://localhost:13805
00:00:01 d #7 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path DirTreeHtml.dib"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path DirTreeHtml.dib; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:01 v #8 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "DirTreeHtml.dib"])) }
00:00:01 v #9 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/apps/dir-tree-html/DirTreeHtml.dib", "--output-path", "/home/runner/work/polyglot/polyglot/apps/dir-tree-html/DirTreeHtml.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/dir-tree-html/DirTreeHtml.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/dir-tree-html/DirTreeHtml.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:00:02 v #10 > >
00:00:02 v #11 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:02 v #12 > > │ # DirTreeHtml (Polyglot)
00:00:05 v #13 > >
00:00:05 v #14 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:05 v #15 > > #r
00:00:05 v #16 > > @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan
00:00:05 v #17 > > dard2.1/FSharp.Control.AsyncSeq.dll"
00:00:05 v #18 > > #r
00:00:05 v #19 > > @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6.
00:00:05 v #20 > > 0/System.Reactive.dll"
00:00:05 v #21 > > #r
00:00:05 v #22 > > @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib
00:00:05 v #23 > > netstandard2.0/System.Reactive.Linq.dll"
00:00:05 v #24 > > #r
00:00:05 v #25 > > @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll"
00:00:05 v #26 > > #r
00:00:05 v #27 > > @"../../../../../../../.nuget/packages/falco.markup/1.1.1/lib/netstandard2.0/Fal
00:00:05 v #28 > > co.Markup.dll"
00:00:15 v #29 > >
00:00:15 v #30 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:15 v #31 > > #if !INTERACTIVE
00:00:15 v #32 > > open Lib
00:00:15 v #33 > > #endif
00:00:15 v #34 > >
00:00:15 v #35 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:15 v #36 > > open SpiralFileSystem.Operators
00:00:15 v #37 > > open Falco.Markup
00:00:15 v #38 > >
00:00:15 v #39 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:15 v #40 > > type FileSystemNode =
00:00:15 v #41 > >     | File of string * string * int64
00:00:15 v #42 > >     | Folder of string * string * FileSystemNode list
00:00:15 v #43 > >     | Root of FileSystemNode list
00:00:15 v #44 > >
00:00:15 v #45 > > let rec scanDirectory isRoot (basePath : string) (path : string) =
00:00:15 v #46 > >     let relativePath =
00:00:15 v #47 > >         path
00:00:15 v #48 > >         |> SpiralSm.replace basePath ""
00:00:15 v #49 > >         |> SpiralSm.replace "\\" "/"
00:00:15 v #50 > >         |> SpiralSm.replace "//" "/"
00:00:15 v #51 > >         |> SpiralSm.trim_start [[| '/' |]]
00:00:15 v #52 > >
00:00:15 v #53 > >     let directories =
00:00:15 v #54 > >         path
00:00:15 v #55 > >         |> System.IO.Directory.GetDirectories
00:00:15 v #56 > >         |> Array.toList
00:00:15 v #57 > >         |> List.sort
00:00:15 v #58 > >         |> List.map (scanDirectory false basePath)
00:00:15 v #59 > >     let files =
00:00:15 v #60 > >         path
00:00:15 v #61 > >         |> System.IO.Directory.GetFiles
00:00:15 v #62 > >         |> Array.toList
00:00:15 v #63 > >         |> List.sort
00:00:15 v #64 > >         |> List.map (fun f -> File (System.IO.Path.GetFileName f, relativePath,
00:00:15 v #65 > > System.IO.FileInfo(f).Length))
00:00:15 v #66 > >
00:00:15 v #67 > >     let children = directories @ files
00:00:15 v #68 > >     if isRoot
00:00:15 v #69 > >     then Root children
00:00:15 v #70 > >     else Folder (path |> System.IO.Path.GetFileName, relativePath, children)
00:00:15 v #71 > >
00:00:15 v #72 > > let rec generateHtml fsNode =
00:00:15 v #73 > >     let sizeLabel size =
00:00:15 v #74 > >         match float size with
00:00:15 v #75 > >         | size when size > 1024.0 * 1024.0 -> $"%.2f{size / 1024.0 / 1024.0} MB"
00:00:15 v #76 > >         | size when size > 1024.0 -> $"%.2f{size / 1024.0} KB"
00:00:15 v #77 > >         | size -> $"%.2f{size} B"
00:00:15 v #78 > >     match fsNode with
00:00:15 v #79 > >     | File (fileName, relativePath, size) ->
00:00:15 v #80 > >         Elem.div [[]] [[
00:00:15 v #81 > >             Text.raw "&#128196; "
00:00:15 v #82 > >             Elem.a [[
00:00:15 v #83 > >                 Attr.href $"""{relativePath}{if relativePath = "" then "" else
00:00:15 v #84 > > "/"}{fileName}"""
00:00:15 v #85 > >             ]] [[
00:00:15 v #86 > >                 Text.raw fileName
00:00:15 v #87 > >             ]]
00:00:15 v #88 > >             Elem.span [[]] [[
00:00:15 v #89 > >                 Text.raw $" ({size |> sizeLabel})"
00:00:15 v #90 > >             ]]
00:00:15 v #91 > >         ]]
00:00:15 v #92 > >     | Folder (folderName, relativePath, children) ->
00:00:15 v #93 > >         let size =
00:00:15 v #94 > >             let rec loop children =
00:00:15 v #95 > >                 children
00:00:15 v #96 > >                 |> List.sumBy (function
00:00:15 v #97 > >                     | File (_, _, size) -> size
00:00:15 v #98 > >                     | Folder (_, _, children)
00:00:15 v #99 > >                     | Root children -> loop children
00:00:15 v #100 > >                 )
00:00:15 v #101 > >             loop children
00:00:15 v #102 > >         Elem.details [[
00:00:15 v #103 > >             Attr.open' "true"
00:00:15 v #104 > >         ]] [[
00:00:15 v #105 > >             Elem.summary [[]] [[
00:00:15 v #106 > >                 Text.raw "&#128194; "
00:00:15 v #107 > >                 Elem.a [[
00:00:15 v #108 > >                     Attr.href relativePath
00:00:15 v #109 > >                 ]] [[
00:00:15 v #110 > >                     Text.raw folderName
00:00:15 v #111 > >                 ]]
00:00:15 v #112 > >                 Elem.span [[]] [[
00:00:15 v #113 > >                     Text.raw $" ({size |> sizeLabel})"
00:00:15 v #114 > >                 ]]
00:00:15 v #115 > >             ]]
00:00:15 v #116 > >             Elem.div [[]] [[
00:00:15 v #117 > >                 yield! children |> List.map generateHtml
00:00:15 v #118 > >             ]]
00:00:15 v #119 > >         ]]
00:00:15 v #120 > >     | Root children ->
00:00:15 v #121 > >         Elem.div [[]] [[
00:00:15 v #122 > >             yield! children |> List.map generateHtml
00:00:15 v #123 > >         ]]
00:00:15 v #124 > >
00:00:15 v #125 > > let generateHtmlForFileSystem root =
00:00:15 v #126 > >     $"""<!DOCTYPE html>
00:00:15 v #127 > > <html lang="en">
00:00:15 v #128 > > <head>
00:00:15 v #129 > >   <meta charset="UTF-8">
00:00:15 v #130 > >   <style>
00:00:15 v #131 > > body {{
00:00:15 v #132 > >     background-color: #222;
00:00:15 v #133 > >     color: #ccc;
00:00:15 v #134 > > }}
00:00:15 v #135 > > a {{
00:00:15 v #136 > >   color: #777;
00:00:15 v #137 > >   font-size: 15px;
00:00:15 v #138 > > }}
00:00:15 v #139 > > span {{
00:00:15 v #140 > >   font-size: 11px;
00:00:15 v #141 > > }}
00:00:15 v #142 > > div > div {{
00:00:15 v #143 > >   padding-left: 10px;
00:00:15 v #144 > > }}
00:00:15 v #145 > > details > div {{
00:00:15 v #146 > >   padding-left: 19px;
00:00:15 v #147 > > }}
00:00:15 v #148 > >   </style>
00:00:15 v #149 > > </head>
00:00:15 v #150 > > <body>
00:00:15 v #151 > >   {root |> generateHtml |> renderNode}
00:00:15 v #152 > > </body>
00:00:15 v #153 > > </html>
00:00:15 v #154 > > """
00:00:16 v #155 > >
00:00:16 v #156 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:16 v #157 > > //// test
00:00:16 v #158 > >
00:00:16 v #159 > > let expected = """<!DOCTYPE html>
00:00:16 v #160 > > <html lang="en">
00:00:16 v #161 > > <head>
00:00:16 v #162 > >   <meta charset="UTF-8">
00:00:16 v #163 > >   <style>
00:00:16 v #164 > > body {
00:00:16 v #165 > >     background-color: #222;
00:00:16 v #166 > >     color: #ccc;
00:00:16 v #167 > > }
00:00:16 v #168 > > a {
00:00:16 v #169 > >   color: #777;
00:00:16 v #170 > >   font-size: 15px;
00:00:16 v #171 > > }
00:00:16 v #172 > > span {
00:00:16 v #173 > >   font-size: 11px;
00:00:16 v #174 > > }
00:00:16 v #175 > > div > div {
00:00:16 v #176 > >   padding-left: 10px;
00:00:16 v #177 > > }
00:00:16 v #178 > > details > div {
00:00:16 v #179 > >   padding-left: 19px;
00:00:16 v #180 > > }
00:00:16 v #181 > >   </style>
00:00:16 v #182 > > </head>
00:00:16 v #183 > > <body>
00:00:16 v #184 > >   <div><details open="true"><summary>&#128194; <a href="_.root">_.root</a><span>
00:00:16 v #185 > > (10.00 B)</span></summary><div><details open="true"><summary>&#128194; <a
00:00:16 v #186 > > href="_.root/3">3</a><span> (6.00 B)</span></summary><div><details
00:00:16 v #187 > > open="true"><summary>&#128194; <a href="_.root/3/2">2</a><span> (3.00
00:00:16 v #188 > > B)</span></summary><div><details open="true"><summary>&#128194; <a
00:00:16 v #189 > > href="_.root/3/2/1">1</a><span> (1.00 B)</span></summary><div><div>&#128196; <a
00:00:16 v #190 > > href="_.root/3/2/1/file.txt">file.txt</a><span> (1.00
00:00:16 v #191 > > B)</span></div></div></details><div>&#128196; <a
00:00:16 v #192 > > href="_.root/3/2/file.txt">file.txt</a><span> (2.00
00:00:16 v #193 > > B)</span></div></div></details><div>&#128196; <a
00:00:16 v #194 > > href="_.root/3/file.txt">file.txt</a><span> (3.00
00:00:16 v #195 > > B)</span></div></div></details><div>&#128196; <a
00:00:16 v #196 > > href="_.root/file.txt">file.txt</a><span> (4.00
00:00:16 v #197 > > B)</span></div></div></details></div>
00:00:16 v #198 > > </body>
00:00:16 v #199 > > </html>
00:00:16 v #200 > > """
00:00:16 v #201 > >
00:00:16 v #202 > > let struct (tempFolder, disposable) = expected |> SpiralCrypto.hash_text |>
00:00:16 v #203 > > SpiralFileSystem.create_temp_dir'
00:00:16 v #204 > > let rec loop d n = async {
00:00:16 v #205 > >     if n >= 0 then
00:00:16 v #206 > >         tempFolder </> d |> System.IO.Directory.CreateDirectory |> ignore
00:00:16 v #207 > >         do!
00:00:16 v #208 > >             n
00:00:16 v #209 > >             |> string
00:00:16 v #210 > >             |> String.replicate (n + 1)
00:00:16 v #211 > >             |> SpiralFileSystem.write_all_text_async (tempFolder </> d </>
00:00:16 v #212 > > $"file.txt")
00:00:16 v #213 > >         do! loop $"{d}/{n}" (n - 1)
00:00:16 v #214 > > }
00:00:16 v #215 > > loop "_.root" 3
00:00:16 v #216 > > |> Async.RunSynchronously
00:00:16 v #217 > >
00:00:16 v #218 > > let html =
00:00:16 v #219 > >     scanDirectory true tempFolder tempFolder
00:00:16 v #220 > >     |> generateHtmlForFileSystem
00:00:16 v #221 > >
00:00:16 v #222 > > html
00:00:16 v #223 > > |> _assertEqual expected
00:00:16 v #224 > >
00:00:16 v #225 > > disposable.Dispose ()
00:00:16 v #226 > >
00:00:16 v #227 > > html |> Microsoft.DotNet.Interactive.Formatting.Html.ToHtmlContent
00:00:16 v #228 > >
00:00:16 v #229 > > ── [ 149.54ms - return value ] ─────────────────────────────────────────────────
00:00:16 v #230 > > │ <!DOCTYPE html>
00:00:16 v #231 > > │ <html lang="en">
00:00:16 v #232 > > │ <head>
00:00:16 v #233 > > │   <meta charset="UTF-8">
00:00:16 v #234 > > │   <style>
00:00:16 v #235 > > │ body {
00:00:16 v #236 > > │     background-color: #222;
00:00:16 v #237 > > │     color: #ccc;
00:00:16 v #238 > > │ }
00:00:16 v #239 > > │ a {
00:00:16 v #240 > > │   color: #777;
00:00:16 v #241 > > │   font-size: 15px;
00:00:16 v #242 > > │ }
00:00:16 v #243 > > │ span {
00:00:16 v #244 > > │   font-size: 11px;
00:00:16 v #245 > > │ }
00:00:16 v #246 > > │ div > div {
00:00:16 v #247 > > │   padding-left: 10px;
00:00:16 v #248 > > │ }
00:00:16 v #249 > > │ details > div {
00:00:16 v #250 > > │   padding-left: 19px;
00:00:16 v #251 > > │ }
00:00:16 v #252 > > │   </style>
00:00:16 v #253 > > │ </head>
00:00:16 v #254 > > │ <body>
00:00:16 v #255 > > │   <div><details open="true"><summary>&#128194; <a
00:00:16 v #256 > > href="_.root">_.root</a><span> (10.00 B)</span></summary><div><details
00:00:16 v #257 > > open="true"><summary>&#128194; <a href="_.root/3">3</a><span> (6.00
00:00:16 v #258 > > B)</span></summary><div><details open="true"><summary>&#128194; <a
00:00:16 v #259 > > href="_.root/3/2">2</a><span> (3.00 B)</span></summary><div><details
00:00:16 v #260 > > open="true"><summary>&#128194; <a href="_.root/3/2/1">1</a><span> (1.00
00:00:16 v #261 > > B)</span></summary><div><div>&#128196; <a
00:00:16 v #262 > > href="_.root/3/2/1/file.txt">file.txt</a><span> (1.00
00:00:16 v #263 > > B)</span></div></div></details><div>&#128196; <a
00:00:16 v #264 > > href="_.root/3/2/file.txt">file.txt</a><span> (2.00
00:00:16 v #265 > > B)</span></div></div></details><div>&#128196; <a
00:00:16 v #266 > > href="_.root/3/file.txt">file.txt</a><span> (3.00
00:00:16 v #267 > > B)</span></div></div></details><div>&#128196; <a
00:00:16 v #268 > > href="_.root/file.txt">file.txt</a><span> (4.00
00:00:16 v #269 > > B)</span></div></div></details></div>
00:00:16 v #270 > > │ </body>
00:00:16 v #271 > > │ </html>
00:00:16 v #272 > > │
00:00:16 v #273 > >
00:00:16 v #274 > > ── [ 153.10ms - stdout ] ───────────────────────────────────────────────────────
00:00:16 v #275 > > │ "<!DOCTYPE html>
00:00:16 v #276 > > │ <html lang="en">
00:00:16 v #277 > > │ <head>
00:00:16 v #278 > > │   <meta charset="UTF-8">
00:00:16 v #279 > > │   <style>
00:00:16 v #280 > > │ body {
00:00:16 v #281 > > │     background-color: #222;
00:00:16 v #282 > > │     color: #ccc;
00:00:16 v #283 > > │ }
00:00:16 v #284 > > │ a {
00:00:16 v #285 > > │   color: #777;
00:00:16 v #286 > > │   font-size: 15px;
00:00:16 v #287 > > │ }
00:00:16 v #288 > > │ span {
00:00:16 v #289 > > │   font-size: 11px;
00:00:16 v #290 > > │ }
00:00:16 v #291 > > │ div > div {
00:00:16 v #292 > > │   padding-left: 10px;
00:00:16 v #293 > > │ }
00:00:16 v #294 > > │ details > div {
00:00:16 v #295 > > │   padding-left: 19px;
00:00:16 v #296 > > │ }
00:00:16 v #297 > > │   </style>
00:00:16 v #298 > > │ </head>
00:00:16 v #299 > > │ <body>
00:00:16 v #300 > > │   <div><details open="true"><summary>&#128194; <a
00:00:16 v #301 > > href="_.root">_.root</a><span> (10.00 B)</span></summary><div><details
00:00:16 v #302 > > open="true"><summary>&#128194; <a href="_.root/3">3</a><span> (6.00
00:00:16 v #303 > > B)</span></summary><div><details open="true"><summary>&#128194; <a
00:00:16 v #304 > > href="_.root/3/2">2</a><span> (3.00 B)</span></summary><div><details
00:00:16 v #305 > > open="true"><summary>&#128194; <a href="_.root/3/2/1">1</a><span> (1.00
00:00:16 v #306 > > B)</span></summary><div><div>&#128196; <a
00:00:16 v #307 > > href="_.root/3/2/1/file.txt">file.txt</a><span> (1.00
00:00:16 v #308 > > B)</span></div></div></details><div>&#128196; <a
00:00:16 v #309 > > href="_.root/3/2/file.txt">file.txt</a><span> (2.00
00:00:16 v #310 > > B)</span></div></div></details><div>&#128196; <a
00:00:16 v #311 > > href="_.root/3/file.txt">file.txt</a><span> (3.00
00:00:16 v #312 > > B)</span></div></div></details><div>&#128196; <a
00:00:16 v #313 > > href="_.root/file.txt">file.txt</a><span> (4.00
00:00:16 v #314 > > B)</span></div></div></details></div>
00:00:16 v #315 > > │ </body>
00:00:16 v #316 > > │ </html>
00:00:16 v #317 > > │ "
00:00:16 v #318 > > │
00:00:16 v #319 > > │
00:00:16 v #320 > >
00:00:16 v #321 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:16 v #322 > > │ ## Arguments
00:00:16 v #323 > >
00:00:16 v #324 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:16 v #325 > > [[<RequireQualifiedAccess>]]
00:00:16 v #326 > > type Arguments =
00:00:16 v #327 > >     | [[<Argu.ArguAttributes.ExactlyOnce>]] Dir of string
00:00:16 v #328 > >     | [[<Argu.ArguAttributes.ExactlyOnce>]] Html of string
00:00:16 v #329 > >
00:00:16 v #330 > >     interface Argu.IArgParserTemplate with
00:00:16 v #331 > >         member s.Usage =
00:00:16 v #332 > >             match s with
00:00:16 v #333 > >             | Dir _ -> nameof Dir
00:00:16 v #334 > >             | Html _ -> nameof Html
00:00:16 v #335 > >
00:00:16 v #336 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:16 v #337 > > //// test
00:00:16 v #338 > >
00:00:16 v #339 > > Argu.ArgumentParser.Create<Arguments>().PrintUsage ()
00:00:16 v #340 > >
00:00:16 v #341 > > ── [ 65.92ms - return value ] ──────────────────────────────────────────────────
00:00:16 v #342 > > │ "USAGE: dotnet-repl [--help] --dir <string> --html <string>
00:00:16 v #343 > > │
00:00:16 v #344 > > │ OPTIONS:
00:00:16 v #345 > > │
00:00:16 v #346 > > │     --dir <string>        Dir
00:00:16 v #347 > > │     --html <string>       Html
00:00:16 v #348 > > │     --help                display this list of options.
00:00:16 v #349 > > │ "
00:00:16 v #350 > > │
00:00:16 v #351 > >
00:00:16 v #352 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:16 v #353 > > │ ## main
00:00:16 v #354 > >
00:00:16 v #355 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:16 v #356 > > let main args =
00:00:16 v #357 > >     let argsMap = args |> Runtime.parseArgsMap<Arguments>
00:00:16 v #358 > >
00:00:16 v #359 > >     let dir =
00:00:16 v #360 > >         match argsMap.[[nameof Arguments.Dir]] with
00:00:16 v #361 > >         | [[ Arguments.Dir dir ]] -> Some dir
00:00:16 v #362 > >         | _ -> None
00:00:16 v #363 > >         |> Option.get
00:00:16 v #364 > >
00:00:16 v #365 > >     let htmlPath =
00:00:16 v #366 > >         match argsMap.[[nameof Arguments.Html]] with
00:00:16 v #367 > >         | [[ Arguments.Html html ]] -> Some html
00:00:16 v #368 > >         | _ -> None
00:00:16 v #369 > >         |> Option.get
00:00:16 v #370 > >
00:00:16 v #371 > >     let fileSystem = scanDirectory true dir dir
00:00:16 v #372 > >     let html = generateHtmlForFileSystem fileSystem
00:00:16 v #373 > >
00:00:16 v #374 > >     html |> SpiralFileSystem.write_all_text_async htmlPath
00:00:16 v #375 > >     |> Async.runWithTimeout 30000
00:00:16 v #376 > >     |> function
00:00:16 v #377 > >         | Some () -> 0
00:00:16 v #378 > >         | None -> 1
00:00:16 v #379 > >
00:00:16 v #380 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:16 v #381 > > //// test
00:00:16 v #382 > >
00:00:16 v #383 > > let args =
00:00:16 v #384 > >     System.Environment.GetEnvironmentVariable "ARGS"
00:00:16 v #385 > >     |> SpiralRuntime.split_args
00:00:16 v #386 > >     |> Result.toArray
00:00:16 v #387 > >     |> Array.collect id
00:00:16 v #388 > >
00:00:16 v #389 > > match args with
00:00:16 v #390 > > | [[||]] -> 0
00:00:16 v #391 > > | args -> if main args = 0 then 0 else failwith "main failed"
00:00:16 v #392 > >
00:00:16 v #393 > > ── [ 66.27ms - return value ] ──────────────────────────────────────────────────
00:00:16 v #394 > > │ <div class="dni-plaintext"><pre>0
00:00:16 v #395 > > │ </pre></div><style>
00:00:16 v #396 > > │ .dni-code-hint {
00:00:16 v #397 > > │     font-style: italic;
00:00:16 v #398 > > │     overflow: hidden;
00:00:16 v #399 > > │     white-space: nowrap;
00:00:16 v #400 > > │ }
00:00:16 v #401 > > │ .dni-treeview {
00:00:16 v #402 > > │     white-space: nowrap;
00:00:16 v #403 > > │ }
00:00:16 v #404 > > │ .dni-treeview td {
00:00:16 v #405 > > │     vertical-align: top;
00:00:16 v #406 > > │     text-align: start;
00:00:16 v #407 > > │ }
00:00:16 v #408 > > │ details.dni-treeview {
00:00:16 v #409 > > │     padding-left: 1em;
00:00:16 v #410 > > │ }
00:00:16 v #411 > > │ table td {
00:00:16 v #412 > > │     text-align: start;
00:00:16 v #413 > > │ }
00:00:16 v #414 > > │ table tr {
00:00:16 v #415 > > │     vertical-align: top;
00:00:16 v #416 > > │     margin: 0em 0px;
00:00:16 v #417 > > │ }
00:00:16 v #418 > > │ table tr td pre
00:00:16 v #419 > > │ {
00:00:16 v #420 > > │     vertical-align: top !important;
00:00:16 v #421 > > │     margin: 0em 0px !important;
00:00:16 v #422 > > │ }
00:00:16 v #423 > > │ table th {
00:00:16 v #424 > > │     text-align: start;
00:00:16 v #425 > > │ }
00:00:16 v #426 > > │ </style>
00:00:16 v #427 > 00:00:15 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 13920 }
00:00:16 v #428 > 00:00:15 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/apps/dir-tree-html/DirTreeHtml.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/dir-tree-html/DirTreeHtml.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:17 v #429 > 00:00:15 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/dir-tree-html/DirTreeHtml.dib.ipynb to html
00:00:17 v #430 > 00:00:15 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:17 v #431 > 00:00:15 v #7 !   validate(nb)
00:00:17 v #432 > 00:00:16 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:17 v #433 > 00:00:16 v #9 !   return _pygments_highlight(
00:00:17 v #434 > 00:00:16 v #10 ! [NbConvertApp] Writing 310055 bytes to /home/runner/work/polyglot/polyglot/apps/dir-tree-html/DirTreeHtml.dib.html
00:00:17 v #435 > 00:00:16 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 922 }
00:00:17 v #436 > 00:00:16 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 922 }
00:00:17 v #437 > 00:00:16 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/dir-tree-html/DirTreeHtml.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/dir-tree-html/DirTreeHtml.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:18 v #438 > 00:00:16 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:00:18 v #439 > 00:00:16 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:00:18 v #440 > 00:00:16 d #16 spiral.run / dib / { exit_code = 0; result_length = 14901 }
00:00:18 d #441 runtime.execute_with_options_async / { exit_code = 0; output_length = 18481 }
00:00:18 d #3 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path DirTreeHtml.dib
00:00:18 v #29 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>]
type std_string_String = class end
#else
type std_string_String = string
#endif

#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("&$0")>]
type Ref<'T> = class end
#else
type Ref<'T> = 'T
#endif

#if FABLE_COMPILER

type System_Net_Sockets_TcpClient = System.IDisposable
#else
type System_Net_Sockets_TcpClient = System.Net.Sockets.TcpClient
#endif

#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("mut $0")>]
#endif
type Mut<'T> = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("Vec<$0>")>]
#endif
type Vec<'T> = class end
module TraceState = let mutable trace_state = None
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::env::VarError")>]
#endif
type std_env_VarError = class end
type IOsEnviron = abstract environ: x: unit -> obj
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("str")>]
type Str = class end
#else
type Str = string
#endif

type [<Struct>] US0 =
    | US0_0
    | US0_1
    | US0_2
    | US0_3
    | US0_4
and Mut0 = {mutable l0 : int64}
and Mut1 = {mutable l0 : (string -> unit)}
and Mut2 = {mutable l0 : bool}
and Mut3 = {mutable l0 : string}
and Mut4 = {mutable l0 : US0}
and [<Struct>] US1 =
    | US1_0 of f0_0 : US0
    | US1_1
and [<Struct>] US2 =
    | US2_0 of f0_0 : int64
    | US2_1
and [<Struct>] US3 =
    | US3_0
    | US3_1
    | US3_2
and [<Struct>] US4 =
    | US4_0 of f0_0 : US3
    | US4_1 of f1_0 : US3
    | US4_2 of f2_0 : US3
    | US4_3 of f3_0 : US3
    | US4_4 of f4_0 : US3
and [<Struct>] US5 =
    | US5_0 of f0_0 : string
    | US5_1
and [<Struct>] US6 =
    | US6_0 of f0_0 : bool
    | US6_1
and [<Struct>] US7 =
    | US7_0 of f0_0 : bool
    | US7_1 of f1_0 : exn
and [<Struct>] US8 =
    | US8_0 of f0_0 : bool
    | US8_1 of f1_0 : exn
and [<Struct>] US9 =
    | US9_0 of f0_0 : int32
    | US9_1
let rec method3 (v0 : string) : string =
    v0
and method4 () : string =
    let v0 : string = ""
    v0
and closure1 () (v0 : string) : US5 =
    US5_0(v0)
and method5 () : (string -> US5) =
    closure1()
and method2 (v0 : string) : string =
    (* run_target_args'
    let v1 : unit = ()
    run_target_args' *)
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v2 : string = method3(v0)
    let v3 : string = "std::env::var(&*$0)"
    let v4 : Result<std_string_String, std_env_VarError> = Fable.Core.RustInterop.emitRustExpr v2 v3 
    let v5 : string = "true; let _result_map_ = $0.map(|x| { //"
    let v6 : bool = Fable.Core.RustInterop.emitRustExpr v4 v5 
    let v7 : string = "x"
    let v8 : std_string_String = Fable.Core.RustInterop.emitRustExpr () v7 
    let v9 : string = "fable_library_rust::String_::fromString($0)"
    let v10 : string = Fable.Core.RustInterop.emitRustExpr v8 v9 
    let v11 : string = "true; $0 })"
    let v12 : bool = Fable.Core.RustInterop.emitRustExpr v10 v11 
    let v13 : string = "_result_map_"
    let v14 : Result<string, std_env_VarError> = Fable.Core.RustInterop.emitRustExpr () v13 
    let v15 : string = method4()
    let v16 : string = "$0.unwrap_or($1)"
    let v17 : string = Fable.Core.RustInterop.emitRustExpr struct (v14, v15) v16 
    let _run_target_args'_v1 = v17 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v18 : US3 = US3_1
    let v19 : US4 = US4_2(v18)
    let v20 : string = $"env.get_environment_variable / target: {v19} / var: {v0}"
    let v21 : string = failwith<string> v20
    let _run_target_args'_v1 = v21 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v22 : US3 = US3_2
    let v23 : US4 = US4_2(v22)
    let v24 : string = $"env.get_environment_variable / target: {v23} / var: {v0}"
    let v25 : string = failwith<string> v24
    let _run_target_args'_v1 = v25 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v26 : string = "process.env[$0] ?? \"\""
    let v27 : string = Fable.Core.JsInterop.emitJsExpr v0 v26 
    let _run_target_args'_v1 = v27 
    #endif
#if FABLE_COMPILER_PYTHON
    let v28 : string = "os"
    let v29 : IOsEnviron = Fable.Core.PyInterop.importAll v28 
    let v30 : string = "v29.environ"
    let v31 : obj = Fable.Core.PyInterop.emitPyExpr () v30 
    let v34 : string = "v31.get($0)"
    let v35 : string = Fable.Core.PyInterop.emitPyExpr v0 v34 
    let mutable _v35 = None
    #if !FABLE_COMPILER && !WASM && !CONTRACT
    let v38 : (string -> string option) = Option.ofObj
    let v39 : string option = v38 v35
    v39 
    #else
    Some v35 
    #endif
    |> fun x -> _v35 <- Some x
    let v40 : string option = match _v35 with Some x -> x | None -> failwith "optionm'.of_obj / _v35=None"
    let v43 : (string -> US5) = method5()
    let v44 : US5 option = v40 |> Option.map v43 
    let v55 : US5 = US5_1
    let v56 : US5 = v44 |> Option.defaultValue v55 
    let v63 : string =
        match v56 with
        | US5_1 -> (* None *)
            let v61 : string = ""
            v61
        | US5_0(v60) -> (* Some *)
            v60
    let _run_target_args'_v1 = v63 
    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
    let v64 : US3 = US3_1
    let v65 : US4 = US4_0(v64)
    let v66 : string = $"env.get_environment_variable / target: {v65} / var: {v0}"
    let v67 : string = failwith<string> v66
    let _run_target_args'_v1 = v67 
    #endif
#else
    let v68 : (string -> string) = System.Environment.GetEnvironmentVariable
    let v69 : string = v68 v0
    let mutable _v69 = None
    #if !FABLE_COMPILER && !WASM && !CONTRACT
    let v70 : (string -> string option) = Option.ofObj
    let v71 : string option = v70 v69
    v71 
    #else
    Some v69 
    #endif
    |> fun x -> _v69 <- Some x
    let v72 : string option = match _v69 with Some x -> x | None -> failwith "optionm'.of_obj / _v69=None"
    let v75 : (string -> US5) = method5()
    let v76 : US5 option = v72 |> Option.map v75 
    let v87 : US5 = US5_1
    let v88 : US5 = v76 |> Option.defaultValue v87 
    let v95 : string =
        match v88 with
        | US5_1 -> (* None *)
            let v93 : string = ""
            v93
        | US5_0(v92) -> (* Some *)
            v92
    let _run_target_args'_v1 = v95 
    #endif
    let v96 : string = _run_target_args'_v1 
    v96
and method1 () : struct (US1 * US2) =
    let v0 : string = "TRACE_LEVEL"
    let v1 : string = method2(v0)
    
    
    
    
    
    let v2 : bool = "Verbose" = v1
    let v6 : US1 =
        if v2 then
            let v3 : US0 = US0_0
            US1_0(v3)
        else
            US1_1
    let v47 : US1 =
        match v6 with
        | US1_1 -> (* None *)
            let v9 : bool = "Debug" = v1
            let v13 : US1 =
                if v9 then
                    let v10 : US0 = US0_1
                    US1_0(v10)
                else
                    US1_1
            match v13 with
            | US1_1 -> (* None *)
                let v16 : bool = "Info" = v1
                let v20 : US1 =
                    if v16 then
                        let v17 : US0 = US0_2
                        US1_0(v17)
                    else
                        US1_1
                match v20 with
                | US1_1 -> (* None *)
                    let v23 : bool = "Warning" = v1
                    let v27 : US1 =
                        if v23 then
                            let v24 : US0 = US0_3
                            US1_0(v24)
                        else
                            US1_1
                    match v27 with
                    | US1_1 -> (* None *)
                        let v30 : bool = "Critical" = v1
                        let v34 : US1 =
                            if v30 then
                                let v31 : US0 = US0_4
                                US1_0(v31)
                            else
                                US1_1
                        match v34 with
                        | US1_1 -> (* None *)
                            US1_1
                        | US1_0(v35) -> (* Some *)
                            US1_0(v35)
                    | US1_0(v28) -> (* Some *)
                        US1_0(v28)
                | US1_0(v21) -> (* Some *)
                    US1_0(v21)
            | US1_0(v14) -> (* Some *)
                US1_0(v14)
        | US1_0(v7) -> (* Some *)
            US1_0(v7)
    let v48 : string = "AUTOMATION"
    let v49 : string = method2(v48)
    let v50 : string = "True"
    let v51 : bool = v49 <> v50 
    let v107 : US2 =
        if v51 then
            US2_1
        else
            (* run_target_args'
            let v55 : unit = ()
            run_target_args' *)
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v56 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v55 = v56 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v57 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v55 = v57 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v58 : System.DateTime = null |> unbox<System.DateTime>
            let _run_target_args'_v55 = v58 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v61 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v55 = v61 
            #endif
#if FABLE_COMPILER_PYTHON
            let v62 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v55 = v62 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v63 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v55 = v63 
            #endif
#else
            let v64 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v55 = v64 
            #endif
            let v65 : System.DateTime = _run_target_args'_v55 
            (* run_target_args'
            let v70 : unit = ()
            run_target_args' *)
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v71 : (System.DateTime -> int64) = _.Ticks
            let v72 : int64 = v71 v65
            let _run_target_args'_v70 = v72 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v73 : (System.DateTime -> int64) = _.Ticks
            let v74 : int64 = v73 v65
            let _run_target_args'_v70 = v74 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v75 : int64 = null |> unbox<int64>
            let _run_target_args'_v70 = v75 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v78 : (System.DateTime -> int64) = _.Ticks
            let v79 : int64 = v78 v65
            let _run_target_args'_v70 = v79 
            #endif
#if FABLE_COMPILER_PYTHON
            let v80 : (System.DateTime -> int64) = _.Ticks
            let v81 : int64 = v80 v65
            let _run_target_args'_v70 = v81 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v82 : (System.DateTime -> int64) = _.Ticks
            let v83 : int64 = v82 v65
            let _run_target_args'_v70 = v83 
            #endif
#else
            let v84 : (System.DateTime -> int64) = _.Ticks
            let v85 : int64 = v84 v65
            let _run_target_args'_v70 = v85 
            #endif
            let v86 : int64 = _run_target_args'_v70 
            let v103 : int64 = v86 |> int64 
            US2_0(v103)
    struct (v47, v107)
and closure2 () (v0 : string) : unit =
    ()
and method0 (v0 : US0) : struct (Mut0 * Mut1 * Mut2 * Mut3 * Mut4 * int64 option) =
    (* run_target_args'
    let v1 : unit = ()
    run_target_args' *)
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let struct (v2 : US1, v3 : US2) = method1()
    let _run_target_args'_v1 = struct (v2, v3) 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v4 : US1 = US1_1
    let v5 : US2 = US2_1
    let _run_target_args'_v1 = struct (v4, v5) 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v6 : string = "AUTOMATION"
    (* run_target_args'
    let v7 : unit = ()
    run_target_args' *)
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v8 : string = "option_env!(\"" + v6 + "\").unwrap_or(\"\")"
    let v9 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v8 
    (* run_target_args'
    let v10 : unit = ()
    run_target_args' *)
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v11 : string = "String::from($0)"
    let v12 : std_string_String = Fable.Core.RustInterop.emitRustExpr v9 v11 
    let _run_target_args'_v10 = v12 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v13 : string = "String::from($0)"
    let v14 : std_string_String = Fable.Core.RustInterop.emitRustExpr v9 v13 
    let _run_target_args'_v10 = v14 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v15 : string = "String::from($0)"
    let v16 : std_string_String = Fable.Core.RustInterop.emitRustExpr v9 v15 
    let _run_target_args'_v10 = v16 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v17 : std_string_String = v9 |> unbox<std_string_String>
    let _run_target_args'_v10 = v17 
    #endif
#if FABLE_COMPILER_PYTHON
    let v20 : std_string_String = v9 |> unbox<std_string_String>
    let _run_target_args'_v10 = v20 
    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
    let v23 : std_string_String = v9 |> unbox<std_string_String>
    let _run_target_args'_v10 = v23 
    #endif
#else
    let v26 : std_string_String = v9 |> unbox<std_string_String>
    let _run_target_args'_v10 = v26 
    #endif
    let v29 : std_string_String = _run_target_args'_v10 
    let v34 : string = "fable_library_rust::String_::fromString($0)"
    let v35 : string = Fable.Core.RustInterop.emitRustExpr v29 v34 
    let _run_target_args'_v7 = v35 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v36 : string = "option_env!(\"" + v6 + "\").unwrap_or(\"\")"
    let v37 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v36 
    (* run_target_args'
    let v38 : unit = ()
    run_target_args' *)
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v39 : string = "String::from($0)"
    let v40 : std_string_String = Fable.Core.RustInterop.emitRustExpr v37 v39 
    let _run_target_args'_v38 = v40 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v41 : string = "String::from($0)"
    let v42 : std_string_String = Fable.Core.RustInterop.emitRustExpr v37 v41 
    let _run_target_args'_v38 = v42 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v43 : string = "String::from($0)"
    let v44 : std_string_String = Fable.Core.RustInterop.emitRustExpr v37 v43 
    let _run_target_args'_v38 = v44 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v45 : std_string_String = v37 |> unbox<std_string_String>
    let _run_target_args'_v38 = v45 
    #endif
#if FABLE_COMPILER_PYTHON
    let v48 : std_string_String = v37 |> unbox<std_string_String>
    let _run_target_args'_v38 = v48 
    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
    let v51 : std_string_String = v37 |> unbox<std_string_String>
    let _run_target_args'_v38 = v51 
    #endif
#else
    let v54 : std_string_String = v37 |> unbox<std_string_String>
    let _run_target_args'_v38 = v54 
    #endif
    let v57 : std_string_String = _run_target_args'_v38 
    let v62 : string = "fable_library_rust::String_::fromString($0)"
    let v63 : string = Fable.Core.RustInterop.emitRustExpr v57 v62 
    let _run_target_args'_v7 = v63 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v64 : string = "option_env!(\"" + v6 + "\").unwrap_or(\"\")"
    let v65 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v64 
    (* run_target_args'
    let v66 : unit = ()
    run_target_args' *)
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v67 : string = "String::from($0)"
    let v68 : std_string_String = Fable.Core.RustInterop.emitRustExpr v65 v67 
    let _run_target_args'_v66 = v68 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v69 : string = "String::from($0)"
    let v70 : std_string_String = Fable.Core.RustInterop.emitRustExpr v65 v69 
    let _run_target_args'_v66 = v70 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v71 : string = "String::from($0)"
    let v72 : std_string_String = Fable.Core.RustInterop.emitRustExpr v65 v71 
    let _run_target_args'_v66 = v72 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v73 : std_string_String = v65 |> unbox<std_string_String>
    let _run_target_args'_v66 = v73 
    #endif
#if FABLE_COMPILER_PYTHON
    let v76 : std_string_String = v65 |> unbox<std_string_String>
    let _run_target_args'_v66 = v76 
    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
    let v79 : std_string_String = v65 |> unbox<std_string_String>
    let _run_target_args'_v66 = v79 
    #endif
#else
    let v82 : std_string_String = v65 |> unbox<std_string_String>
    let _run_target_args'_v66 = v82 
    #endif
    let v85 : std_string_String = _run_target_args'_v66 
    let v90 : string = "fable_library_rust::String_::fromString($0)"
    let v91 : string = Fable.Core.RustInterop.emitRustExpr v85 v90 
    let _run_target_args'_v7 = v91 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v92 : string = null |> unbox<string>
    let _run_target_args'_v7 = v92 
    #endif
#if FABLE_COMPILER_PYTHON
    let v95 : string = null |> unbox<string>
    let _run_target_args'_v7 = v95 
    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
    let v98 : string = null |> unbox<string>
    let _run_target_args'_v7 = v98 
    #endif
#else
    let v101 : string = null |> unbox<string>
    let _run_target_args'_v7 = v101 
    #endif
    let v104 : string = _run_target_args'_v7 
    let v109 : string = "True"
    let v110 : bool = v104 <> v109 
    let v121 : US2 =
        if v110 then
            US2_1
        else
            let v114 : string = $"near_sdk::env::block_timestamp()"
            let v115 : uint64 = Fable.Core.RustInterop.emitRustExpr () v114 
            let v116 : (uint64 -> int64) = int64
            let v117 : int64 = v116 v115
            US2_0(v117)
    let v122 : US1 = US1_1
    let _run_target_args'_v1 = struct (v122, v121) 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let struct (v123 : US1, v124 : US2) = method1()
    let _run_target_args'_v1 = struct (v123, v124) 
    #endif
#if FABLE_COMPILER_PYTHON
    let struct (v125 : US1, v126 : US2) = method1()
    let _run_target_args'_v1 = struct (v125, v126) 
    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
    let struct (v127 : US1, v128 : US2) = method1()
    let _run_target_args'_v1 = struct (v127, v128) 
    #endif
#else
    let struct (v129 : US1, v130 : US2) = method1()
    let _run_target_args'_v1 = struct (v129, v130) 
    #endif
    let struct (v131 : US1, v132 : US2) = _run_target_args'_v1 
    let v137 : Mut0 = {l0 = 1L} : Mut0
    let v138 : (string -> unit) = closure2()
    let v139 : Mut1 = {l0 = v138} : Mut1
    let v140 : Mut2 = {l0 = true} : Mut2
    let v141 : string = ""
    let v142 : Mut3 = {l0 = v141} : Mut3
    let v145 : US0 =
        match v131 with
        | US1_1 -> (* None *)
            v0
        | US1_0(v143) -> (* Some *)
            v143
    let v146 : Mut4 = {l0 = v145} : Mut4
    let v153 : int64 option =
        match v132 with
        | US2_1 -> (* None *)
            let v151 : int64 option = None
            v151
        | US2_0(v147) -> (* Some *)
            let v148 : int64 option = Some v147 
            v148
    struct (v137, v139, v140, v142, v146, v153)
and closure0 () () : unit =
    let v0 : bool = TraceState.trace_state.IsNone
    if v0 then
        let v1 : US0 = US0_0
        let struct (v2 : Mut0, v3 : Mut1, v4 : Mut2, v5 : Mut3, v6 : Mut4, v7 : int64 option) = method0(v1)
        let v8 : struct (Mut0 * Mut1 * Mut2 * Mut3 * Mut4 * int64 option) option = Some struct (v2, v3, v4, v5, v6, v7) 
        TraceState.trace_state <- v8 
        ()
and method8 (v0 : US0) : bool =
    let v1 : unit = ()
    let v2 : (unit -> unit) = closure0()
    let v3 : unit = (fun () -> v2 (); v1) ()
    let struct (v17 : Mut0, v18 : Mut1, v19 : Mut2, v20 : Mut3, v21 : Mut4, v22 : int64 option) = TraceState.trace_state.Value
    let v35 : US0 = v21.l0
    let v36 : bool = v19.l0
    let v37 : bool = v36 = false
    if v37 then
        false
    else
        let v38 : int32 = [ US0_0, 0; US0_1, 1; US0_2, 2; US0_3, 3; US0_4, 4 ] |> Map |> Map.find v0
        let v39 : int32 = [ US0_0, 0; US0_1, 1; US0_2, 2; US0_3, 3; US0_4, 4 ] |> Map |> Map.find v35
        let v40 : bool = v38 >= v39
        v40
and closure6 () (v0 : int64) : US2 =
    US2_0(v0)
and method10 () : (int64 -> US2) =
    closure6()
and method11 () : string =
    let v0 : string = "hh:mm:ss"
    v0
and method12 () : string =
    let v0 : string = "HH:mm:ss"
    v0
and method9 (v0 : Mut0, v1 : Mut1, v2 : Mut2, v3 : Mut3, v4 : Mut4, v5 : int64 option) : string =
    (* run_target_args'
    let v6 : unit = ()
    run_target_args' *)
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v7 : (int64 -> US2) = method10()
    let v8 : US2 option = v5 |> Option.map v7 
    let v19 : US2 = US2_1
    let v20 : US2 = v8 |> Option.defaultValue v19 
    let v117 : System.DateTime =
        match v20 with
        | US2_1 -> (* None *)
            (* run_target_args'
            let v101 : unit = ()
            run_target_args' *)
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v102 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v101 = v102 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v103 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v101 = v103 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v104 : System.DateTime = null |> unbox<System.DateTime>
            let _run_target_args'_v101 = v104 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v107 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v101 = v107 
            #endif
#if FABLE_COMPILER_PYTHON
            let v108 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v101 = v108 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v109 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v101 = v109 
            #endif
#else
            let v110 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v101 = v110 
            #endif
            let v111 : System.DateTime = _run_target_args'_v101 
            v111
        | US2_0(v24) -> (* Some *)
            (* run_target_args'
            let v25 : unit = ()
            run_target_args' *)
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v26 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v25 = v26 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v27 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v25 = v27 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v28 : System.DateTime = null |> unbox<System.DateTime>
            let _run_target_args'_v25 = v28 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v31 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v25 = v31 
            #endif
#if FABLE_COMPILER_PYTHON
            let v32 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v25 = v32 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v33 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v25 = v33 
            #endif
#else
            let v34 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v25 = v34 
            #endif
            let v35 : System.DateTime = _run_target_args'_v25 
            (* run_target_args'
            let v40 : unit = ()
            run_target_args' *)
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v41 : (System.DateTime -> int64) = _.Ticks
            let v42 : int64 = v41 v35
            let _run_target_args'_v40 = v42 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v43 : (System.DateTime -> int64) = _.Ticks
            let v44 : int64 = v43 v35
            let _run_target_args'_v40 = v44 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v45 : int64 = null |> unbox<int64>
            let _run_target_args'_v40 = v45 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v48 : (System.DateTime -> int64) = _.Ticks
            let v49 : int64 = v48 v35
            let _run_target_args'_v40 = v49 
            #endif
#if FABLE_COMPILER_PYTHON
            let v50 : (System.DateTime -> int64) = _.Ticks
            let v51 : int64 = v50 v35
            let _run_target_args'_v40 = v51 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v52 : (System.DateTime -> int64) = _.Ticks
            let v53 : int64 = v52 v35
            let _run_target_args'_v40 = v53 
            #endif
#else
            let v54 : (System.DateTime -> int64) = _.Ticks
            let v55 : int64 = v54 v35
            let _run_target_args'_v40 = v55 
            #endif
            let v56 : int64 = _run_target_args'_v40 
            let v73 : int64 = v56 |> int64 
            let v76 : int64 = v73 - v24
            let v77 : System.TimeSpan = v76 |> System.TimeSpan 
            let v82 : (System.TimeSpan -> int32) = _.Hours
            let v83 : int32 = v82 v77
            let v86 : (System.TimeSpan -> int32) = _.Minutes
            let v87 : int32 = v86 v77
            let v90 : (System.TimeSpan -> int32) = _.Seconds
            let v91 : int32 = v90 v77
            let v94 : (System.TimeSpan -> int32) = _.Milliseconds
            let v95 : int32 = v94 v77
            let v98 : System.DateTime = System.DateTime (1, 1, 1, v83, v87, v91, v95)
            v98
    let v118 : string = method11()
    let v121 : bool = v118 = ""
    let v123 : string =
        if v121 then
            let v122 : string = "M-d-y hh:mm:ss tt"
            v122
        else
            v118
    let v124 : (string -> string) = v117.ToString
    let v125 : string = v124 v123
    let _run_target_args'_v6 = v125 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v139 : (int64 -> US2) = method10()
    let v140 : US2 option = v5 |> Option.map v139 
    let v151 : US2 = US2_1
    let v152 : US2 = v140 |> Option.defaultValue v151 
    let v249 : System.DateTime =
        match v152 with
        | US2_1 -> (* None *)
            (* run_target_args'
            let v233 : unit = ()
            run_target_args' *)
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v234 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v233 = v234 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v235 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v233 = v235 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v236 : System.DateTime = null |> unbox<System.DateTime>
            let _run_target_args'_v233 = v236 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v239 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v233 = v239 
            #endif
#if FABLE_COMPILER_PYTHON
            let v240 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v233 = v240 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v241 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v233 = v241 
            #endif
#else
            let v242 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v233 = v242 
            #endif
            let v243 : System.DateTime = _run_target_args'_v233 
            v243
        | US2_0(v156) -> (* Some *)
            (* run_target_args'
            let v157 : unit = ()
            run_target_args' *)
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v158 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v157 = v158 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v159 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v157 = v159 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v160 : System.DateTime = null |> unbox<System.DateTime>
            let _run_target_args'_v157 = v160 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v163 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v157 = v163 
            #endif
#if FABLE_COMPILER_PYTHON
            let v164 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v157 = v164 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v165 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v157 = v165 
            #endif
#else
            let v166 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v157 = v166 
            #endif
            let v167 : System.DateTime = _run_target_args'_v157 
            (* run_target_args'
            let v172 : unit = ()
            run_target_args' *)
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v173 : (System.DateTime -> int64) = _.Ticks
            let v174 : int64 = v173 v167
            let _run_target_args'_v172 = v174 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v175 : (System.DateTime -> int64) = _.Ticks
            let v176 : int64 = v175 v167
            let _run_target_args'_v172 = v176 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v177 : int64 = null |> unbox<int64>
            let _run_target_args'_v172 = v177 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v180 : (System.DateTime -> int64) = _.Ticks
            let v181 : int64 = v180 v167
            let _run_target_args'_v172 = v181 
            #endif
#if FABLE_COMPILER_PYTHON
            let v182 : (System.DateTime -> int64) = _.Ticks
            let v183 : int64 = v182 v167
            let _run_target_args'_v172 = v183 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v184 : (System.DateTime -> int64) = _.Ticks
            let v185 : int64 = v184 v167
            let _run_target_args'_v172 = v185 
            #endif
#else
            let v186 : (System.DateTime -> int64) = _.Ticks
            let v187 : int64 = v186 v167
            let _run_target_args'_v172 = v187 
            #endif
            let v188 : int64 = _run_target_args'_v172 
            let v205 : int64 = v188 |> int64 
            let v208 : int64 = v205 - v156
            let v209 : System.TimeSpan = v208 |> System.TimeSpan 
            let v214 : (System.TimeSpan -> int32) = _.Hours
            let v215 : int32 = v214 v209
            let v218 : (System.TimeSpan -> int32) = _.Minutes
            let v219 : int32 = v218 v209
            let v222 : (System.TimeSpan -> int32) = _.Seconds
            let v223 : int32 = v222 v209
            let v226 : (System.TimeSpan -> int32) = _.Milliseconds
            let v227 : int32 = v226 v209
            let v230 : System.DateTime = System.DateTime (1, 1, 1, v215, v219, v223, v227)
            v230
    let v250 : string = method11()
    let v253 : bool = v250 = ""
    let v255 : string =
        if v253 then
            let v254 : string = "M-d-y hh:mm:ss tt"
            v254
        else
            v250
    let v256 : (string -> string) = v249.ToString
    let v257 : string = v256 v255
    let _run_target_args'_v6 = v257 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v271 : string = $"near_sdk::env::block_timestamp()"
    let v272 : uint64 = Fable.Core.RustInterop.emitRustExpr () v271 
    let v273 : (int64 -> US2) = method10()
    let v274 : US2 option = v5 |> Option.map v273 
    let v285 : US2 = US2_1
    let v286 : US2 = v274 |> Option.defaultValue v285 
    let v297 : uint64 =
        match v286 with
        | US2_1 -> (* None *)
            v272
        | US2_0(v290) -> (* Some *)
            let v291 : (int64 -> uint64) = uint64
            let v292 : uint64 = v291 v290
            let v295 : uint64 = v272 - v292
            v295
    let v298 : uint64 = v297 / 1000000000UL
    let v299 : uint64 = v298 % 60UL
    let v300 : uint64 = v298 / 60UL
    let v301 : uint64 = v300 % 60UL
    let v302 : uint64 = v298 / 3600UL
    let v303 : uint64 = v302 % 24UL
    let v304 : string = $"format!(\"{{:02}}:{{:02}}:{{:02}}\", $0, $1, $2)"
    let v305 : std_string_String = Fable.Core.RustInterop.emitRustExpr struct (v303, v301, v299) v304 
    let v306 : string = "fable_library_rust::String_::fromString($0)"
    let v307 : string = Fable.Core.RustInterop.emitRustExpr v305 v306 
    let _run_target_args'_v6 = v307 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v308 : (int64 -> US2) = method10()
    let v309 : US2 option = v5 |> Option.map v308 
    let v320 : US2 = US2_1
    let v321 : US2 = v309 |> Option.defaultValue v320 
    let v418 : System.DateTime =
        match v321 with
        | US2_1 -> (* None *)
            (* run_target_args'
            let v402 : unit = ()
            run_target_args' *)
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v403 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v402 = v403 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v404 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v402 = v404 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v405 : System.DateTime = null |> unbox<System.DateTime>
            let _run_target_args'_v402 = v405 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v408 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v402 = v408 
            #endif
#if FABLE_COMPILER_PYTHON
            let v409 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v402 = v409 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v410 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v402 = v410 
            #endif
#else
            let v411 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v402 = v411 
            #endif
            let v412 : System.DateTime = _run_target_args'_v402 
            v412
        | US2_0(v325) -> (* Some *)
            (* run_target_args'
            let v326 : unit = ()
            run_target_args' *)
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v327 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v326 = v327 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v328 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v326 = v328 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v329 : System.DateTime = null |> unbox<System.DateTime>
            let _run_target_args'_v326 = v329 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v332 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v326 = v332 
            #endif
#if FABLE_COMPILER_PYTHON
            let v333 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v326 = v333 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v334 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v326 = v334 
            #endif
#else
            let v335 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v326 = v335 
            #endif
            let v336 : System.DateTime = _run_target_args'_v326 
            (* run_target_args'
            let v341 : unit = ()
            run_target_args' *)
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v342 : (System.DateTime -> int64) = _.Ticks
            let v343 : int64 = v342 v336
            let _run_target_args'_v341 = v343 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v344 : (System.DateTime -> int64) = _.Ticks
            let v345 : int64 = v344 v336
            let _run_target_args'_v341 = v345 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v346 : int64 = null |> unbox<int64>
            let _run_target_args'_v341 = v346 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v349 : (System.DateTime -> int64) = _.Ticks
            let v350 : int64 = v349 v336
            let _run_target_args'_v341 = v350 
            #endif
#if FABLE_COMPILER_PYTHON
            let v351 : (System.DateTime -> int64) = _.Ticks
            let v352 : int64 = v351 v336
            let _run_target_args'_v341 = v352 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v353 : (System.DateTime -> int64) = _.Ticks
            let v354 : int64 = v353 v336
            let _run_target_args'_v341 = v354 
            #endif
#else
            let v355 : (System.DateTime -> int64) = _.Ticks
            let v356 : int64 = v355 v336
            let _run_target_args'_v341 = v356 
            #endif
            let v357 : int64 = _run_target_args'_v341 
            let v374 : int64 = v357 |> int64 
            let v377 : int64 = v374 - v325
            let v378 : System.TimeSpan = v377 |> System.TimeSpan 
            let v383 : (System.TimeSpan -> int32) = _.Hours
            let v384 : int32 = v383 v378
            let v387 : (System.TimeSpan -> int32) = _.Minutes
            let v388 : int32 = v387 v378
            let v391 : (System.TimeSpan -> int32) = _.Seconds
            let v392 : int32 = v391 v378
            let v395 : (System.TimeSpan -> int32) = _.Milliseconds
            let v396 : int32 = v395 v378
            let v399 : System.DateTime = System.DateTime (1, 1, 1, v384, v388, v392, v396)
            v399
    let v419 : string = method12()
    let v422 : bool = v419 = ""
    let v424 : string =
        if v422 then
            let v423 : string = "M-d-y hh:mm:ss tt"
            v423
        else
            v419
    let v425 : (string -> string) = v418.ToString
    let v426 : string = v425 v424
    let _run_target_args'_v6 = v426 
    #endif
#if FABLE_COMPILER_PYTHON
    let v440 : (int64 -> US2) = method10()
    let v441 : US2 option = v5 |> Option.map v440 
    let v452 : US2 = US2_1
    let v453 : US2 = v441 |> Option.defaultValue v452 
    let v550 : System.DateTime =
        match v453 with
        | US2_1 -> (* None *)
            (* run_target_args'
            let v534 : unit = ()
            run_target_args' *)
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v535 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v534 = v535 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v536 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v534 = v536 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v537 : System.DateTime = null |> unbox<System.DateTime>
            let _run_target_args'_v534 = v537 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v540 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v534 = v540 
            #endif
#if FABLE_COMPILER_PYTHON
            let v541 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v534 = v541 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v542 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v534 = v542 
            #endif
#else
            let v543 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v534 = v543 
            #endif
            let v544 : System.DateTime = _run_target_args'_v534 
            v544
        | US2_0(v457) -> (* Some *)
            (* run_target_args'
            let v458 : unit = ()
            run_target_args' *)
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v459 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v458 = v459 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v460 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v458 = v460 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v461 : System.DateTime = null |> unbox<System.DateTime>
            let _run_target_args'_v458 = v461 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v464 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v458 = v464 
            #endif
#if FABLE_COMPILER_PYTHON
            let v465 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v458 = v465 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v466 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v458 = v466 
            #endif
#else
            let v467 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v458 = v467 
            #endif
            let v468 : System.DateTime = _run_target_args'_v458 
            (* run_target_args'
            let v473 : unit = ()
            run_target_args' *)
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v474 : (System.DateTime -> int64) = _.Ticks
            let v475 : int64 = v474 v468
            let _run_target_args'_v473 = v475 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v476 : (System.DateTime -> int64) = _.Ticks
            let v477 : int64 = v476 v468
            let _run_target_args'_v473 = v477 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v478 : int64 = null |> unbox<int64>
            let _run_target_args'_v473 = v478 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v481 : (System.DateTime -> int64) = _.Ticks
            let v482 : int64 = v481 v468
            let _run_target_args'_v473 = v482 
            #endif
#if FABLE_COMPILER_PYTHON
            let v483 : (System.DateTime -> int64) = _.Ticks
            let v484 : int64 = v483 v468
            let _run_target_args'_v473 = v484 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v485 : (System.DateTime -> int64) = _.Ticks
            let v486 : int64 = v485 v468
            let _run_target_args'_v473 = v486 
            #endif
#else
            let v487 : (System.DateTime -> int64) = _.Ticks
            let v488 : int64 = v487 v468
            let _run_target_args'_v473 = v488 
            #endif
            let v489 : int64 = _run_target_args'_v473 
            let v506 : int64 = v489 |> int64 
            let v509 : int64 = v506 - v457
            let v510 : System.TimeSpan = v509 |> System.TimeSpan 
            let v515 : (System.TimeSpan -> int32) = _.Hours
            let v516 : int32 = v515 v510
            let v519 : (System.TimeSpan -> int32) = _.Minutes
            let v520 : int32 = v519 v510
            let v523 : (System.TimeSpan -> int32) = _.Seconds
            let v524 : int32 = v523 v510
            let v527 : (System.TimeSpan -> int32) = _.Milliseconds
            let v528 : int32 = v527 v510
            let v531 : System.DateTime = System.DateTime (1, 1, 1, v516, v520, v524, v528)
            v531
    let v551 : string = method12()
    let v554 : bool = v551 = ""
    let v556 : string =
        if v554 then
            let v555 : string = "M-d-y hh:mm:ss tt"
            v555
        else
            v551
    let v557 : (string -> string) = v550.ToString
    let v558 : string = v557 v556
    let _run_target_args'_v6 = v558 
    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
    let v572 : (int64 -> US2) = method10()
    let v573 : US2 option = v5 |> Option.map v572 
    let v584 : US2 = US2_1
    let v585 : US2 = v573 |> Option.defaultValue v584 
    let v682 : System.DateTime =
        match v585 with
        | US2_1 -> (* None *)
            (* run_target_args'
            let v666 : unit = ()
            run_target_args' *)
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v667 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v666 = v667 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v668 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v666 = v668 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v669 : System.DateTime = null |> unbox<System.DateTime>
            let _run_target_args'_v666 = v669 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v672 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v666 = v672 
            #endif
#if FABLE_COMPILER_PYTHON
            let v673 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v666 = v673 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v674 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v666 = v674 
            #endif
#else
            let v675 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v666 = v675 
            #endif
            let v676 : System.DateTime = _run_target_args'_v666 
            v676
        | US2_0(v589) -> (* Some *)
            (* run_target_args'
            let v590 : unit = ()
            run_target_args' *)
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v591 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v590 = v591 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v592 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v590 = v592 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v593 : System.DateTime = null |> unbox<System.DateTime>
            let _run_target_args'_v590 = v593 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v596 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v590 = v596 
            #endif
#if FABLE_COMPILER_PYTHON
            let v597 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v590 = v597 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v598 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v590 = v598 
            #endif
#else
            let v599 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v590 = v599 
            #endif
            let v600 : System.DateTime = _run_target_args'_v590 
            (* run_target_args'
            let v605 : unit = ()
            run_target_args' *)
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v606 : (System.DateTime -> int64) = _.Ticks
            let v607 : int64 = v606 v600
            let _run_target_args'_v605 = v607 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v608 : (System.DateTime -> int64) = _.Ticks
            let v609 : int64 = v608 v600
            let _run_target_args'_v605 = v609 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v610 : int64 = null |> unbox<int64>
            let _run_target_args'_v605 = v610 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v613 : (System.DateTime -> int64) = _.Ticks
            let v614 : int64 = v613 v600
            let _run_target_args'_v605 = v614 
            #endif
#if FABLE_COMPILER_PYTHON
            let v615 : (System.DateTime -> int64) = _.Ticks
            let v616 : int64 = v615 v600
            let _run_target_args'_v605 = v616 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v617 : (System.DateTime -> int64) = _.Ticks
            let v618 : int64 = v617 v600
            let _run_target_args'_v605 = v618 
            #endif
#else
            let v619 : (System.DateTime -> int64) = _.Ticks
            let v620 : int64 = v619 v600
            let _run_target_args'_v605 = v620 
            #endif
            let v621 : int64 = _run_target_args'_v605 
            let v638 : int64 = v621 |> int64 
            let v641 : int64 = v638 - v589
            let v642 : System.TimeSpan = v641 |> System.TimeSpan 
            let v647 : (System.TimeSpan -> int32) = _.Hours
            let v648 : int32 = v647 v642
            let v651 : (System.TimeSpan -> int32) = _.Minutes
            let v652 : int32 = v651 v642
            let v655 : (System.TimeSpan -> int32) = _.Seconds
            let v656 : int32 = v655 v642
            let v659 : (System.TimeSpan -> int32) = _.Milliseconds
            let v660 : int32 = v659 v642
            let v663 : System.DateTime = System.DateTime (1, 1, 1, v648, v652, v656, v660)
            v663
    let v683 : string = method12()
    let v686 : bool = v683 = ""
    let v688 : string =
        if v686 then
            let v687 : string = "M-d-y hh:mm:ss tt"
            v687
        else
            v683
    let v689 : (string -> string) = v682.ToString
    let v690 : string = v689 v688
    let _run_target_args'_v6 = v690 
    #endif
#else
    let v704 : (int64 -> US2) = method10()
    let v705 : US2 option = v5 |> Option.map v704 
    let v716 : US2 = US2_1
    let v717 : US2 = v705 |> Option.defaultValue v716 
    let v814 : System.DateTime =
        match v717 with
        | US2_1 -> (* None *)
            (* run_target_args'
            let v798 : unit = ()
            run_target_args' *)
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v799 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v798 = v799 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v800 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v798 = v800 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v801 : System.DateTime = null |> unbox<System.DateTime>
            let _run_target_args'_v798 = v801 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v804 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v798 = v804 
            #endif
#if FABLE_COMPILER_PYTHON
            let v805 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v798 = v805 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v806 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v798 = v806 
            #endif
#else
            let v807 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v798 = v807 
            #endif
            let v808 : System.DateTime = _run_target_args'_v798 
            v808
        | US2_0(v721) -> (* Some *)
            (* run_target_args'
            let v722 : unit = ()
            run_target_args' *)
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v723 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v722 = v723 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v724 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v722 = v724 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v725 : System.DateTime = null |> unbox<System.DateTime>
            let _run_target_args'_v722 = v725 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v728 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v722 = v728 
            #endif
#if FABLE_COMPILER_PYTHON
            let v729 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v722 = v729 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v730 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v722 = v730 
            #endif
#else
            let v731 : System.DateTime = System.DateTime.Now
            let _run_target_args'_v722 = v731 
            #endif
            let v732 : System.DateTime = _run_target_args'_v722 
            (* run_target_args'
            let v737 : unit = ()
            run_target_args' *)
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v738 : (System.DateTime -> int64) = _.Ticks
            let v739 : int64 = v738 v732
            let _run_target_args'_v737 = v739 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v740 : (System.DateTime -> int64) = _.Ticks
            let v741 : int64 = v740 v732
            let _run_target_args'_v737 = v741 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v742 : int64 = null |> unbox<int64>
            let _run_target_args'_v737 = v742 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v745 : (System.DateTime -> int64) = _.Ticks
            let v746 : int64 = v745 v732
            let _run_target_args'_v737 = v746 
            #endif
#if FABLE_COMPILER_PYTHON
            let v747 : (System.DateTime -> int64) = _.Ticks
            let v748 : int64 = v747 v732
            let _run_target_args'_v737 = v748 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v749 : (System.DateTime -> int64) = _.Ticks
            let v750 : int64 = v749 v732
            let _run_target_args'_v737 = v750 
            #endif
#else
            let v751 : (System.DateTime -> int64) = _.Ticks
            let v752 : int64 = v751 v732
            let _run_target_args'_v737 = v752 
            #endif
            let v753 : int64 = _run_target_args'_v737 
            let v770 : int64 = v753 |> int64 
            let v773 : int64 = v770 - v721
            let v774 : System.TimeSpan = v773 |> System.TimeSpan 
            let v779 : (System.TimeSpan -> int32) = _.Hours
            let v780 : int32 = v779 v774
            let v783 : (System.TimeSpan -> int32) = _.Minutes
            let v784 : int32 = v783 v774
            let v787 : (System.TimeSpan -> int32) = _.Seconds
            let v788 : int32 = v787 v774
            let v791 : (System.TimeSpan -> int32) = _.Milliseconds
            let v792 : int32 = v791 v774
            let v795 : System.DateTime = System.DateTime (1, 1, 1, v780, v784, v788, v792)
            v795
    let v815 : string = method12()
    let v818 : bool = v815 = ""
    let v820 : string =
        if v818 then
            let v819 : string = "M-d-y hh:mm:ss tt"
            v819
        else
            v815
    let v821 : (string -> string) = v814.ToString
    let v822 : string = v821 v820
    let _run_target_args'_v6 = v822 
    #endif
    let v836 : string = _run_target_args'_v6 
    v836
and method15 () : string =
    let v0 : string = ""
    v0
and closure7 (v0 : Mut3, v1 : string) () : unit =
    let v2 : string = v0.l0
    let v3 : string = v2 + v1 
    v0.l0 <- v3
    ()
and method14 (v0 : char) : string =
    let v1 : string = method15()
    let v2 : Mut3 = {l0 = v1} : Mut3
    let v3 : string = $"{v0}"
    let v6 : unit = ()
    let v7 : (unit -> unit) = closure7(v2, v3)
    let v8 : unit = (fun () -> v7 (); v6) ()
    let v11 : string = v2.l0
    v11
and method16 () : string =
    let v0 : string = "\u001b[0m"
    v0
and method13 () : string =
    
    
    
    
    
    let v0 : string = "Verbose"
    let v1 : (unit -> string) = v0.ToLower
    let v2 : string = v1 ()
    let v5 : char = v2.[int 0]
    let v6 : string = method14(v5)
    (* run_target_args'
    let v7 : unit = ()
    run_target_args' *)
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v8 : string = "inline_colorization::color_bright_black"
    let v9 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v8 
    (* run_target_args'
    let v10 : unit = ()
    run_target_args' *)
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v11 : string = "&*$0"
    let v12 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v11 
    let _run_target_args'_v10 = v12 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v13 : string = "&*$0"
    let v14 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v13 
    let _run_target_args'_v10 = v14 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v15 : string = "&*$0"
    let v16 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v15 
    let _run_target_args'_v10 = v16 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v17 : Ref<Str> = v6 |> unbox<Ref<Str>>
    let _run_target_args'_v10 = v17 
    #endif
#if FABLE_COMPILER_PYTHON
    let v20 : Ref<Str> = v6 |> unbox<Ref<Str>>
    let _run_target_args'_v10 = v20 
    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
    let v23 : Ref<Str> = v6 |> unbox<Ref<Str>>
    let _run_target_args'_v10 = v23 
    #endif
#else
    let v26 : Ref<Str> = v6 |> unbox<Ref<Str>>
    let _run_target_args'_v10 = v26 
    #endif
    let v29 : Ref<Str> = _run_target_args'_v10 
    let v34 : string = "inline_colorization::color_reset"
    let v35 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v34 
    let v36 : string = $"format!(\"{{}}{{}}{{}}\", $0, $1, $2)"
    let v37 : std_string_String = Fable.Core.RustInterop.emitRustExpr struct (v9, v29, v35) v36 
    let v38 : string = "fable_library_rust::String_::fromString($0)"
    let v39 : string = Fable.Core.RustInterop.emitRustExpr v37 v38 
    let _run_target_args'_v7 = v39 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v40 : string = "inline_colorization::color_bright_black"
    let v41 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v40 
    (* run_target_args'
    let v42 : unit = ()
    run_target_args' *)
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v43 : string = "&*$0"
    let v44 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v43 
    let _run_target_args'_v42 = v44 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v45 : string = "&*$0"
    let v46 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v45 
    let _run_target_args'_v42 = v46 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v47 : string = "&*$0"
    let v48 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v47 
    let _run_target_args'_v42 = v48 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v49 : Ref<Str> = v6 |> unbox<Ref<Str>>
    let _run_target_args'_v42 = v49 
    #endif
#if FABLE_COMPILER_PYTHON
    let v52 : Ref<Str> = v6 |> unbox<Ref<Str>>
    let _run_target_args'_v42 = v52 
    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
    let v55 : Ref<Str> = v6 |> unbox<Ref<Str>>
    let _run_target_args'_v42 = v55 
    #endif
#else
    let v58 : Ref<Str> = v6 |> unbox<Ref<Str>>
    let _run_target_args'_v42 = v58 
    #endif
    let v61 : Ref<Str> = _run_target_args'_v42 
    let v66 : string = "inline_colorization::color_reset"
    let v67 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v66 
    let v68 : string = $"format!(\"{{}}{{}}{{}}\", $0, $1, $2)"
    let v69 : std_string_String = Fable.Core.RustInterop.emitRustExpr struct (v41, v61, v67) v68 
    let v70 : string = "fable_library_rust::String_::fromString($0)"
    let v71 : string = Fable.Core.RustInterop.emitRustExpr v69 v70 
    let _run_target_args'_v7 = v71 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v72 : string = "inline_colorization::color_bright_black"
    let v73 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v72 
    (* run_target_args'
    let v74 : unit = ()
    run_target_args' *)
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v75 : string = "&*$0"
    let v76 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v75 
    let _run_target_args'_v74 = v76 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v77 : string = "&*$0"
    let v78 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v77 
    let _run_target_args'_v74 = v78 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v79 : string = "&*$0"
    let v80 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v79 
    let _run_target_args'_v74 = v80 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v81 : Ref<Str> = v6 |> unbox<Ref<Str>>
    let _run_target_args'_v74 = v81 
    #endif
#if FABLE_COMPILER_PYTHON
    let v84 : Ref<Str> = v6 |> unbox<Ref<Str>>
    let _run_target_args'_v74 = v84 
    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
    let v87 : Ref<Str> = v6 |> unbox<Ref<Str>>
    let _run_target_args'_v74 = v87 
    #endif
#else
    let v90 : Ref<Str> = v6 |> unbox<Ref<Str>>
    let _run_target_args'_v74 = v90 
    #endif
    let v93 : Ref<Str> = _run_target_args'_v74 
    let v98 : string = "inline_colorization::color_reset"
    let v99 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v98 
    let v100 : string = $"format!(\"{{}}{{}}{{}}\", $0, $1, $2)"
    let v101 : std_string_String = Fable.Core.RustInterop.emitRustExpr struct (v73, v93, v99) v100 
    let v102 : string = "fable_library_rust::String_::fromString($0)"
    let v103 : string = Fable.Core.RustInterop.emitRustExpr v101 v102 
    let _run_target_args'_v7 = v103 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v104 : string = "\u001b[90m"
    let v105 : string = method16()
    let v106 : string = v104 + v6 
    let v107 : string = v106 + v105 
    let _run_target_args'_v7 = v107 
    #endif
#if FABLE_COMPILER_PYTHON
    let v108 : string = "\u001b[90m"
    let v109 : string = method16()
    let v110 : string = v108 + v6 
    let v111 : string = v110 + v109 
    let _run_target_args'_v7 = v111 
    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
    let v112 : string = "\u001b[90m"
    let v113 : string = method16()
    let v114 : string = v112 + v6 
    let v115 : string = v114 + v113 
    let _run_target_args'_v7 = v115 
    #endif
#else
    let v116 : string = "\u001b[90m"
    let v117 : string = method16()
    let v118 : string = v116 + v6 
    let v119 : string = v118 + v117 
    let _run_target_args'_v7 = v119 
    #endif
    let v120 : string = _run_target_args'_v7 
    v120
and method18 (v0 : int32, v1 : string) : string =
    let v2 : string = method15()
    let v3 : Mut3 = {l0 = v2} : Mut3
    let v4 : string = "{ "
    let v5 : string = $"{v4}"
    let v8 : unit = ()
    let v9 : (unit -> unit) = closure7(v3, v5)
    let v10 : unit = (fun () -> v9 (); v8) ()
    let v13 : string = "port"
    let v14 : string = $"{v13}"
    let v17 : unit = ()
    let v18 : (unit -> unit) = closure7(v3, v14)
    let v19 : unit = (fun () -> v18 (); v17) ()
    let v22 : string = " = "
    let v23 : string = $"{v22}"
    let v26 : unit = ()
    let v27 : (unit -> unit) = closure7(v3, v23)
    let v28 : unit = (fun () -> v27 (); v26) ()
    let v31 : string = $"{v0}"
    let v34 : unit = ()
    let v35 : (unit -> unit) = closure7(v3, v31)
    let v36 : unit = (fun () -> v35 (); v34) ()
    let v39 : string = "; "
    let v40 : string = $"{v39}"
    let v43 : unit = ()
    let v44 : (unit -> unit) = closure7(v3, v40)
    let v45 : unit = (fun () -> v44 (); v43) ()
    let v48 : string = "ex"
    let v49 : string = $"{v48}"
    let v52 : unit = ()
    let v53 : (unit -> unit) = closure7(v3, v49)
    let v54 : unit = (fun () -> v53 (); v52) ()
    let v57 : string = $"{v22}"
    let v60 : unit = ()
    let v61 : (unit -> unit) = closure7(v3, v57)
    let v62 : unit = (fun () -> v61 (); v60) ()
    let v65 : string = $"{v1}"
    let v68 : unit = ()
    let v69 : (unit -> unit) = closure7(v3, v65)
    let v70 : unit = (fun () -> v69 (); v68) ()
    let v73 : string = " }"
    let v74 : string = $"{v73}"
    let v77 : unit = ()
    let v78 : (unit -> unit) = closure7(v3, v74)
    let v79 : unit = (fun () -> v78 (); v77) ()
    let v82 : string = v3.l0
    v82
and method19 (v0 : string) : string =
    let v1 : char list = []
    let v2 : (char list -> (char [])) = List.toArray
    let v3 : (char []) = v2 v1
    let v6 : string = v0.TrimStart v3 
    let v30 : char list = []
    let v31 : char list = '/' :: v30 
    let v34 : char list = ' ' :: v31 
    let v37 : (char list -> (char [])) = List.toArray
    let v38 : (char []) = v37 v34
    let v41 : string = v6.TrimEnd v38 
    v41
and method17 (v0 : Mut0, v1 : Mut1, v2 : Mut2, v3 : Mut3, v4 : Mut4, v5 : int64 option, v6 : string, v7 : string, v8 : int32, v9 : string) : string =
    let v10 : string = method18(v8, v9)
    let v11 : int64 = v0.l0
    let v12 : string = "networking.test_port_open"
    let v13 : string = $"{v6} {v7} #{v11} %s{v12} / {v10}"
    method19(v13)
and closure8 (v0 : Mut0) () : unit =
    let v1 : int64 = v0.l0
    let v2 : int64 = v1 + 1L
    v0.l0 <- v2
    ()
and closure10 (v0 : string) () : unit =
    let v1 : (string -> unit) = System.Console.WriteLine
    v1 v0
and closure9 () (v0 : string) : unit =
    let v1 : unit = ()
    let v2 : (unit -> unit) = closure10(v0)
    let v3 : unit = (fun () -> v2 (); v1) ()
    ()
and method20 (v0 : string) : unit =
    let v1 : unit = ()
    let v2 : (unit -> unit) = closure0()
    let v3 : unit = (fun () -> v2 (); v1) ()
    let struct (v17 : Mut0, v18 : Mut1, v19 : Mut2, v20 : Mut3, v21 : Mut4, v22 : int64 option) = TraceState.trace_state.Value
    let v35 : unit = ()
    let v36 : (unit -> unit) = closure8(v17)
    let v37 : unit = (fun () -> v36 (); v35) ()
    let v40 : (string -> unit) = closure9()
    (* run_target_args'
    let v41 : unit = ()
    run_target_args' *)
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v42 : string = @"println!(""{}"", $0)"
    Fable.Core.RustInterop.emitRustExpr v0 v42 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v43 : string = @"println!(""{}"", $0)"
    Fable.Core.RustInterop.emitRustExpr v0 v43 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v44 : string = v20.l0
    let v45 : bool = v44 = ""
    let v53 : string =
        if v45 then
            v0
        else
            let v46 : bool = v0 = ""
            if v46 then
                let v47 : string = v20.l0
                v47
            else
                let v48 : string = v20.l0
                let v49 : string = "\n"
                let v50 : string = v48 + v49 
                let v51 : string = v50 + v0 
                v51
    (* run_target_args'
    let v54 : unit = ()
    run_target_args' *)
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v55 : string = "&*$0"
    let v56 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v53 v55 
    let _run_target_args'_v54 = v56 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v57 : string = "&*$0"
    let v58 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v53 v57 
    let _run_target_args'_v54 = v58 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v59 : string = "&*$0"
    let v60 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v53 v59 
    let _run_target_args'_v54 = v60 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v61 : Ref<Str> = v53 |> unbox<Ref<Str>>
    let _run_target_args'_v54 = v61 
    #endif
#if FABLE_COMPILER_PYTHON
    let v64 : Ref<Str> = v53 |> unbox<Ref<Str>>
    let _run_target_args'_v54 = v64 
    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
    let v67 : Ref<Str> = v53 |> unbox<Ref<Str>>
    let _run_target_args'_v54 = v67 
    #endif
#else
    let v70 : Ref<Str> = v53 |> unbox<Ref<Str>>
    let _run_target_args'_v54 = v70 
    #endif
    let v73 : Ref<Str> = _run_target_args'_v54 
    let v78 : string = $"$0.chars()"
    let v79 : Mut<_> = Fable.Core.RustInterop.emitRustExpr v73 v78 
    let v80 : string = "$0"
    let v81 : _ = Fable.Core.RustInterop.emitRustExpr v79 v80 
    let v82 : string = "$0.collect::<Vec<_>>()"
    let v83 : Vec<char> = Fable.Core.RustInterop.emitRustExpr v81 v82 
    let v84 : string = "$0.chunks(15000).map(|x| x.into_iter().map(|x| x.clone()).collect::<Vec<_>>()).collect::<Vec<_>>()"
    let v85 : Vec<Vec<char>> = Fable.Core.RustInterop.emitRustExpr v83 v84 
    let v86 : string = "true; let _vec_map : Vec<_> = $0.into_iter().map(|x| { //"
    let v87 : bool = Fable.Core.RustInterop.emitRustExpr v85 v86 
    let v88 : string = "x"
    let v89 : Vec<char> = Fable.Core.RustInterop.emitRustExpr () v88 
    let v90 : string = "String::from_iter($0)"
    let v91 : std_string_String = Fable.Core.RustInterop.emitRustExpr v89 v90 
    let v92 : string = "true; $0 }).collect::<Vec<_>>()"
    let v93 : bool = Fable.Core.RustInterop.emitRustExpr v91 v92 
    let v94 : string = "_vec_map"
    let v95 : Vec<std_string_String> = Fable.Core.RustInterop.emitRustExpr () v94 
    let v96 : string = "$0.len()"
    let v97 : unativeint = Fable.Core.RustInterop.emitRustExpr v95 v96 
    let v98 : int32 = v97 |> int32 
    let v105 : string = ""
    let v106 : bool = v0 <> v105 
    let v110 : bool =
        if v106 then
            let v109 : bool = v98 <= 1
            v109
        else
            false
    if v110 then
        v20.l0 <- v53
        ()
    else
        v20.l0 <- v105
        let v111 : string = "true; $0.into_iter().for_each(|x| { //"
        let v112 : bool = Fable.Core.RustInterop.emitRustExpr v95 v111 
        let v113 : string = "x"
        let v114 : std_string_String = Fable.Core.RustInterop.emitRustExpr () v113 
        let v115 : string = $"true; near_sdk::log!(\"{{}}\", $0)"
        let v116 : bool = Fable.Core.RustInterop.emitRustExpr v114 v115 
        let v117 : string = $"true"
        let v118 : bool = Fable.Core.RustInterop.emitRustExpr () v117 
        let v119 : string = "true; }); //"
        let v120 : bool = Fable.Core.RustInterop.emitRustExpr () v119 
        ()
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    v40 v0
    #endif
#if FABLE_COMPILER_PYTHON
    v40 v0
    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
    v40 v0
    #endif
#else
    v40 v0
    #endif
    // run_target_args' is_unit
    let v121 : (string -> unit) = v18.l0
    v121 v0
and closure5 (v0 : int32, v1 : exn) () : unit =
    let v2 : US0 = US0_0
    let v3 : bool = method8(v2)
    if v3 then
        let v4 : unit = ()
        let v5 : (unit -> unit) = closure0()
        let v6 : unit = (fun () -> v5 (); v4) ()
        let struct (v20 : Mut0, v21 : Mut1, v22 : Mut2, v23 : Mut3, v24 : Mut4, v25 : int64 option) = TraceState.trace_state.Value
        let v38 : string = method9(v20, v21, v22, v23, v24, v25)
        let v39 : string = method13()
        (* run_target_args'
        let v40 : unit = ()
        run_target_args' *)
        
#if FABLE_COMPILER || WASM || CONTRACT
        
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
        let v41 : string = $"%A{v1}"
        let _run_target_args'_v40 = v41 
        #endif
#if FABLE_COMPILER_RUST && WASM
        let v44 : string = $"%A{v1}"
        let _run_target_args'_v40 = v44 
        #endif
#if FABLE_COMPILER_RUST && CONTRACT
        let v47 : string = $"%A{v1}"
        let _run_target_args'_v40 = v47 
        #endif
#if FABLE_COMPILER_TYPESCRIPT
        let v50 : string = $"%A{v1}"
        let _run_target_args'_v40 = v50 
        #endif
#if FABLE_COMPILER_PYTHON
        let v53 : string = $"%A{v1}"
        let _run_target_args'_v40 = v53 
        #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
        let v56 : string = $"%A{v1}"
        let _run_target_args'_v40 = v56 
        #endif
#else
        let v59 : string = $"{v1.GetType ()}: {v1.Message}"
        let _run_target_args'_v40 = v59 
        #endif
        let v60 : string = _run_target_args'_v40 
        let v65 : string = method17(v20, v21, v22, v23, v24, v25, v38, v39, v0, v60)
        method20(v65)
and method7 (v0 : string, v1 : int32) : Async<bool> =
    (* run_target_args'
    let v2 : unit = ()
    run_target_args' *)
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v3 : Async<bool> = null |> unbox<Async<bool>>
    let _run_target_args'_v2 = v3 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v6 : Async<bool> = null |> unbox<Async<bool>>
    let _run_target_args'_v2 = v6 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v9 : Async<bool> = null |> unbox<Async<bool>>
    let _run_target_args'_v2 = v9 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v12 : unit = ()
    let _let'_v12 =
        async {
            let v15 : Async<System.Threading.CancellationToken> = Async.CancellationToken
            let! v15 = v15 
            let v16 : System.Threading.CancellationToken = v15 
            (* run_target_args'
            let v17 : unit = ()
            run_target_args' *)
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v18 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient>
            let _run_target_args'_v17 = v18 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v21 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient>
            let _run_target_args'_v17 = v21 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v24 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient>
            let _run_target_args'_v17 = v24 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v27 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient>
            let _run_target_args'_v17 = v27 
            #endif
#if FABLE_COMPILER_PYTHON
            let v30 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient>
            let _run_target_args'_v17 = v30 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v33 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient>
            let _run_target_args'_v17 = v33 
            #endif
#else
            let v36 : System_Net_Sockets_TcpClient = new System_Net_Sockets_TcpClient ()
            let _run_target_args'_v17 = v36 
            #endif
            let v37 : System_Net_Sockets_TcpClient = _run_target_args'_v17 
            use v37 = v37 
            let v42 : System_Net_Sockets_TcpClient = v37 
            try
                (* run_target_args'
                let v43 : unit = ()
                run_target_args' *)
                
#if FABLE_COMPILER || WASM || CONTRACT
                
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                let v44 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask>
                let _run_target_args'_v43 = v44 
                #endif
#if FABLE_COMPILER_RUST && WASM
                let v47 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask>
                let _run_target_args'_v43 = v47 
                #endif
#if FABLE_COMPILER_RUST && CONTRACT
                let v50 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask>
                let _run_target_args'_v43 = v50 
                #endif
#if FABLE_COMPILER_TYPESCRIPT
                let v53 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask>
                let _run_target_args'_v43 = v53 
                #endif
#if FABLE_COMPILER_PYTHON
                let v56 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask>
                let _run_target_args'_v43 = v56 
                #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                let v59 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask>
                let _run_target_args'_v43 = v59 
                #endif
#else
                let v62 : System.Threading.Tasks.ValueTask = v42.ConnectAsync (v0, v1, v16)
                let _run_target_args'_v43 = v62 
                #endif
                let v63 : System.Threading.Tasks.ValueTask = _run_target_args'_v43 
                (* run_target_args'
                let v68 : unit = ()
                run_target_args' *)
                
#if FABLE_COMPILER || WASM || CONTRACT
                
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                let v69 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task>
                let _run_target_args'_v68 = v69 
                #endif
#if FABLE_COMPILER_RUST && WASM
                let v72 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task>
                let _run_target_args'_v68 = v72 
                #endif
#if FABLE_COMPILER_RUST && CONTRACT
                let v75 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task>
                let _run_target_args'_v68 = v75 
                #endif
#if FABLE_COMPILER_TYPESCRIPT
                let v78 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task>
                let _run_target_args'_v68 = v78 
                #endif
#if FABLE_COMPILER_PYTHON
                let v81 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task>
                let _run_target_args'_v68 = v81 
                #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                let v84 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task>
                let _run_target_args'_v68 = v84 
                #endif
#else
                let v87 : (unit -> System.Threading.Tasks.Task) = v63.AsTask
                let v88 : System.Threading.Tasks.Task = v87 ()
                let _run_target_args'_v68 = v88 
                #endif
                let v89 : System.Threading.Tasks.Task = _run_target_args'_v68 
                (* run_target_args'
                let v94 : unit = ()
                run_target_args' *)
                
#if FABLE_COMPILER || WASM || CONTRACT
                
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                let v95 : Async<unit> = null |> unbox<Async<unit>>
                let _run_target_args'_v94 = v95 
                #endif
#if FABLE_COMPILER_RUST && WASM
                let v98 : Async<unit> = null |> unbox<Async<unit>>
                let _run_target_args'_v94 = v98 
                #endif
#if FABLE_COMPILER_RUST && CONTRACT
                let v101 : Async<unit> = null |> unbox<Async<unit>>
                let _run_target_args'_v94 = v101 
                #endif
#if FABLE_COMPILER_TYPESCRIPT
                let v104 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask
                let v105 : Async<unit> = v104 v89
                let _run_target_args'_v94 = v105 
                #endif
#if FABLE_COMPILER_PYTHON
                let v106 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask
                let v107 : Async<unit> = v106 v89
                let _run_target_args'_v94 = v107 
                #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                let v108 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask
                let v109 : Async<unit> = v108 v89
                let _run_target_args'_v94 = v109 
                #endif
#else
                let v110 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask
                let v111 : Async<unit> = v110 v89
                let _run_target_args'_v94 = v111 
                #endif
                let v112 : Async<unit> = _run_target_args'_v94 
                do! v112 
                return true 
                (* indent
                ()
            indent *)
            with ex ->
                let v191 : exn = ex
                let v192 : unit = ()
                let v193 : (unit -> unit) = closure5(v1, v191)
                let v194 : unit = (fun () -> v193 (); v192) ()
                return false 
                (* indent
                ()
            indent *)
            (* try_unit
            let v327 : bool = try_unit *)
            (* indent
            ()
        indent *)
        }
        (* indent
        ()
    indent *)
    let v2535 : Async<bool> = _let'_v12 
    let _run_target_args'_v2 = v2535 
    #endif
#if FABLE_COMPILER_PYTHON
    let v2536 : unit = ()
    let _let'_v2536 =
        async {
            let v2539 : Async<System.Threading.CancellationToken> = Async.CancellationToken
            let! v2539 = v2539 
            let v2540 : System.Threading.CancellationToken = v2539 
            (* run_target_args'
            let v2541 : unit = ()
            run_target_args' *)
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v2542 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient>
            let _run_target_args'_v2541 = v2542 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v2545 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient>
            let _run_target_args'_v2541 = v2545 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v2548 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient>
            let _run_target_args'_v2541 = v2548 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v2551 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient>
            let _run_target_args'_v2541 = v2551 
            #endif
#if FABLE_COMPILER_PYTHON
            let v2554 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient>
            let _run_target_args'_v2541 = v2554 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v2557 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient>
            let _run_target_args'_v2541 = v2557 
            #endif
#else
            let v2560 : System_Net_Sockets_TcpClient = new System_Net_Sockets_TcpClient ()
            let _run_target_args'_v2541 = v2560 
            #endif
            let v2561 : System_Net_Sockets_TcpClient = _run_target_args'_v2541 
            use v2561 = v2561 
            let v2566 : System_Net_Sockets_TcpClient = v2561 
            try
                (* run_target_args'
                let v2567 : unit = ()
                run_target_args' *)
                
#if FABLE_COMPILER || WASM || CONTRACT
                
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                let v2568 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask>
                let _run_target_args'_v2567 = v2568 
                #endif
#if FABLE_COMPILER_RUST && WASM
                let v2571 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask>
                let _run_target_args'_v2567 = v2571 
                #endif
#if FABLE_COMPILER_RUST && CONTRACT
                let v2574 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask>
                let _run_target_args'_v2567 = v2574 
                #endif
#if FABLE_COMPILER_TYPESCRIPT
                let v2577 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask>
                let _run_target_args'_v2567 = v2577 
                #endif
#if FABLE_COMPILER_PYTHON
                let v2580 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask>
                let _run_target_args'_v2567 = v2580 
                #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                let v2583 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask>
                let _run_target_args'_v2567 = v2583 
                #endif
#else
                let v2586 : System.Threading.Tasks.ValueTask = v2566.ConnectAsync (v0, v1, v2540)
                let _run_target_args'_v2567 = v2586 
                #endif
                let v2587 : System.Threading.Tasks.ValueTask = _run_target_args'_v2567 
                (* run_target_args'
                let v2592 : unit = ()
                run_target_args' *)
                
#if FABLE_COMPILER || WASM || CONTRACT
                
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                let v2593 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task>
                let _run_target_args'_v2592 = v2593 
                #endif
#if FABLE_COMPILER_RUST && WASM
                let v2596 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task>
                let _run_target_args'_v2592 = v2596 
                #endif
#if FABLE_COMPILER_RUST && CONTRACT
                let v2599 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task>
                let _run_target_args'_v2592 = v2599 
                #endif
#if FABLE_COMPILER_TYPESCRIPT
                let v2602 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task>
                let _run_target_args'_v2592 = v2602 
                #endif
#if FABLE_COMPILER_PYTHON
                let v2605 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task>
                let _run_target_args'_v2592 = v2605 
                #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                let v2608 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task>
                let _run_target_args'_v2592 = v2608 
                #endif
#else
                let v2611 : (unit -> System.Threading.Tasks.Task) = v2587.AsTask
                let v2612 : System.Threading.Tasks.Task = v2611 ()
                let _run_target_args'_v2592 = v2612 
                #endif
                let v2613 : System.Threading.Tasks.Task = _run_target_args'_v2592 
                (* run_target_args'
                let v2618 : unit = ()
                run_target_args' *)
                
#if FABLE_COMPILER || WASM || CONTRACT
                
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                let v2619 : Async<unit> = null |> unbox<Async<unit>>
                let _run_target_args'_v2618 = v2619 
                #endif
#if FABLE_COMPILER_RUST && WASM
                let v2622 : Async<unit> = null |> unbox<Async<unit>>
                let _run_target_args'_v2618 = v2622 
                #endif
#if FABLE_COMPILER_RUST && CONTRACT
                let v2625 : Async<unit> = null |> unbox<Async<unit>>
                let _run_target_args'_v2618 = v2625 
                #endif
#if FABLE_COMPILER_TYPESCRIPT
                let v2628 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask
                let v2629 : Async<unit> = v2628 v2613
                let _run_target_args'_v2618 = v2629 
                #endif
#if FABLE_COMPILER_PYTHON
                let v2630 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask
                let v2631 : Async<unit> = v2630 v2613
                let _run_target_args'_v2618 = v2631 
                #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                let v2632 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask
                let v2633 : Async<unit> = v2632 v2613
                let _run_target_args'_v2618 = v2633 
                #endif
#else
                let v2634 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask
                let v2635 : Async<unit> = v2634 v2613
                let _run_target_args'_v2618 = v2635 
                #endif
                let v2636 : Async<unit> = _run_target_args'_v2618 
                do! v2636 
                return true 
                (* indent
                ()
            indent *)
            with ex ->
                let v2715 : exn = ex
                let v2716 : unit = ()
                let v2717 : (unit -> unit) = closure5(v1, v2715)
                let v2718 : unit = (fun () -> v2717 (); v2716) ()
                return false 
                (* indent
                ()
            indent *)
            (* try_unit
            let v2851 : bool = try_unit *)
            (* indent
            ()
        indent *)
        }
        (* indent
        ()
    indent *)
    let v5059 : Async<bool> = _let'_v2536 
    let _run_target_args'_v2 = v5059 
    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
    let v5060 : unit = ()
    let _let'_v5060 =
        async {
            let v5063 : Async<System.Threading.CancellationToken> = Async.CancellationToken
            let! v5063 = v5063 
            let v5064 : System.Threading.CancellationToken = v5063 
            (* run_target_args'
            let v5065 : unit = ()
            run_target_args' *)
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v5066 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient>
            let _run_target_args'_v5065 = v5066 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v5069 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient>
            let _run_target_args'_v5065 = v5069 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v5072 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient>
            let _run_target_args'_v5065 = v5072 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v5075 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient>
            let _run_target_args'_v5065 = v5075 
            #endif
#if FABLE_COMPILER_PYTHON
            let v5078 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient>
            let _run_target_args'_v5065 = v5078 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v5081 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient>
            let _run_target_args'_v5065 = v5081 
            #endif
#else
            let v5084 : System_Net_Sockets_TcpClient = new System_Net_Sockets_TcpClient ()
            let _run_target_args'_v5065 = v5084 
            #endif
            let v5085 : System_Net_Sockets_TcpClient = _run_target_args'_v5065 
            use v5085 = v5085 
            let v5090 : System_Net_Sockets_TcpClient = v5085 
            try
                (* run_target_args'
                let v5091 : unit = ()
                run_target_args' *)
                
#if FABLE_COMPILER || WASM || CONTRACT
                
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                let v5092 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask>
                let _run_target_args'_v5091 = v5092 
                #endif
#if FABLE_COMPILER_RUST && WASM
                let v5095 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask>
                let _run_target_args'_v5091 = v5095 
                #endif
#if FABLE_COMPILER_RUST && CONTRACT
                let v5098 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask>
                let _run_target_args'_v5091 = v5098 
                #endif
#if FABLE_COMPILER_TYPESCRIPT
                let v5101 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask>
                let _run_target_args'_v5091 = v5101 
                #endif
#if FABLE_COMPILER_PYTHON
                let v5104 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask>
                let _run_target_args'_v5091 = v5104 
                #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                let v5107 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask>
                let _run_target_args'_v5091 = v5107 
                #endif
#else
                let v5110 : System.Threading.Tasks.ValueTask = v5090.ConnectAsync (v0, v1, v5064)
                let _run_target_args'_v5091 = v5110 
                #endif
                let v5111 : System.Threading.Tasks.ValueTask = _run_target_args'_v5091 
                (* run_target_args'
                let v5116 : unit = ()
                run_target_args' *)
                
#if FABLE_COMPILER || WASM || CONTRACT
                
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                let v5117 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task>
                let _run_target_args'_v5116 = v5117 
                #endif
#if FABLE_COMPILER_RUST && WASM
                let v5120 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task>
                let _run_target_args'_v5116 = v5120 
                #endif
#if FABLE_COMPILER_RUST && CONTRACT
                let v5123 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task>
                let _run_target_args'_v5116 = v5123 
                #endif
#if FABLE_COMPILER_TYPESCRIPT
                let v5126 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task>
                let _run_target_args'_v5116 = v5126 
                #endif
#if FABLE_COMPILER_PYTHON
                let v5129 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task>
                let _run_target_args'_v5116 = v5129 
                #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                let v5132 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task>
                let _run_target_args'_v5116 = v5132 
                #endif
#else
                let v5135 : (unit -> System.Threading.Tasks.Task) = v5111.AsTask
                let v5136 : System.Threading.Tasks.Task = v5135 ()
                let _run_target_args'_v5116 = v5136 
                #endif
                let v5137 : System.Threading.Tasks.Task = _run_target_args'_v5116 
                (* run_target_args'
                let v5142 : unit = ()
                run_target_args' *)
                
#if FABLE_COMPILER || WASM || CONTRACT
                
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                let v5143 : Async<unit> = null |> unbox<Async<unit>>
                let _run_target_args'_v5142 = v5143 
                #endif
#if FABLE_COMPILER_RUST && WASM
                let v5146 : Async<unit> = null |> unbox<Async<unit>>
                let _run_target_args'_v5142 = v5146 
                #endif
#if FABLE_COMPILER_RUST && CONTRACT
                let v5149 : Async<unit> = null |> unbox<Async<unit>>
                let _run_target_args'_v5142 = v5149 
                #endif
#if FABLE_COMPILER_TYPESCRIPT
                let v5152 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask
                let v5153 : Async<unit> = v5152 v5137
                let _run_target_args'_v5142 = v5153 
                #endif
#if FABLE_COMPILER_PYTHON
                let v5154 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask
                let v5155 : Async<unit> = v5154 v5137
                let _run_target_args'_v5142 = v5155 
                #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                let v5156 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask
                let v5157 : Async<unit> = v5156 v5137
                let _run_target_args'_v5142 = v5157 
                #endif
#else
                let v5158 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask
                let v5159 : Async<unit> = v5158 v5137
                let _run_target_args'_v5142 = v5159 
                #endif
                let v5160 : Async<unit> = _run_target_args'_v5142 
                do! v5160 
                return true 
                (* indent
                ()
            indent *)
            with ex ->
                let v5239 : exn = ex
                let v5240 : unit = ()
                let v5241 : (unit -> unit) = closure5(v1, v5239)
                let v5242 : unit = (fun () -> v5241 (); v5240) ()
                return false 
                (* indent
                ()
            indent *)
            (* try_unit
            let v5375 : bool = try_unit *)
            (* indent
            ()
        indent *)
        }
        (* indent
        ()
    indent *)
    let v7583 : Async<bool> = _let'_v5060 
    let _run_target_args'_v2 = v7583 
    #endif
#else
    let v7584 : unit = ()
    let _let'_v7584 =
        async {
            let v7587 : Async<System.Threading.CancellationToken> = Async.CancellationToken
            let! v7587 = v7587 
            let v7588 : System.Threading.CancellationToken = v7587 
            (* run_target_args'
            let v7589 : unit = ()
            run_target_args' *)
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v7590 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient>
            let _run_target_args'_v7589 = v7590 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v7593 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient>
            let _run_target_args'_v7589 = v7593 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v7596 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient>
            let _run_target_args'_v7589 = v7596 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v7599 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient>
            let _run_target_args'_v7589 = v7599 
            #endif
#if FABLE_COMPILER_PYTHON
            let v7602 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient>
            let _run_target_args'_v7589 = v7602 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v7605 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient>
            let _run_target_args'_v7589 = v7605 
            #endif
#else
            let v7608 : System_Net_Sockets_TcpClient = new System_Net_Sockets_TcpClient ()
            let _run_target_args'_v7589 = v7608 
            #endif
            let v7609 : System_Net_Sockets_TcpClient = _run_target_args'_v7589 
            use v7609 = v7609 
            let v7614 : System_Net_Sockets_TcpClient = v7609 
            try
                (* run_target_args'
                let v7615 : unit = ()
                run_target_args' *)
                
#if FABLE_COMPILER || WASM || CONTRACT
                
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                let v7616 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask>
                let _run_target_args'_v7615 = v7616 
                #endif
#if FABLE_COMPILER_RUST && WASM
                let v7619 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask>
                let _run_target_args'_v7615 = v7619 
                #endif
#if FABLE_COMPILER_RUST && CONTRACT
                let v7622 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask>
                let _run_target_args'_v7615 = v7622 
                #endif
#if FABLE_COMPILER_TYPESCRIPT
                let v7625 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask>
                let _run_target_args'_v7615 = v7625 
                #endif
#if FABLE_COMPILER_PYTHON
                let v7628 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask>
                let _run_target_args'_v7615 = v7628 
                #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                let v7631 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask>
                let _run_target_args'_v7615 = v7631 
                #endif
#else
                let v7634 : System.Threading.Tasks.ValueTask = v7614.ConnectAsync (v0, v1, v7588)
                let _run_target_args'_v7615 = v7634 
                #endif
                let v7635 : System.Threading.Tasks.ValueTask = _run_target_args'_v7615 
                (* run_target_args'
                let v7640 : unit = ()
                run_target_args' *)
                
#if FABLE_COMPILER || WASM || CONTRACT
                
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                let v7641 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task>
                let _run_target_args'_v7640 = v7641 
                #endif
#if FABLE_COMPILER_RUST && WASM
                let v7644 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task>
                let _run_target_args'_v7640 = v7644 
                #endif
#if FABLE_COMPILER_RUST && CONTRACT
                let v7647 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task>
                let _run_target_args'_v7640 = v7647 
                #endif
#if FABLE_COMPILER_TYPESCRIPT
                let v7650 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task>
                let _run_target_args'_v7640 = v7650 
                #endif
#if FABLE_COMPILER_PYTHON
                let v7653 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task>
                let _run_target_args'_v7640 = v7653 
                #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                let v7656 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task>
                let _run_target_args'_v7640 = v7656 
                #endif
#else
                let v7659 : (unit -> System.Threading.Tasks.Task) = v7635.AsTask
                let v7660 : System.Threading.Tasks.Task = v7659 ()
                let _run_target_args'_v7640 = v7660 
                #endif
                let v7661 : System.Threading.Tasks.Task = _run_target_args'_v7640 
                (* run_target_args'
                let v7666 : unit = ()
                run_target_args' *)
                
#if FABLE_COMPILER || WASM || CONTRACT
                
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                let v7667 : Async<unit> = null |> unbox<Async<unit>>
                let _run_target_args'_v7666 = v7667 
                #endif
#if FABLE_COMPILER_RUST && WASM
                let v7670 : Async<unit> = null |> unbox<Async<unit>>
                let _run_target_args'_v7666 = v7670 
                #endif
#if FABLE_COMPILER_RUST && CONTRACT
                let v7673 : Async<unit> = null |> unbox<Async<unit>>
                let _run_target_args'_v7666 = v7673 
                #endif
#if FABLE_COMPILER_TYPESCRIPT
                let v7676 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask
                let v7677 : Async<unit> = v7676 v7661
                let _run_target_args'_v7666 = v7677 
                #endif
#if FABLE_COMPILER_PYTHON
                let v7678 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask
                let v7679 : Async<unit> = v7678 v7661
                let _run_target_args'_v7666 = v7679 
                #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                let v7680 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask
                let v7681 : Async<unit> = v7680 v7661
                let _run_target_args'_v7666 = v7681 
                #endif
#else
                let v7682 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask
                let v7683 : Async<unit> = v7682 v7661
                let _run_target_args'_v7666 = v7683 
                #endif
                let v7684 : Async<unit> = _run_target_args'_v7666 
                do! v7684 
                return true 
                (* indent
                ()
            indent *)
            with ex ->
                let v7763 : exn = ex
                let v7764 : unit = ()
                let v7765 : (unit -> unit) = closure5(v1, v7763)
                let v7766 : unit = (fun () -> v7765 (); v7764) ()
                return false 
                (* indent
                ()
            indent *)
            (* try_unit
            let v7899 : bool = try_unit *)
            (* indent
            ()
        indent *)
        }
        (* indent
        ()
    indent *)
    let v10107 : Async<bool> = _let'_v7584 
    let _run_target_args'_v2 = v10107 
    #endif
    let v10108 : Async<bool> = _run_target_args'_v2 
    v10108
and method6 (v0 : string, v1 : int32) : Async<bool> =
    method7(v0, v1)
and closure4 (v0 : string) (v1 : int32) : Async<bool> =
    method6(v0, v1)
and closure3 () (v0 : string) : (int32 -> Async<bool>) =
    closure4(v0)
and closure14 () (v0 : bool) : US7 =
    US7_0(v0)
and method26 () : (bool -> US7) =
    closure14()
and closure15 () (v0 : exn) : US7 =
    US7_1(v0)
and method27 () : (exn -> US7) =
    closure15()
and method25 (v0 : Async<Choice<bool, exn>>) : Async<US7> =
    (* run_target_args'
    let v1 : unit = ()
    run_target_args' *)
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v2 : Async<US7> = null |> unbox<Async<US7>>
    let _run_target_args'_v1 = v2 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v5 : Async<US7> = null |> unbox<Async<US7>>
    let _run_target_args'_v1 = v5 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v8 : Async<US7> = null |> unbox<Async<US7>>
    let _run_target_args'_v1 = v8 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v11 : unit = ()
    let _let'_v11 =
        async {
            let! v0 = v0 
            let v14 : Choice<bool, exn> = v0 
            (* run_target_args'
            let v15 : unit = ()
            run_target_args' *)
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v16 : US7 = null |> unbox<US7>
            let _run_target_args'_v15 = v16 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v19 : US7 = null |> unbox<US7>
            let _run_target_args'_v15 = v19 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v22 : US7 = null |> unbox<US7>
            let _run_target_args'_v15 = v22 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v25 : US7 = null |> unbox<US7>
            let _run_target_args'_v15 = v25 
            #endif
#if FABLE_COMPILER_PYTHON
            let v28 : US7 = null |> unbox<US7>
            let _run_target_args'_v15 = v28 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v31 : (bool -> US7) = method26()
            let v32 : (exn -> US7) = method27()
            let v33 : US7 = match v14 with Choice1Of2 x -> v31 x | Choice2Of2 x -> v32 x
            let _run_target_args'_v15 = v33 
            #endif
#else
            let v34 : (bool -> US7) = method26()
            let v35 : (exn -> US7) = method27()
            let v36 : US7 = match v14 with Choice1Of2 x -> v34 x | Choice2Of2 x -> v35 x
            let _run_target_args'_v15 = v36 
            #endif
            let v37 : US7 = _run_target_args'_v15 
            return v37 
            (* indent
            ()
        indent *)
        }
        (* indent
        ()
    indent *)
    let v238 : Async<US7> = _let'_v11 
    let _run_target_args'_v1 = v238 
    #endif
#if FABLE_COMPILER_PYTHON
    let v239 : unit = ()
    let _let'_v239 =
        async {
            let! v0 = v0 
            let v242 : Choice<bool, exn> = v0 
            (* run_target_args'
            let v243 : unit = ()
            run_target_args' *)
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v244 : US7 = null |> unbox<US7>
            let _run_target_args'_v243 = v244 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v247 : US7 = null |> unbox<US7>
            let _run_target_args'_v243 = v247 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v250 : US7 = null |> unbox<US7>
            let _run_target_args'_v243 = v250 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v253 : US7 = null |> unbox<US7>
            let _run_target_args'_v243 = v253 
            #endif
#if FABLE_COMPILER_PYTHON
            let v256 : US7 = null |> unbox<US7>
            let _run_target_args'_v243 = v256 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v259 : (bool -> US7) = method26()
            let v260 : (exn -> US7) = method27()
            let v261 : US7 = match v242 with Choice1Of2 x -> v259 x | Choice2Of2 x -> v260 x
            let _run_target_args'_v243 = v261 
            #endif
#else
            let v262 : (bool -> US7) = method26()
            let v263 : (exn -> US7) = method27()
            let v264 : US7 = match v242 with Choice1Of2 x -> v262 x | Choice2Of2 x -> v263 x
            let _run_target_args'_v243 = v264 
            #endif
            let v265 : US7 = _run_target_args'_v243 
            return v265 
            (* indent
            ()
        indent *)
        }
        (* indent
        ()
    indent *)
    let v466 : Async<US7> = _let'_v239 
    let _run_target_args'_v1 = v466 
    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
    let v467 : unit = ()
    let _let'_v467 =
        async {
            let! v0 = v0 
            let v470 : Choice<bool, exn> = v0 
            (* run_target_args'
            let v471 : unit = ()
            run_target_args' *)
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v472 : US7 = null |> unbox<US7>
            let _run_target_args'_v471 = v472 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v475 : US7 = null |> unbox<US7>
            let _run_target_args'_v471 = v475 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v478 : US7 = null |> unbox<US7>
            let _run_target_args'_v471 = v478 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v481 : US7 = null |> unbox<US7>
            let _run_target_args'_v471 = v481 
            #endif
#if FABLE_COMPILER_PYTHON
            let v484 : US7 = null |> unbox<US7>
            let _run_target_args'_v471 = v484 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v487 : (bool -> US7) = method26()
            let v488 : (exn -> US7) = method27()
            let v489 : US7 = match v470 with Choice1Of2 x -> v487 x | Choice2Of2 x -> v488 x
            let _run_target_args'_v471 = v489 
            #endif
#else
            let v490 : (bool -> US7) = method26()
            let v491 : (exn -> US7) = method27()
            let v492 : US7 = match v470 with Choice1Of2 x -> v490 x | Choice2Of2 x -> v491 x
            let _run_target_args'_v471 = v492 
            #endif
            let v493 : US7 = _run_target_args'_v471 
            return v493 
            (* indent
            ()
        indent *)
        }
        (* indent
        ()
    indent *)
    let v694 : Async<US7> = _let'_v467 
    let _run_target_args'_v1 = v694 
    #endif
#else
    let v695 : unit = ()
    let _let'_v695 =
        async {
            let! v0 = v0 
            let v698 : Choice<bool, exn> = v0 
            (* run_target_args'
            let v699 : unit = ()
            run_target_args' *)
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v700 : US7 = null |> unbox<US7>
            let _run_target_args'_v699 = v700 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v703 : US7 = null |> unbox<US7>
            let _run_target_args'_v699 = v703 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v706 : US7 = null |> unbox<US7>
            let _run_target_args'_v699 = v706 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v709 : US7 = null |> unbox<US7>
            let _run_target_args'_v699 = v709 
            #endif
#if FABLE_COMPILER_PYTHON
            let v712 : US7 = null |> unbox<US7>
            let _run_target_args'_v699 = v712 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v715 : (bool -> US7) = method26()
            let v716 : (exn -> US7) = method27()
            let v717 : US7 = match v698 with Choice1Of2 x -> v715 x | Choice2Of2 x -> v716 x
            let _run_target_args'_v699 = v717 
            #endif
#else
            let v718 : (bool -> US7) = method26()
            let v719 : (exn -> US7) = method27()
            let v720 : US7 = match v698 with Choice1Of2 x -> v718 x | Choice2Of2 x -> v719 x
            let _run_target_args'_v699 = v720 
            #endif
            let v721 : US7 = _run_target_args'_v699 
            return v721 
            (* indent
            ()
        indent *)
        }
        (* indent
        ()
    indent *)
    let v922 : Async<US7> = _let'_v695 
    let _run_target_args'_v1 = v922 
    #endif
    let v923 : Async<US7> = _run_target_args'_v1 
    v923
and method28 (v0 : Async<US7>) : Async<US8> =
    (* run_target_args'
    let v1 : unit = ()
    run_target_args' *)
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v2 : Async<US8> = null |> unbox<Async<US8>>
    let _run_target_args'_v1 = v2 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v5 : Async<US8> = null |> unbox<Async<US8>>
    let _run_target_args'_v1 = v5 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v8 : Async<US8> = null |> unbox<Async<US8>>
    let _run_target_args'_v1 = v8 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v11 : unit = ()
    let _let'_v11 =
        async {
            let! v0 = v0 
            let v14 : US7 = v0 
            let v20 : US8 =
                match v14 with
                | US7_0(v15) -> (* C1of2 *)
                    US8_0(v15)
                | US7_1(v17) -> (* C2of2 *)
                    US8_1(v17)
            return v20 
            (* indent
            ()
        indent *)
        }
        (* indent
        ()
    indent *)
    let v70 : Async<US8> = _let'_v11 
    let _run_target_args'_v1 = v70 
    #endif
#if FABLE_COMPILER_PYTHON
    let v71 : unit = ()
    let _let'_v71 =
        async {
            let! v0 = v0 
            let v74 : US7 = v0 
            let v80 : US8 =
                match v74 with
                | US7_0(v75) -> (* C1of2 *)
                    US8_0(v75)
                | US7_1(v77) -> (* C2of2 *)
                    US8_1(v77)
            return v80 
            (* indent
            ()
        indent *)
        }
        (* indent
        ()
    indent *)
    let v130 : Async<US8> = _let'_v71 
    let _run_target_args'_v1 = v130 
    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
    let v131 : unit = ()
    let _let'_v131 =
        async {
            let! v0 = v0 
            let v134 : US7 = v0 
            let v140 : US8 =
                match v134 with
                | US7_0(v135) -> (* C1of2 *)
                    US8_0(v135)
                | US7_1(v137) -> (* C2of2 *)
                    US8_1(v137)
            return v140 
            (* indent
            ()
        indent *)
        }
        (* indent
        ()
    indent *)
    let v190 : Async<US8> = _let'_v131 
    let _run_target_args'_v1 = v190 
    #endif
#else
    let v191 : unit = ()
    let _let'_v191 =
        async {
            let! v0 = v0 
            let v194 : US7 = v0 
            let v200 : US8 =
                match v194 with
                | US7_0(v195) -> (* C1of2 *)
                    US8_0(v195)
                | US7_1(v197) -> (* C2of2 *)
                    US8_1(v197)
            return v200 
            (* indent
            ()
        indent *)
        }
        (* indent
        ()
    indent *)
    let v250 : Async<US8> = _let'_v191 
    let _run_target_args'_v1 = v250 
    #endif
    let v251 : Async<US8> = _run_target_args'_v1 
    v251
and method31 (v0 : int32) : string =
    let v1 : string = method15()
    let v2 : Mut3 = {l0 = v1} : Mut3
    let v3 : string = "{ "
    let v4 : string = $"{v3}"
    let v7 : unit = ()
    let v8 : (unit -> unit) = closure7(v2, v4)
    let v9 : unit = (fun () -> v8 (); v7) ()
    let v12 : string = "timeout"
    let v13 : string = $"{v12}"
    let v16 : unit = ()
    let v17 : (unit -> unit) = closure7(v2, v13)
    let v18 : unit = (fun () -> v17 (); v16) ()
    let v21 : string = " = "
    let v22 : string = $"{v21}"
    let v25 : unit = ()
    let v26 : (unit -> unit) = closure7(v2, v22)
    let v27 : unit = (fun () -> v26 (); v25) ()
    let v30 : string = $"{v0}"
    let v33 : unit = ()
    let v34 : (unit -> unit) = closure7(v2, v30)
    let v35 : unit = (fun () -> v34 (); v33) ()
    let v38 : string = " }"
    let v39 : string = $"{v38}"
    let v42 : unit = ()
    let v43 : (unit -> unit) = closure7(v2, v39)
    let v44 : unit = (fun () -> v43 (); v42) ()
    let v47 : string = v2.l0
    v47
and method30 (v0 : Mut0, v1 : Mut1, v2 : Mut2, v3 : Mut3, v4 : Mut4, v5 : int64 option, v6 : string, v7 : string, v8 : int32) : string =
    let v9 : string = method31(v8)
    let v10 : int64 = v0.l0
    let v11 : string = "async.run_with_timeout_async"
    let v12 : string = $"{v6} {v7} #{v10} %s{v11} / {v9}"
    method19(v12)
and closure16 (v0 : int32) () : unit =
    let v1 : US0 = US0_0
    let v2 : bool = method8(v1)
    if v2 then
        let v3 : unit = ()
        let v4 : (unit -> unit) = closure0()
        let v5 : unit = (fun () -> v4 (); v3) ()
        let struct (v19 : Mut0, v20 : Mut1, v21 : Mut2, v22 : Mut3, v23 : Mut4, v24 : int64 option) = TraceState.trace_state.Value
        let v37 : string = method9(v19, v20, v21, v22, v23, v24)
        let v38 : string = method13()
        let v39 : string = method30(v19, v20, v21, v22, v23, v24, v37, v38, v0)
        method20(v39)
and method32 () : string =
    
    
    
    
    
    let v0 : string = "Critical"
    let v1 : (unit -> string) = v0.ToLower
    let v2 : string = v1 ()
    let v5 : char = v2.[int 0]
    let v6 : string = method14(v5)
    (* run_target_args'
    let v7 : unit = ()
    run_target_args' *)
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v8 : string = "inline_colorization::color_bright_red"
    let v9 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v8 
    (* run_target_args'
    let v10 : unit = ()
    run_target_args' *)
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v11 : string = "&*$0"
    let v12 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v11 
    let _run_target_args'_v10 = v12 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v13 : string = "&*$0"
    let v14 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v13 
    let _run_target_args'_v10 = v14 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v15 : string = "&*$0"
    let v16 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v15 
    let _run_target_args'_v10 = v16 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v17 : Ref<Str> = v6 |> unbox<Ref<Str>>
    let _run_target_args'_v10 = v17 
    #endif
#if FABLE_COMPILER_PYTHON
    let v20 : Ref<Str> = v6 |> unbox<Ref<Str>>
    let _run_target_args'_v10 = v20 
    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
    let v23 : Ref<Str> = v6 |> unbox<Ref<Str>>
    let _run_target_args'_v10 = v23 
    #endif
#else
    let v26 : Ref<Str> = v6 |> unbox<Ref<Str>>
    let _run_target_args'_v10 = v26 
    #endif
    let v29 : Ref<Str> = _run_target_args'_v10 
    let v34 : string = "inline_colorization::color_reset"
    let v35 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v34 
    let v36 : string = $"format!(\"{{}}{{}}{{}}\", $0, $1, $2)"
    let v37 : std_string_String = Fable.Core.RustInterop.emitRustExpr struct (v9, v29, v35) v36 
    let v38 : string = "fable_library_rust::String_::fromString($0)"
    let v39 : string = Fable.Core.RustInterop.emitRustExpr v37 v38 
    let _run_target_args'_v7 = v39 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v40 : string = "inline_colorization::color_bright_red"
    let v41 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v40 
    (* run_target_args'
    let v42 : unit = ()
    run_target_args' *)
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v43 : string = "&*$0"
    let v44 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v43 
    let _run_target_args'_v42 = v44 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v45 : string = "&*$0"
    let v46 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v45 
    let _run_target_args'_v42 = v46 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v47 : string = "&*$0"
    let v48 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v47 
    let _run_target_args'_v42 = v48 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v49 : Ref<Str> = v6 |> unbox<Ref<Str>>
    let _run_target_args'_v42 = v49 
    #endif
#if FABLE_COMPILER_PYTHON
    let v52 : Ref<Str> = v6 |> unbox<Ref<Str>>
    let _run_target_args'_v42 = v52 
    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
    let v55 : Ref<Str> = v6 |> unbox<Ref<Str>>
    let _run_target_args'_v42 = v55 
    #endif
#else
    let v58 : Ref<Str> = v6 |> unbox<Ref<Str>>
    let _run_target_args'_v42 = v58 
    #endif
    let v61 : Ref<Str> = _run_target_args'_v42 
    let v66 : string = "inline_colorization::color_reset"
    let v67 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v66 
    let v68 : string = $"format!(\"{{}}{{}}{{}}\", $0, $1, $2)"
    let v69 : std_string_String = Fable.Core.RustInterop.emitRustExpr struct (v41, v61, v67) v68 
    let v70 : string = "fable_library_rust::String_::fromString($0)"
    let v71 : string = Fable.Core.RustInterop.emitRustExpr v69 v70 
    let _run_target_args'_v7 = v71 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v72 : string = "inline_colorization::color_bright_red"
    let v73 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v72 
    (* run_target_args'
    let v74 : unit = ()
    run_target_args' *)
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v75 : string = "&*$0"
    let v76 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v75 
    let _run_target_args'_v74 = v76 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v77 : string = "&*$0"
    let v78 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v77 
    let _run_target_args'_v74 = v78 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v79 : string = "&*$0"
    let v80 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v79 
    let _run_target_args'_v74 = v80 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v81 : Ref<Str> = v6 |> unbox<Ref<Str>>
    let _run_target_args'_v74 = v81 
    #endif
#if FABLE_COMPILER_PYTHON
    let v84 : Ref<Str> = v6 |> unbox<Ref<Str>>
    let _run_target_args'_v74 = v84 
    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
    let v87 : Ref<Str> = v6 |> unbox<Ref<Str>>
    let _run_target_args'_v74 = v87 
    #endif
#else
    let v90 : Ref<Str> = v6 |> unbox<Ref<Str>>
    let _run_target_args'_v74 = v90 
    #endif
    let v93 : Ref<Str> = _run_target_args'_v74 
    let v98 : string = "inline_colorization::color_reset"
    let v99 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v98 
    let v100 : string = $"format!(\"{{}}{{}}{{}}\", $0, $1, $2)"
    let v101 : std_string_String = Fable.Core.RustInterop.emitRustExpr struct (v73, v93, v99) v100 
    let v102 : string = "fable_library_rust::String_::fromString($0)"
    let v103 : string = Fable.Core.RustInterop.emitRustExpr v101 v102 
    let _run_target_args'_v7 = v103 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v104 : string = "\u001b[91m"
    let v105 : string = method16()
    let v106 : string = v104 + v6 
    let v107 : string = v106 + v105 
    let _run_target_args'_v7 = v107 
    #endif
#if FABLE_COMPILER_PYTHON
    let v108 : string = "\u001b[91m"
    let v109 : string = method16()
    let v110 : string = v108 + v6 
    let v111 : string = v110 + v109 
    let _run_target_args'_v7 = v111 
    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
    let v112 : string = "\u001b[91m"
    let v113 : string = method16()
    let v114 : string = v112 + v6 
    let v115 : string = v114 + v113 
    let _run_target_args'_v7 = v115 
    #endif
#else
    let v116 : string = "\u001b[91m"
    let v117 : string = method16()
    let v118 : string = v116 + v6 
    let v119 : string = v118 + v117 
    let _run_target_args'_v7 = v119 
    #endif
    let v120 : string = _run_target_args'_v7 
    v120
and method34 (v0 : int32, v1 : string) : string =
    let v2 : string = method15()
    let v3 : Mut3 = {l0 = v2} : Mut3
    let v4 : string = "{ "
    let v5 : string = $"{v4}"
    let v8 : unit = ()
    let v9 : (unit -> unit) = closure7(v3, v5)
    let v10 : unit = (fun () -> v9 (); v8) ()
    let v13 : string = "timeout"
    let v14 : string = $"{v13}"
    let v17 : unit = ()
    let v18 : (unit -> unit) = closure7(v3, v14)
    let v19 : unit = (fun () -> v18 (); v17) ()
    let v22 : string = " = "
    let v23 : string = $"{v22}"
    let v26 : unit = ()
    let v27 : (unit -> unit) = closure7(v3, v23)
    let v28 : unit = (fun () -> v27 (); v26) ()
    let v31 : string = $"{v0}"
    let v34 : unit = ()
    let v35 : (unit -> unit) = closure7(v3, v31)
    let v36 : unit = (fun () -> v35 (); v34) ()
    let v39 : string = "; "
    let v40 : string = $"{v39}"
    let v43 : unit = ()
    let v44 : (unit -> unit) = closure7(v3, v40)
    let v45 : unit = (fun () -> v44 (); v43) ()
    let v48 : string = "ex"
    let v49 : string = $"{v48}"
    let v52 : unit = ()
    let v53 : (unit -> unit) = closure7(v3, v49)
    let v54 : unit = (fun () -> v53 (); v52) ()
    let v57 : string = $"{v22}"
    let v60 : unit = ()
    let v61 : (unit -> unit) = closure7(v3, v57)
    let v62 : unit = (fun () -> v61 (); v60) ()
    let v65 : string = $"{v1}"
    let v68 : unit = ()
    let v69 : (unit -> unit) = closure7(v3, v65)
    let v70 : unit = (fun () -> v69 (); v68) ()
    let v73 : string = " }"
    let v74 : string = $"{v73}"
    let v77 : unit = ()
    let v78 : (unit -> unit) = closure7(v3, v74)
    let v79 : unit = (fun () -> v78 (); v77) ()
    let v82 : string = v3.l0
    v82
and method33 (v0 : Mut0, v1 : Mut1, v2 : Mut2, v3 : Mut3, v4 : Mut4, v5 : int64 option, v6 : string, v7 : string, v8 : int32, v9 : string) : string =
    let v10 : string = method34(v8, v9)
    let v11 : int64 = v0.l0
    let v12 : string = "async.run_with_timeout_async**"
    let v13 : string = $"{v6} {v7} #{v11} %s{v12} / {v10}"
    method19(v13)
and closure17 (v0 : int32, v1 : exn) () : unit =
    let v2 : US0 = US0_4
    let v3 : bool = method8(v2)
    if v3 then
        let v4 : unit = ()
        let v5 : (unit -> unit) = closure0()
        let v6 : unit = (fun () -> v5 (); v4) ()
        let struct (v20 : Mut0, v21 : Mut1, v22 : Mut2, v23 : Mut3, v24 : Mut4, v25 : int64 option) = TraceState.trace_state.Value
        let v38 : string = method9(v20, v21, v22, v23, v24, v25)
        let v39 : string = method32()
        (* run_target_args'
        let v40 : unit = ()
        run_target_args' *)
        
#if FABLE_COMPILER || WASM || CONTRACT
        
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
        let v41 : string = $"%A{v1}"
        let _run_target_args'_v40 = v41 
        #endif
#if FABLE_COMPILER_RUST && WASM
        let v44 : string = $"%A{v1}"
        let _run_target_args'_v40 = v44 
        #endif
#if FABLE_COMPILER_RUST && CONTRACT
        let v47 : string = $"%A{v1}"
        let _run_target_args'_v40 = v47 
        #endif
#if FABLE_COMPILER_TYPESCRIPT
        let v50 : string = $"%A{v1}"
        let _run_target_args'_v40 = v50 
        #endif
#if FABLE_COMPILER_PYTHON
        let v53 : string = $"%A{v1}"
        let _run_target_args'_v40 = v53 
        #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
        let v56 : string = $"%A{v1}"
        let _run_target_args'_v40 = v56 
        #endif
#else
        let v59 : string = $"{v1.GetType ()}: {v1.Message}"
        let _run_target_args'_v40 = v59 
        #endif
        let v60 : string = _run_target_args'_v40 
        let v65 : string = method33(v20, v21, v22, v23, v24, v25, v38, v39, v0, v60)
        method20(v65)
and method29 (v0 : int32, v1 : Async<US8>) : Async<US6> =
    (* run_target_args'
    let v2 : unit = ()
    run_target_args' *)
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v3 : Async<US6> = null |> unbox<Async<US6>>
    let _run_target_args'_v2 = v3 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v6 : Async<US6> = null |> unbox<Async<US6>>
    let _run_target_args'_v2 = v6 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v9 : Async<US6> = null |> unbox<Async<US6>>
    let _run_target_args'_v2 = v9 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v12 : unit = ()
    let _let'_v12 =
        async {
            let! v1 = v1 
            let v15 : US8 = v1 
            let v139 : US6 =
                match v15 with
                | US8_1(v18) -> (* Error *)
                    let v19 : string = $"%A{v18}"
                    let v22 : string = "System.TimeoutException"
                    let v23 : bool = v19.Contains v22 
                    if v23 then
                        let v26 : unit = ()
                        let v27 : (unit -> unit) = closure16(v0)
                        let v28 : unit = (fun () -> v27 (); v26) ()
                        US6_1
                    else
                        let v69 : unit = ()
                        let v70 : (unit -> unit) = closure17(v0, v18)
                        let v71 : unit = (fun () -> v70 (); v69) ()
                        US6_1
                | US8_0(v16) -> (* Ok *)
                    US6_0(v16)
            return v139 
            (* indent
            ()
        indent *)
        }
        (* indent
        ()
    indent *)
    let v1015 : Async<US6> = _let'_v12 
    let _run_target_args'_v2 = v1015 
    #endif
#if FABLE_COMPILER_PYTHON
    let v1016 : unit = ()
    let _let'_v1016 =
        async {
            let! v1 = v1 
            let v1019 : US8 = v1 
            let v1143 : US6 =
                match v1019 with
                | US8_1(v1022) -> (* Error *)
                    let v1023 : string = $"%A{v1022}"
                    let v1026 : string = "System.TimeoutException"
                    let v1027 : bool = v1023.Contains v1026 
                    if v1027 then
                        let v1030 : unit = ()
                        let v1031 : (unit -> unit) = closure16(v0)
                        let v1032 : unit = (fun () -> v1031 (); v1030) ()
                        US6_1
                    else
                        let v1073 : unit = ()
                        let v1074 : (unit -> unit) = closure17(v0, v1022)
                        let v1075 : unit = (fun () -> v1074 (); v1073) ()
                        US6_1
                | US8_0(v1020) -> (* Ok *)
                    US6_0(v1020)
            return v1143 
            (* indent
            ()
        indent *)
        }
        (* indent
        ()
    indent *)
    let v2019 : Async<US6> = _let'_v1016 
    let _run_target_args'_v2 = v2019 
    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
    let v2020 : unit = ()
    let _let'_v2020 =
        async {
            let! v1 = v1 
            let v2023 : US8 = v1 
            let v2147 : US6 =
                match v2023 with
                | US8_1(v2026) -> (* Error *)
                    let v2027 : string = $"%A{v2026}"
                    let v2030 : string = "System.TimeoutException"
                    let v2031 : bool = v2027.Contains v2030 
                    if v2031 then
                        let v2034 : unit = ()
                        let v2035 : (unit -> unit) = closure16(v0)
                        let v2036 : unit = (fun () -> v2035 (); v2034) ()
                        US6_1
                    else
                        let v2077 : unit = ()
                        let v2078 : (unit -> unit) = closure17(v0, v2026)
                        let v2079 : unit = (fun () -> v2078 (); v2077) ()
                        US6_1
                | US8_0(v2024) -> (* Ok *)
                    US6_0(v2024)
            return v2147 
            (* indent
            ()
        indent *)
        }
        (* indent
        ()
    indent *)
    let v3023 : Async<US6> = _let'_v2020 
    let _run_target_args'_v2 = v3023 
    #endif
#else
    let v3024 : unit = ()
    let _let'_v3024 =
        async {
            let! v1 = v1 
            let v3027 : US8 = v1 
            let v3151 : US6 =
                match v3027 with
                | US8_1(v3030) -> (* Error *)
                    let v3031 : string = $"%A{v3030}"
                    let v3034 : string = "System.TimeoutException"
                    let v3035 : bool = v3031.Contains v3034 
                    if v3035 then
                        let v3038 : unit = ()
                        let v3039 : (unit -> unit) = closure16(v0)
                        let v3040 : unit = (fun () -> v3039 (); v3038) ()
                        US6_1
                    else
                        let v3081 : unit = ()
                        let v3082 : (unit -> unit) = closure17(v0, v3030)
                        let v3083 : unit = (fun () -> v3082 (); v3081) ()
                        US6_1
                | US8_0(v3028) -> (* Ok *)
                    US6_0(v3028)
            return v3151 
            (* indent
            ()
        indent *)
        }
        (* indent
        ()
    indent *)
    let v4027 : Async<US6> = _let'_v3024 
    let _run_target_args'_v2 = v4027 
    #endif
    let v4028 : Async<US6> = _run_target_args'_v2 
    v4028
and method24 (v0 : Async<bool>, v1 : int32) : Async<US6> =
    (* run_target_args'
    let v2 : unit = ()
    run_target_args' *)
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v3 : Async<US6> = null |> unbox<Async<US6>>
    let _run_target_args'_v2 = v3 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v6 : Async<US6> = null |> unbox<Async<US6>>
    let _run_target_args'_v2 = v6 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v9 : Async<US6> = null |> unbox<Async<US6>>
    let _run_target_args'_v2 = v9 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v12 : unit = ()
    let _let'_v12 =
        async {
            (* run_target_args'
            let v15 : unit = ()
            run_target_args' *)
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v16 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>>
            let _run_target_args'_v15 = v16 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v19 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>>
            let _run_target_args'_v15 = v19 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v22 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>>
            let _run_target_args'_v15 = v22 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v25 : Async<Async<bool>> = Async.StartChild (v0, v1)
            let _run_target_args'_v15 = v25 
            #endif
#if FABLE_COMPILER_PYTHON
            let v26 : Async<Async<bool>> = Async.StartChild (v0, v1)
            let _run_target_args'_v15 = v26 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v27 : Async<Async<bool>> = Async.StartChild (v0, v1)
            let _run_target_args'_v15 = v27 
            #endif
#else
            let v28 : Async<Async<bool>> = Async.StartChild (v0, v1)
            let _run_target_args'_v15 = v28 
            #endif
            let v29 : Async<Async<bool>> = _run_target_args'_v15 
            let! v29 = v29 
            let v34 : Async<bool> = v29 
            (* run_target_args'
            let v35 : unit = ()
            run_target_args' *)
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v36 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>>
            let _run_target_args'_v35 = v36 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v39 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>>
            let _run_target_args'_v35 = v39 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v42 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>>
            let _run_target_args'_v35 = v42 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v45 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v46 : Async<Choice<bool, exn>> = v45 v34
            let _run_target_args'_v35 = v46 
            #endif
#if FABLE_COMPILER_PYTHON
            let v47 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v48 : Async<Choice<bool, exn>> = v47 v34
            let _run_target_args'_v35 = v48 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v49 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v50 : Async<Choice<bool, exn>> = v49 v34
            let _run_target_args'_v35 = v50 
            #endif
#else
            let v51 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v52 : Async<Choice<bool, exn>> = v51 v34
            let _run_target_args'_v35 = v52 
            #endif
            let v53 : Async<Choice<bool, exn>> = _run_target_args'_v35 
            let v58 : Async<US7> = method25(v53)
            let v59 : Async<US8> = method28(v58)
            let v60 : Async<US6> = method29(v1, v59)
            return! v60 
            (* indent
            ()
        indent *)
        }
        (* indent
        ()
    indent *)
    let v383 : Async<US6> = _let'_v12 
    let _run_target_args'_v2 = v383 
    #endif
#if FABLE_COMPILER_PYTHON
    let v384 : unit = ()
    let _let'_v384 =
        async {
            (* run_target_args'
            let v387 : unit = ()
            run_target_args' *)
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v388 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>>
            let _run_target_args'_v387 = v388 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v391 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>>
            let _run_target_args'_v387 = v391 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v394 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>>
            let _run_target_args'_v387 = v394 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v397 : Async<Async<bool>> = Async.StartChild (v0, v1)
            let _run_target_args'_v387 = v397 
            #endif
#if FABLE_COMPILER_PYTHON
            let v398 : Async<Async<bool>> = Async.StartChild (v0, v1)
            let _run_target_args'_v387 = v398 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v399 : Async<Async<bool>> = Async.StartChild (v0, v1)
            let _run_target_args'_v387 = v399 
            #endif
#else
            let v400 : Async<Async<bool>> = Async.StartChild (v0, v1)
            let _run_target_args'_v387 = v400 
            #endif
            let v401 : Async<Async<bool>> = _run_target_args'_v387 
            let! v401 = v401 
            let v406 : Async<bool> = v401 
            (* run_target_args'
            let v407 : unit = ()
            run_target_args' *)
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v408 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>>
            let _run_target_args'_v407 = v408 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v411 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>>
            let _run_target_args'_v407 = v411 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v414 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>>
            let _run_target_args'_v407 = v414 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v417 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v418 : Async<Choice<bool, exn>> = v417 v406
            let _run_target_args'_v407 = v418 
            #endif
#if FABLE_COMPILER_PYTHON
            let v419 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v420 : Async<Choice<bool, exn>> = v419 v406
            let _run_target_args'_v407 = v420 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v421 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v422 : Async<Choice<bool, exn>> = v421 v406
            let _run_target_args'_v407 = v422 
            #endif
#else
            let v423 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v424 : Async<Choice<bool, exn>> = v423 v406
            let _run_target_args'_v407 = v424 
            #endif
            let v425 : Async<Choice<bool, exn>> = _run_target_args'_v407 
            let v430 : Async<US7> = method25(v425)
            let v431 : Async<US8> = method28(v430)
            let v432 : Async<US6> = method29(v1, v431)
            return! v432 
            (* indent
            ()
        indent *)
        }
        (* indent
        ()
    indent *)
    let v755 : Async<US6> = _let'_v384 
    let _run_target_args'_v2 = v755 
    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
    let v756 : unit = ()
    let _let'_v756 =
        async {
            (* run_target_args'
            let v759 : unit = ()
            run_target_args' *)
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v760 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>>
            let _run_target_args'_v759 = v760 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v763 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>>
            let _run_target_args'_v759 = v763 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v766 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>>
            let _run_target_args'_v759 = v766 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v769 : Async<Async<bool>> = Async.StartChild (v0, v1)
            let _run_target_args'_v759 = v769 
            #endif
#if FABLE_COMPILER_PYTHON
            let v770 : Async<Async<bool>> = Async.StartChild (v0, v1)
            let _run_target_args'_v759 = v770 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v771 : Async<Async<bool>> = Async.StartChild (v0, v1)
            let _run_target_args'_v759 = v771 
            #endif
#else
            let v772 : Async<Async<bool>> = Async.StartChild (v0, v1)
            let _run_target_args'_v759 = v772 
            #endif
            let v773 : Async<Async<bool>> = _run_target_args'_v759 
            let! v773 = v773 
            let v778 : Async<bool> = v773 
            (* run_target_args'
            let v779 : unit = ()
            run_target_args' *)
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v780 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>>
            let _run_target_args'_v779 = v780 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v783 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>>
            let _run_target_args'_v779 = v783 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v786 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>>
            let _run_target_args'_v779 = v786 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v789 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v790 : Async<Choice<bool, exn>> = v789 v778
            let _run_target_args'_v779 = v790 
            #endif
#if FABLE_COMPILER_PYTHON
            let v791 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v792 : Async<Choice<bool, exn>> = v791 v778
            let _run_target_args'_v779 = v792 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v793 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v794 : Async<Choice<bool, exn>> = v793 v778
            let _run_target_args'_v779 = v794 
            #endif
#else
            let v795 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v796 : Async<Choice<bool, exn>> = v795 v778
            let _run_target_args'_v779 = v796 
            #endif
            let v797 : Async<Choice<bool, exn>> = _run_target_args'_v779 
            let v802 : Async<US7> = method25(v797)
            let v803 : Async<US8> = method28(v802)
            let v804 : Async<US6> = method29(v1, v803)
            return! v804 
            (* indent
            ()
        indent *)
        }
        (* indent
        ()
    indent *)
    let v1127 : Async<US6> = _let'_v756 
    let _run_target_args'_v2 = v1127 
    #endif
#else
    let v1128 : unit = ()
    let _let'_v1128 =
        async {
            (* run_target_args'
            let v1131 : unit = ()
            run_target_args' *)
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v1132 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>>
            let _run_target_args'_v1131 = v1132 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v1135 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>>
            let _run_target_args'_v1131 = v1135 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v1138 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>>
            let _run_target_args'_v1131 = v1138 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v1141 : Async<Async<bool>> = Async.StartChild (v0, v1)
            let _run_target_args'_v1131 = v1141 
            #endif
#if FABLE_COMPILER_PYTHON
            let v1142 : Async<Async<bool>> = Async.StartChild (v0, v1)
            let _run_target_args'_v1131 = v1142 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v1143 : Async<Async<bool>> = Async.StartChild (v0, v1)
            let _run_target_args'_v1131 = v1143 
            #endif
#else
            let v1144 : Async<Async<bool>> = Async.StartChild (v0, v1)
            let _run_target_args'_v1131 = v1144 
            #endif
            let v1145 : Async<Async<bool>> = _run_target_args'_v1131 
            let! v1145 = v1145 
            let v1150 : Async<bool> = v1145 
            (* run_target_args'
            let v1151 : unit = ()
            run_target_args' *)
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v1152 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>>
            let _run_target_args'_v1151 = v1152 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v1155 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>>
            let _run_target_args'_v1151 = v1155 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v1158 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>>
            let _run_target_args'_v1151 = v1158 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v1161 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v1162 : Async<Choice<bool, exn>> = v1161 v1150
            let _run_target_args'_v1151 = v1162 
            #endif
#if FABLE_COMPILER_PYTHON
            let v1163 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v1164 : Async<Choice<bool, exn>> = v1163 v1150
            let _run_target_args'_v1151 = v1164 
            #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
            let v1165 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v1166 : Async<Choice<bool, exn>> = v1165 v1150
            let _run_target_args'_v1151 = v1166 
            #endif
#else
            let v1167 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v1168 : Async<Choice<bool, exn>> = v1167 v1150
            let _run_target_args'_v1151 = v1168 
            #endif
            let v1169 : Async<Choice<bool, exn>> = _run_target_args'_v1151 
            let v1174 : Async<US7> = method25(v1169)
            let v1175 : Async<US8> = method28(v1174)
            let v1176 : Async<US6> = method29(v1, v1175)
            return! v1176 
            (* indent
            ()
        indent *)
        }
        (* indent
        ()
    indent *)
    let v1499 : Async<US6> = _let'_v1128 
    let _run_target_args'_v2 = v1499 
    #endif
    let v1500 : Async<US6> = _run_target_args'_v2 
    v1500
and method23 (v0 : int32, v1 : Async<bool>) : Async<US6> =
    (* run_target_args'
    let v2 : unit = ()
    run_target_args' *)
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v3 : Async<US6> = method24(v1, v0)
    let _run_target_args'_v2 = v3 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v4 : Async<US6> = method24(v1, v0)
    let _run_target_args'_v2 = v4 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v5 : Async<US6> = method24(v1, v0)
    let _run_target_args'_v2 = v5 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v6 : Async<US6> = method24(v1, v0)
    let _run_target_args'_v2 = v6 
    #endif
#if FABLE_COMPILER_PYTHON
    let v7 : Async<US6> = method24(v1, v0)
    let _run_target_args'_v2 = v7 
    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
    let v8 : Async<US6> = method24(v1, v0)
    let _run_target_args'_v2 = v8 
    #endif
#else
    let v9 : Async<US6> = method24(v1, v0)
    let _run_target_args'_v2 = v9 
    #endif
    let v10 : Async<US6> = _run_target_args'_v2 
    v10
and method22 (v0 : int32, v1 : string, v2 : int32) : Async<bool> =
    (* run_target_args'
    let v3 : unit = ()
    run_target_args' *)
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v4 : Async<bool> = null |> unbox<Async<bool>>
    let _run_target_args'_v3 = v4 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v7 : Async<bool> = null |> unbox<Async<bool>>
    let _run_target_args'_v3 = v7 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v10 : Async<bool> = null |> unbox<Async<bool>>
    let _run_target_args'_v3 = v10 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v13 : unit = ()
    let _let'_v13 =
        async {
            let v16 : Async<bool> = method6(v1, v2)
            let v17 : Async<US6> = method23(v0, v16)
            let! v17 = v17 
            let v18 : US6 = v17 
            let v21 : bool =
                match v18 with
                | US6_1 -> (* None *)
                    false
                | US6_0(v19) -> (* Some *)
                    v19
            return v21 
            (* indent
            ()
        indent *)
        }
        (* indent
        ()
    indent *)
    let v64 : Async<bool> = _let'_v13 
    let _run_target_args'_v3 = v64 
    #endif
#if FABLE_COMPILER_PYTHON
    let v65 : unit = ()
    let _let'_v65 =
        async {
            let v68 : Async<bool> = method6(v1, v2)
            let v69 : Async<US6> = method23(v0, v68)
            let! v69 = v69 
            let v70 : US6 = v69 
            let v73 : bool =
                match v70 with
                | US6_1 -> (* None *)
                    false
                | US6_0(v71) -> (* Some *)
                    v71
            return v73 
            (* indent
            ()
        indent *)
        }
        (* indent
        ()
    indent *)
    let v116 : Async<bool> = _let'_v65 
    let _run_target_args'_v3 = v116 
    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
    let v117 : unit = ()
    let _let'_v117 =
        async {
            let v120 : Async<bool> = method6(v1, v2)
            let v121 : Async<US6> = method23(v0, v120)
            let! v121 = v121 
            let v122 : US6 = v121 
            let v125 : bool =
                match v122 with
                | US6_1 -> (* None *)
                    false
                | US6_0(v123) -> (* Some *)
                    v123
            return v125 
            (* indent
            ()
        indent *)
        }
        (* indent
        ()
    indent *)
    let v168 : Async<bool> = _let'_v117 
    let _run_target_args'_v3 = v168 
    #endif
#else
    let v169 : unit = ()
    let _let'_v169 =
        async {
            let v172 : Async<bool> = method6(v1, v2)
            let v173 : Async<US6> = method23(v0, v172)
            let! v173 = v173 
            let v174 : US6 = v173 
            let v177 : bool =
                match v174 with
                | US6_1 -> (* None *)
                    false
                | US6_0(v175) -> (* Some *)
                    v175
            return v177 
            (* indent
            ()
        indent *)
        }
        (* indent
        ()
    indent *)
    let v220 : Async<bool> = _let'_v169 
    let _run_target_args'_v3 = v220 
    #endif
    let v221 : Async<bool> = _run_target_args'_v3 
    v221
and method21 (v0 : int32, v1 : string, v2 : int32) : Async<bool> =
    method22(v0, v1, v2)
and closure13 (v0 : int32, v1 : string) (v2 : int32) : Async<bool> =
    method21(v0, v1, v2)
and closure12 (v0 : int32) (v1 : string) : (int32 -> Async<bool>) =
    closure13(v0, v1)
and closure11 () (v0 : int32) : (string -> (int32 -> Async<bool>)) =
    closure12(v0)
and closure22 () (v0 : int32) : US9 =
    US9_0(v0)
and method38 () : (int32 -> US9) =
    closure22()
and method40 (v0 : int32, v1 : int64, v2 : int32 option, v3 : bool) : string =
    let v4 : string = method15()
    let v5 : Mut3 = {l0 = v4} : Mut3
    let v6 : string = "{ "
    let v7 : string = $"{v6}"
    let v10 : unit = ()
    let v11 : (unit -> unit) = closure7(v5, v7)
    let v12 : unit = (fun () -> v11 (); v10) ()
    let v15 : string = "port"
    let v16 : string = $"{v15}"
    let v19 : unit = ()
    let v20 : (unit -> unit) = closure7(v5, v16)
    let v21 : unit = (fun () -> v20 (); v19) ()
    let v24 : string = " = "
    let v25 : string = $"{v24}"
    let v28 : unit = ()
    let v29 : (unit -> unit) = closure7(v5, v25)
    let v30 : unit = (fun () -> v29 (); v28) ()
    let v33 : string = $"{v0}"
    let v36 : unit = ()
    let v37 : (unit -> unit) = closure7(v5, v33)
    let v38 : unit = (fun () -> v37 (); v36) ()
    let v41 : string = "; "
    let v42 : string = $"{v41}"
    let v45 : unit = ()
    let v46 : (unit -> unit) = closure7(v5, v42)
    let v47 : unit = (fun () -> v46 (); v45) ()
    let v50 : string = "retry"
    let v51 : string = $"{v50}"
    let v54 : unit = ()
    let v55 : (unit -> unit) = closure7(v5, v51)
    let v56 : unit = (fun () -> v55 (); v54) ()
    let v59 : string = $"{v24}"
    let v62 : unit = ()
    let v63 : (unit -> unit) = closure7(v5, v59)
    let v64 : unit = (fun () -> v63 (); v62) ()
    let v67 : string = $"{v1}"
    let v70 : unit = ()
    let v71 : (unit -> unit) = closure7(v5, v67)
    let v72 : unit = (fun () -> v71 (); v70) ()
    let v75 : string = $"{v41}"
    let v78 : unit = ()
    let v79 : (unit -> unit) = closure7(v5, v75)
    let v80 : unit = (fun () -> v79 (); v78) ()
    let v83 : string = "timeout"
    let v84 : string = $"{v83}"
    let v87 : unit = ()
    let v88 : (unit -> unit) = closure7(v5, v84)
    let v89 : unit = (fun () -> v88 (); v87) ()
    let v92 : string = $"{v24}"
    let v95 : unit = ()
    let v96 : (unit -> unit) = closure7(v5, v92)
    let v97 : unit = (fun () -> v96 (); v95) ()
    (* run_target_args'
    let v100 : unit = ()
    run_target_args' *)
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v101 : string = "format!(\"{:#?}\", $0)"
    let v102 : std_string_String = Fable.Core.RustInterop.emitRustExpr v2 v101 
    let v103 : string = "fable_library_rust::String_::fromString($0)"
    let v104 : string = Fable.Core.RustInterop.emitRustExpr v102 v103 
    let _run_target_args'_v100 = v104 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v105 : string = "format!(\"{:#?}\", $0)"
    let v106 : std_string_String = Fable.Core.RustInterop.emitRustExpr v2 v105 
    let v107 : string = "fable_library_rust::String_::fromString($0)"
    let v108 : string = Fable.Core.RustInterop.emitRustExpr v106 v107 
    let _run_target_args'_v100 = v108 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v109 : string = "format!(\"{:#?}\", $0)"
    let v110 : std_string_String = Fable.Core.RustInterop.emitRustExpr v2 v109 
    let v111 : string = "fable_library_rust::String_::fromString($0)"
    let v112 : string = Fable.Core.RustInterop.emitRustExpr v110 v111 
    let _run_target_args'_v100 = v112 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v113 : string = $"%A{v2}"
    let _run_target_args'_v100 = v113 
    #endif
#if FABLE_COMPILER_PYTHON
    let v116 : string = $"%A{v2}"
    let _run_target_args'_v100 = v116 
    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
    let v119 : string = $"%A{v2}"
    let _run_target_args'_v100 = v119 
    #endif
#else
    let v122 : string = $"%A{v2}"
    let _run_target_args'_v100 = v122 
    #endif
    let v125 : string = _run_target_args'_v100 
    let v130 : string = $"{v125}"
    let v133 : unit = ()
    let v134 : (unit -> unit) = closure7(v5, v130)
    let v135 : unit = (fun () -> v134 (); v133) ()
    let v138 : string = $"{v41}"
    let v141 : unit = ()
    let v142 : (unit -> unit) = closure7(v5, v138)
    let v143 : unit = (fun () -> v142 (); v141) ()
    let v146 : string = "status"
    let v147 : string = $"{v146}"
    let v150 : unit = ()
    let v151 : (unit -> unit) = closure7(v5, v147)
    let v152 : unit = (fun () -> v151 (); v150) ()
    let v155 : string = $"{v24}"
    let v158 : unit = ()
    let v159 : (unit -> unit) = closure7(v5, v155)
    let v160 : unit = (fun () -> v159 (); v158) ()
    let v165 : string =
        if v3 then
            let v163 : string = "true"
            v163
        else
            let v164 : string = "false"
            v164
    let v166 : string = $"{v165}"
    let v169 : unit = ()
    let v170 : (unit -> unit) = closure7(v5, v166)
    let v171 : unit = (fun () -> v170 (); v169) ()
    let v174 : string = " }"
    let v175 : string = $"{v174}"
    let v178 : unit = ()
    let v179 : (unit -> unit) = closure7(v5, v175)
    let v180 : unit = (fun () -> v179 (); v178) ()
    let v183 : string = v5.l0
    v183
and method39 (v0 : Mut0, v1 : Mut1, v2 : Mut2, v3 : Mut3, v4 : Mut4, v5 : int64 option, v6 : string, v7 : string, v8 : int32, v9 : int64, v10 : int32 option, v11 : bool) : string =
    let v12 : string = method40(v8, v9, v10, v11)
    let v13 : int64 = v0.l0
    let v14 : string = "networking.wait_for_port_access"
    let v15 : string = $"{v6} {v7} #{v13} %s{v14} / {v12}"
    method19(v15)
and closure23 (v0 : int32 option, v1 : bool, v2 : int32, v3 : int64) () : unit =
    let v4 : US0 = US0_0
    let v5 : bool = method8(v4)
    if v5 then
        let v6 : unit = ()
        let v7 : (unit -> unit) = closure0()
        let v8 : unit = (fun () -> v7 (); v6) ()
        let struct (v22 : Mut0, v23 : Mut1, v24 : Mut2, v25 : Mut3, v26 : Mut4, v27 : int64 option) = TraceState.trace_state.Value
        let v40 : string = method9(v22, v23, v24, v25, v26, v27)
        let v41 : string = method13()
        let v42 : string = method39(v22, v23, v24, v25, v26, v27, v40, v41, v2, v3, v0, v1)
        method20(v42)
and method37 (v0 : int32 option, v1 : bool, v2 : string, v3 : int32, v4 : int64) : Async<int64> =
    (* run_target_args'
    let v5 : unit = ()
    run_target_args' *)
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v6 : Async<int64> = null |> unbox<Async<int64>>
    let _run_target_args'_v5 = v6 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v9 : Async<int64> = null |> unbox<Async<int64>>
    let _run_target_args'_v5 = v9 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v12 : Async<int64> = null |> unbox<Async<int64>>
    let _run_target_args'_v5 = v12 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v15 : unit = ()
    let _let'_v15 =
        async {
            let v18 : (int32 -> US9) = method38()
            let v19 : US9 option = v0 |> Option.map v18 
            let v30 : US9 = US9_1
            let v31 : US9 = v19 |> Option.defaultValue v30 
            let v39 : Async<bool> =
                match v31 with
                | US9_1 -> (* None *)
                    method6(v2, v3)
                | US9_0(v36) -> (* Some *)
                    method21(v36, v2, v3)
            let! v39 = v39 
            let v40 : bool = v39 
            let v41 : bool = v40 = v1
            if v41 then
                return v4 
                (* fix_condition then
                ()
            else
                fix_condition then *) else
                let v42 : int64 = v4 % 100L
                let v43 : bool = v42 = 0L
                if v43 then
                    let v44 : unit = ()
                    let v45 : (unit -> unit) = closure23(v0, v1, v3, v4)
                    let v46 : unit = (fun () -> v45 (); v44) ()
                    ()
                (* run_target_args'
                let v86 : unit = ()
                run_target_args' *)
                
#if FABLE_COMPILER || WASM || CONTRACT
                
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                let v87 : (int32 -> Async<unit>) = Async.Sleep
                let v88 : Async<unit> = v87 10
                let _run_target_args'_v86 = v88 
                #endif
#if FABLE_COMPILER_RUST && WASM
                let v89 : (int32 -> Async<unit>) = Async.Sleep
                let v90 : Async<unit> = v89 10
                let _run_target_args'_v86 = v90 
                #endif
#if FABLE_COMPILER_RUST && CONTRACT
                let v91 : (int32 -> Async<unit>) = Async.Sleep
                let v92 : Async<unit> = v91 10
                let _run_target_args'_v86 = v92 
                #endif
#if FABLE_COMPILER_TYPESCRIPT
                let v93 : (int32 -> Async<unit>) = Async.Sleep
                let v94 : Async<unit> = v93 10
                let _run_target_args'_v86 = v94 
                #endif
#if FABLE_COMPILER_PYTHON
                let v95 : (int32 -> Async<unit>) = Async.Sleep
                let v96 : Async<unit> = v95 10
                let _run_target_args'_v86 = v96 
                #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                let v97 : (int32 -> Async<unit>) = Async.Sleep
                let v98 : Async<unit> = v97 10
                let _run_target_args'_v86 = v98 
                #endif
#else
                let v99 : (int32 -> Async<unit>) = Async.Sleep
                let v100 : Async<unit> = v99 10
                let _run_target_args'_v86 = v100 
                #endif
                let v101 : Async<unit> = _run_target_args'_v86 
                do! v101 
                let v104 : int64 = v4 + 1L
                let v105 : Async<int64> = method36(v0, v1, v2, v3, v104)
                return! v105 
                (* fix_condition else
                ()
            fix_condition else *)
            (* indent
            ()
        indent *)
        }
        (* indent
        ()
    indent *)
    let v722 : Async<int64> = _let'_v15 
    let _run_target_args'_v5 = v722 
    #endif
#if FABLE_COMPILER_PYTHON
    let v723 : unit = ()
    let _let'_v723 =
        async {
            let v726 : (int32 -> US9) = method38()
            let v727 : US9 option = v0 |> Option.map v726 
            let v738 : US9 = US9_1
            let v739 : US9 = v727 |> Option.defaultValue v738 
            let v747 : Async<bool> =
                match v739 with
                | US9_1 -> (* None *)
                    method6(v2, v3)
                | US9_0(v744) -> (* Some *)
                    method21(v744, v2, v3)
            let! v747 = v747 
            let v748 : bool = v747 
            let v749 : bool = v748 = v1
            if v749 then
                return v4 
                (* fix_condition then
                ()
            else
                fix_condition then *) else
                let v750 : int64 = v4 % 100L
                let v751 : bool = v750 = 0L
                if v751 then
                    let v752 : unit = ()
                    let v753 : (unit -> unit) = closure23(v0, v1, v3, v4)
                    let v754 : unit = (fun () -> v753 (); v752) ()
                    ()
                (* run_target_args'
                let v794 : unit = ()
                run_target_args' *)
                
#if FABLE_COMPILER || WASM || CONTRACT
                
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                let v795 : (int32 -> Async<unit>) = Async.Sleep
                let v796 : Async<unit> = v795 10
                let _run_target_args'_v794 = v796 
                #endif
#if FABLE_COMPILER_RUST && WASM
                let v797 : (int32 -> Async<unit>) = Async.Sleep
                let v798 : Async<unit> = v797 10
                let _run_target_args'_v794 = v798 
                #endif
#if FABLE_COMPILER_RUST && CONTRACT
                let v799 : (int32 -> Async<unit>) = Async.Sleep
                let v800 : Async<unit> = v799 10
                let _run_target_args'_v794 = v800 
                #endif
#if FABLE_COMPILER_TYPESCRIPT
                let v801 : (int32 -> Async<unit>) = Async.Sleep
                let v802 : Async<unit> = v801 10
                let _run_target_args'_v794 = v802 
                #endif
#if FABLE_COMPILER_PYTHON
                let v803 : (int32 -> Async<unit>) = Async.Sleep
                let v804 : Async<unit> = v803 10
                let _run_target_args'_v794 = v804 
                #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                let v805 : (int32 -> Async<unit>) = Async.Sleep
                let v806 : Async<unit> = v805 10
                let _run_target_args'_v794 = v806 
                #endif
#else
                let v807 : (int32 -> Async<unit>) = Async.Sleep
                let v808 : Async<unit> = v807 10
                let _run_target_args'_v794 = v808 
                #endif
                let v809 : Async<unit> = _run_target_args'_v794 
                do! v809 
                let v812 : int64 = v4 + 1L
                let v813 : Async<int64> = method36(v0, v1, v2, v3, v812)
                return! v813 
                (* fix_condition else
                ()
            fix_condition else *)
            (* indent
            ()
        indent *)
        }
        (* indent
        ()
    indent *)
    let v1430 : Async<int64> = _let'_v723 
    let _run_target_args'_v5 = v1430 
    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
    let v1431 : unit = ()
    let _let'_v1431 =
        async {
            let v1434 : (int32 -> US9) = method38()
            let v1435 : US9 option = v0 |> Option.map v1434 
            let v1446 : US9 = US9_1
            let v1447 : US9 = v1435 |> Option.defaultValue v1446 
            let v1455 : Async<bool> =
                match v1447 with
                | US9_1 -> (* None *)
                    method6(v2, v3)
                | US9_0(v1452) -> (* Some *)
                    method21(v1452, v2, v3)
            let! v1455 = v1455 
            let v1456 : bool = v1455 
            let v1457 : bool = v1456 = v1
            if v1457 then
                return v4 
                (* fix_condition then
                ()
            else
                fix_condition then *) else
                let v1458 : int64 = v4 % 100L
                let v1459 : bool = v1458 = 0L
                if v1459 then
                    let v1460 : unit = ()
                    let v1461 : (unit -> unit) = closure23(v0, v1, v3, v4)
                    let v1462 : unit = (fun () -> v1461 (); v1460) ()
                    ()
                (* run_target_args'
                let v1502 : unit = ()
                run_target_args' *)
                
#if FABLE_COMPILER || WASM || CONTRACT
                
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                let v1503 : (int32 -> Async<unit>) = Async.Sleep
                let v1504 : Async<unit> = v1503 10
                let _run_target_args'_v1502 = v1504 
                #endif
#if FABLE_COMPILER_RUST && WASM
                let v1505 : (int32 -> Async<unit>) = Async.Sleep
                let v1506 : Async<unit> = v1505 10
                let _run_target_args'_v1502 = v1506 
                #endif
#if FABLE_COMPILER_RUST && CONTRACT
                let v1507 : (int32 -> Async<unit>) = Async.Sleep
                let v1508 : Async<unit> = v1507 10
                let _run_target_args'_v1502 = v1508 
                #endif
#if FABLE_COMPILER_TYPESCRIPT
                let v1509 : (int32 -> Async<unit>) = Async.Sleep
                let v1510 : Async<unit> = v1509 10
                let _run_target_args'_v1502 = v1510 
                #endif
#if FABLE_COMPILER_PYTHON
                let v1511 : (int32 -> Async<unit>) = Async.Sleep
                let v1512 : Async<unit> = v1511 10
                let _run_target_args'_v1502 = v1512 
                #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                let v1513 : (int32 -> Async<unit>) = Async.Sleep
                let v1514 : Async<unit> = v1513 10
                let _run_target_args'_v1502 = v1514 
                #endif
#else
                let v1515 : (int32 -> Async<unit>) = Async.Sleep
                let v1516 : Async<unit> = v1515 10
                let _run_target_args'_v1502 = v1516 
                #endif
                let v1517 : Async<unit> = _run_target_args'_v1502 
                do! v1517 
                let v1520 : int64 = v4 + 1L
                let v1521 : Async<int64> = method36(v0, v1, v2, v3, v1520)
                return! v1521 
                (* fix_condition else
                ()
            fix_condition else *)
            (* indent
            ()
        indent *)
        }
        (* indent
        ()
    indent *)
    let v2138 : Async<int64> = _let'_v1431 
    let _run_target_args'_v5 = v2138 
    #endif
#else
    let v2139 : unit = ()
    let _let'_v2139 =
        async {
            let v2142 : (int32 -> US9) = method38()
            let v2143 : US9 option = v0 |> Option.map v2142 
            let v2154 : US9 = US9_1
            let v2155 : US9 = v2143 |> Option.defaultValue v2154 
            let v2163 : Async<bool> =
                match v2155 with
                | US9_1 -> (* None *)
                    method6(v2, v3)
                | US9_0(v2160) -> (* Some *)
                    method21(v2160, v2, v3)
            let! v2163 = v2163 
            let v2164 : bool = v2163 
            let v2165 : bool = v2164 = v1
            if v2165 then
                return v4 
                (* fix_condition then
                ()
            else
                fix_condition then *) else
                let v2166 : int64 = v4 % 100L
                let v2167 : bool = v2166 = 0L
                if v2167 then
                    let v2168 : unit = ()
                    let v2169 : (unit -> unit) = closure23(v0, v1, v3, v4)
                    let v2170 : unit = (fun () -> v2169 (); v2168) ()
                    ()
                (* run_target_args'
                let v2210 : unit = ()
                run_target_args' *)
                
#if FABLE_COMPILER || WASM || CONTRACT
                
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                let v2211 : (int32 -> Async<unit>) = Async.Sleep
                let v2212 : Async<unit> = v2211 10
                let _run_target_args'_v2210 = v2212 
                #endif
#if FABLE_COMPILER_RUST && WASM
                let v2213 : (int32 -> Async<unit>) = Async.Sleep
                let v2214 : Async<unit> = v2213 10
                let _run_target_args'_v2210 = v2214 
                #endif
#if FABLE_COMPILER_RUST && CONTRACT
                let v2215 : (int32 -> Async<unit>) = Async.Sleep
                let v2216 : Async<unit> = v2215 10
                let _run_target_args'_v2210 = v2216 
                #endif
#if FABLE_COMPILER_TYPESCRIPT
                let v2217 : (int32 -> Async<unit>) = Async.Sleep
                let v2218 : Async<unit> = v2217 10
                let _run_target_args'_v2210 = v2218 
                #endif
#if FABLE_COMPILER_PYTHON
                let v2219 : (int32 -> Async<unit>) = Async.Sleep
                let v2220 : Async<unit> = v2219 10
                let _run_target_args'_v2210 = v2220 
                #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
                let v2221 : (int32 -> Async<unit>) = Async.Sleep
                let v2222 : Async<unit> = v2221 10
                let _run_target_args'_v2210 = v2222 
                #endif
#else
                let v2223 : (int32 -> Async<unit>) = Async.Sleep
                let v2224 : Async<unit> = v2223 10
                let _run_target_args'_v2210 = v2224 
                #endif
                let v2225 : Async<unit> = _run_target_args'_v2210 
                do! v2225 
                let v2228 : int64 = v4 + 1L
                let v2229 : Async<int64> = method36(v0, v1, v2, v3, v2228)
                return! v2229 
                (* fix_condition else
                ()
            fix_condition else *)
            (* indent
            ()
        indent *)
        }
        (* indent
        ()
    indent *)
    let v2846 : Async<int64> = _let'_v2139 
    let _run_target_args'_v5 = v2846 
    #endif
    let v2847 : Async<int64> = _run_target_args'_v5 
    v2847
and method36 (v0 : int32 option, v1 : bool, v2 : string, v3 : int32, v4 : int64) : Async<int64> =
    method37(v0, v1, v2, v3, v4)
and method35 (v0 : int32 option, v1 : bool, v2 : string, v3 : int32) : Async<int64> =
    let v4 : int64 = 1L
    method36(v0, v1, v2, v3, v4)
and closure21 (v0 : int32 option, v1 : bool, v2 : string) (v3 : int32) : Async<int64> =
    method35(v0, v1, v2, v3)
and closure20 (v0 : int32 option, v1 : bool) (v2 : string) : (int32 -> Async<int64>) =
    closure21(v0, v1, v2)
and closure19 (v0 : int32 option) (v1 : bool) : (string -> (int32 -> Async<int64>)) =
    closure20(v0, v1)
and closure18 () (v0 : int32 option) : (bool -> (string -> (int32 -> Async<int64>))) =
    closure19(v0)
and method43 (v0 : int32 option, v1 : string, v2 : int32) : Async<int32> =
    (* run_target_args'
    let v3 : unit = ()
    run_target_args' *)
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v4 : Async<int32> = null |> unbox<Async<int32>>
    let _run_target_args'_v3 = v4 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v7 : Async<int32> = null |> unbox<Async<int32>>
    let _run_target_args'_v3 = v7 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v10 : Async<int32> = null |> unbox<Async<int32>>
    let _run_target_args'_v3 = v10 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v13 : unit = ()
    let _let'_v13 =
        async {
            let v16 : (int32 -> US9) = method38()
            let v17 : US9 option = v0 |> Option.map v16 
            let v28 : US9 = US9_1
            let v29 : US9 = v17 |> Option.defaultValue v28 
            let v37 : Async<bool> =
                match v29 with
                | US9_1 -> (* None *)
                    method6(v1, v2)
                | US9_0(v34) -> (* Some *)
                    method21(v34, v1, v2)
            let! v37 = v37 
            let v38 : bool = v37 
            let v39 : bool = v38 = false
            if v39 then
                return v2 
                (* fix_condition then
                ()
            else
                fix_condition then *) else
                let v40 : int32 = v2 + 1
                let v41 : Async<int32> = method42(v0, v1, v40)
                return! v41 
                (* fix_condition else
                ()
            fix_condition else *)
            (* indent
            ()
        indent *)
        }
        (* indent
        ()
    indent *)
    let v224 : Async<int32> = _let'_v13 
    let _run_target_args'_v3 = v224 
    #endif
#if FABLE_COMPILER_PYTHON
    let v225 : unit = ()
    let _let'_v225 =
        async {
            let v228 : (int32 -> US9) = method38()
            let v229 : US9 option = v0 |> Option.map v228 
            let v240 : US9 = US9_1
            let v241 : US9 = v229 |> Option.defaultValue v240 
            let v249 : Async<bool> =
                match v241 with
                | US9_1 -> (* None *)
                    method6(v1, v2)
                | US9_0(v246) -> (* Some *)
                    method21(v246, v1, v2)
            let! v249 = v249 
            let v250 : bool = v249 
            let v251 : bool = v250 = false
            if v251 then
                return v2 
                (* fix_condition then
                ()
            else
                fix_condition then *) else
                let v252 : int32 = v2 + 1
                let v253 : Async<int32> = method42(v0, v1, v252)
                return! v253 
                (* fix_condition else
                ()
            fix_condition else *)
            (* indent
            ()
        indent *)
        }
        (* indent
        ()
    indent *)
    let v436 : Async<int32> = _let'_v225 
    let _run_target_args'_v3 = v436 
    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
    let v437 : unit = ()
    let _let'_v437 =
        async {
            let v440 : (int32 -> US9) = method38()
            let v441 : US9 option = v0 |> Option.map v440 
            let v452 : US9 = US9_1
            let v453 : US9 = v441 |> Option.defaultValue v452 
            let v461 : Async<bool> =
                match v453 with
                | US9_1 -> (* None *)
                    method6(v1, v2)
                | US9_0(v458) -> (* Some *)
                    method21(v458, v1, v2)
            let! v461 = v461 
            let v462 : bool = v461 
            let v463 : bool = v462 = false
            if v463 then
                return v2 
                (* fix_condition then
                ()
            else
                fix_condition then *) else
                let v464 : int32 = v2 + 1
                let v465 : Async<int32> = method42(v0, v1, v464)
                return! v465 
                (* fix_condition else
                ()
            fix_condition else *)
            (* indent
            ()
        indent *)
        }
        (* indent
        ()
    indent *)
    let v648 : Async<int32> = _let'_v437 
    let _run_target_args'_v3 = v648 
    #endif
#else
    let v649 : unit = ()
    let _let'_v649 =
        async {
            let v652 : (int32 -> US9) = method38()
            let v653 : US9 option = v0 |> Option.map v652 
            let v664 : US9 = US9_1
            let v665 : US9 = v653 |> Option.defaultValue v664 
            let v673 : Async<bool> =
                match v665 with
                | US9_1 -> (* None *)
                    method6(v1, v2)
                | US9_0(v670) -> (* Some *)
                    method21(v670, v1, v2)
            let! v673 = v673 
            let v674 : bool = v673 
            let v675 : bool = v674 = false
            if v675 then
                return v2 
                (* fix_condition then
                ()
            else
                fix_condition then *) else
                let v676 : int32 = v2 + 1
                let v677 : Async<int32> = method42(v0, v1, v676)
                return! v677 
                (* fix_condition else
                ()
            fix_condition else *)
            (* indent
            ()
        indent *)
        }
        (* indent
        ()
    indent *)
    let v860 : Async<int32> = _let'_v649 
    let _run_target_args'_v3 = v860 
    #endif
    let v861 : Async<int32> = _run_target_args'_v3 
    v861
and method42 (v0 : int32 option, v1 : string, v2 : int32) : Async<int32> =
    method43(v0, v1, v2)
and method41 (v0 : int32 option, v1 : string, v2 : int32) : Async<int32> =
    method42(v0, v1, v2)
and closure26 (v0 : int32 option, v1 : string) (v2 : int32) : Async<int32> =
    method41(v0, v1, v2)
and closure25 (v0 : int32 option) (v1 : string) : (int32 -> Async<int32>) =
    closure26(v0, v1)
and closure24 () (v0 : int32 option) : (string -> (int32 -> Async<int32>)) =
    closure25(v0)
let v0 : unit = ()
let v1 : (unit -> unit) = closure0()
let v2 : unit = (fun () -> v1 (); v0) ()
let v16 : (string -> (int32 -> Async<bool>)) = closure3()
let test_port_open x = v16 x
let v17 : (int32 -> (string -> (int32 -> Async<bool>))) = closure11()
let test_port_open_timeout x = v17 x
let v18 : (int32 option -> (bool -> (string -> (int32 -> Async<int64>)))) = closure18()
let wait_for_port_access x = v18 x
let v19 : (int32 option -> (string -> (int32 -> Async<int32>))) = closure24()
let get_available_port x = v19 x
()
00:00:00 d #1 writeDibCode / output: Fs / path: DirTreeHtml.dib
00:00:00 d #2 parseDibCode / output: Fs / file: DirTreeHtml.dib
00:00:00 d #1 persistCodeProject / packages: [Argu; Falco.Markup; FSharp.Control.AsyncSeq; ... ] / modules: [lib/spiral/common.fsx; lib/spiral/sm.fsx; lib/spiral/crypto.fsx; ... ] / name: DirTreeHtml / hash:  / code.Length: 4638
00:00:00 d #2 buildProject / fullPath: /home/runner/work/polyglot/polyglot/target/Builder/DirTreeHtml/DirTreeHtml.fsproj
00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  "publish "/home/runner/work/polyglot/polyglot/target/Builder/DirTreeHtml/DirTreeHtml.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/apps/dir-tree-html/dist" --runtime linux-x64"; options = { command = dotnet publish "/home/runner/work/polyglot/polyglot/target/Builder/DirTreeHtml/DirTreeHtml.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/apps/dir-tree-html/dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot/target/Builder/DirTreeHtml" } }
00:00:00 v #2 >   Determining projects to restore...
00:00:01 v #3 >   Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
00:00:01 v #4 >   The last full restore is still up to date. Nothing left to do.
00:00:01 v #5 >   Total time taken: 0 milliseconds
00:00:01 v #6 >   Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
00:00:01 v #7 >   Restoring /home/runner/work/polyglot/polyglot/target/Builder/DirTreeHtml/DirTreeHtml.fsproj
00:00:01 v #8 >   Starting restore process.
00:00:01 v #9 >   Total time taken: 0 milliseconds
00:00:02 v #10 >   Restored /home/runner/work/polyglot/polyglot/target/Builder/DirTreeHtml/DirTreeHtml.fsproj (in 325 ms).
00:00:11 v #11 >   DirTreeHtml -> /home/runner/work/polyglot/polyglot/target/Builder/DirTreeHtml/bin/Release/net9.0/linux-x64/DirTreeHtml.dll
00:00:11 v #12 >   DirTreeHtml -> /home/runner/work/polyglot/polyglot/apps/dir-tree-html/dist
00:00:11 d #13 runtime.execute_with_options_async / { exit_code = 0; output_length = 728 }
In [ ]:
{ pwsh ../lib/spiral/build.ps1 -sequential 1 } | Invoke-Block
00:00:00 v #1 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"; options = { command = dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = Some <fun:compiler@87-4>; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:00:00 v #2 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #2 > 00:00:00 d #1 pwd: /home/runner/work/polyglot/polyglot
00:00:00 v #3 > 00:00:00 d #2 dllPath: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release
00:00:00 v #4 > 00:00:00 d #3 targetDir: /home/runner/work/polyglot/polyglot/target/spiral_Eval
00:00:00 v #3 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #4 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #5 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #6 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #7 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #8 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #9 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #10 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #11 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #12 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #13 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #14 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #15 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #16 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #17 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #18 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #19 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #20 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #21 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #22 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #23 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #24 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #25 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #5 > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:00 v #26 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #27 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #28 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:01 v #1 Supervisor.sendJson / port: 13805 / json: {"Ping":true} / result:
00:00:01 v #2 Supervisor.awaitCompiler / Ping / result: 'Some null' / port: 13805 / retry: 1
00:00:01 v #6 > Server bound to: http://localhost:13805
00:00:01 d #7 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path parsing.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path parsing.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:01 v #8 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "parsing.dib", "--retries", "3"])) }
00:00:01 v #9 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/parsing.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/parsing.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/parsing.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/parsing.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:00:02 v #10 > >
00:00:02 v #11 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:02 v #12 > > │ # parsing
00:00:05 v #13 > >
00:00:05 v #14 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:05 v #15 > > //// test
00:00:05 v #16 > >
00:00:05 v #17 > > open testing
00:00:08 v #18 > >
00:00:08 v #19 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 v #20 > > │ ## fparsec
00:00:09 v #21 > >
00:00:09 v #22 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 v #23 > > │ <div><div></div><div><strong>Installing
00:00:09 v #24 > > Packages</strong><ul><li><span>FParsec</span></li></ul></div><div></div></div>
00:00:09 v #25 > >
00:00:09 v #26 > > │ <div><div></div><div><strong>Installing
00:00:09 v #27 > > Packages</strong><ul><li><span>FParsec.</span></li></ul></div><div></div></div>
00:00:10 v #28 > >
00:00:10 v #29 > > │ <div><div></div><div><strong>Installing
00:00:10 v #30 > > Packages</strong><ul><li><span>FParsec..</span></li></ul></div><div></div></div>
00:00:10 v #31 > >
00:00:10 v #32 > > │ <div><div></div><div><strong>Installing
00:00:10 v #33 > > Packages</strong><ul><li><span>FParsec...</span></li></ul></div><div></div></div
00:00:10 v #34 > > >
00:00:10 v #35 > >
00:00:10 v #36 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 v #37 > > │  Package added: fsharp.core,4.3.4
00:00:10 v #38 > >
00:00:10 v #39 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 v #40 > > │  Package added: FParsec,1.1.1
00:00:10 v #41 > >
00:00:10 v #42 > > │ <div><div></div><div></div><div><strong>Installed
00:00:10 v #43 > > Packages</strong><ul><li><span>FParsec, 1.1.1</span></li></ul></div></div>
00:00:11 v #44 > >
00:00:11 v #45 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 v #46 > > //// test
00:00:11 v #47 > >
00:00:11 v #48 > > nominal position_ = $'FParsec.Position'
00:00:11 v #49 > > nominal parser_error_ = $'FParsec.Error.ParserError'
00:00:11 v #50 > >
00:00:11 v #51 > > nominal reply_ t = $'FParsec.Reply<`t>'
00:00:11 v #52 > >
00:00:11 v #53 > > nominal char_stream_ t = $'FParsec.CharStream<`t>'
00:00:11 v #54 > >
00:00:11 v #55 > > // nominal parser t u = char_stream u -> reply t
00:00:11 v #56 > > nominal parser_ t u = $'FParsec.Primitives.Parser<`t, `u>'
00:00:11 v #57 > >
00:00:11 v #58 > > inl p_char_ forall t. (x : char) : parser_ char t =
00:00:11 v #59 > >     x |> $'FParsec.CharParsers.pchar'
00:00:11 v #60 > >
00:00:11 v #61 > > inl p_string_ forall t. (x : string) : parser_ string t =
00:00:11 v #62 > >     x |> $'FParsec.CharParsers.pstring'
00:00:11 v #63 > >
00:00:11 v #64 > > inl (>>.$) forall t u v. (a : parser_ t v) (b : parser_ u v) : parser_ u v =
00:00:11 v #65 > >     b |> $'FParsec.Primitives.(>>.)' a
00:00:11 v #66 > >
00:00:11 v #67 > > inl (.>>$) forall t u v. (a : parser_ t v) (b : parser_ u v) : parser_ t v =
00:00:11 v #68 > >     b |> $'FParsec.Primitives.(.>>)' a
00:00:11 v #69 > >
00:00:11 v #70 > > inl (.>>.$) forall t u v. (a : parser_ t v) (b : parser_ u v) : parser_ (pair t
00:00:11 v #71 > > u) v =
00:00:11 v #72 > >     b |> $'FParsec.Primitives.(.>>.)' a
00:00:11 v #73 > >
00:00:11 v #74 > > inl (>>%$) forall t u v. (a : parser_ t v) (b : u) : parser_ u v =
00:00:11 v #75 > >     b |> $'FParsec.Primitives.(>>%)' a
00:00:11 v #76 > >
00:00:11 v #77 > > inl (>>=$) forall t u v. (a : parser_ t v) (b : t -> parser_ u v) : parser_ u v
00:00:11 v #78 > > =
00:00:11 v #79 > >     b |> $'FParsec.Primitives.(>>=)' a
00:00:11 v #80 > >
00:00:11 v #81 > > inl (|>>$) forall t u v. (a : parser_ t v) (b : t -> u) : parser_ u v =
00:00:11 v #82 > >     inl b = fun x => x |> b
00:00:11 v #83 > >     b |> $'FParsec.Primitives.(|>>)' a
00:00:11 v #84 > >
00:00:11 v #85 > > inl any_char_ () : parser_ char _ =
00:00:11 v #86 > >     $'FParsec.CharParsers.anyChar'
00:00:11 v #87 > >
00:00:11 v #88 > > inl any_string_ () : parser_ string _ =
00:00:11 v #89 > >     $'FParsec.CharParsers.anyString'
00:00:11 v #90 > >
00:00:11 v #91 > > inl any_string__ (n : i32) : parser_ string _ =
00:00:11 v #92 > >     n |> $'FParsec.CharParsers.anyString'
00:00:11 v #93 > >
00:00:11 v #94 > > inl eof_ () : parser_ () _ =
00:00:11 v #95 > >     $'FParsec.CharParsers.eof'
00:00:11 v #96 > >
00:00:11 v #97 > > inl spaces_ () : parser_ () () =
00:00:11 v #98 > >     $'FParsec.CharParsers.spaces'
00:00:11 v #99 > >
00:00:11 v #100 > > inl spaces1_ () : parser_ () () =
00:00:11 v #101 > >     $'FParsec.CharParsers.spaces1'
00:00:11 v #102 > >
00:00:11 v #103 > > inl (<|>$) forall t u. (a : parser_ t u) (b : parser_ t u) : parser_ t u =
00:00:11 v #104 > >     b |> $'FParsec.Primitives.(<|>)' a
00:00:11 v #105 > >
00:00:11 v #106 > > inl many_satisfy_ forall t. (x : char -> bool) : parser_ string t =
00:00:11 v #107 > >     x |> $'FParsec.CharParsers.manySatisfy'
00:00:11 v #108 > >
00:00:11 v #109 > > inl satisfy_ forall t. (x : char -> bool) : parser_ char t =
00:00:11 v #110 > >     x |> $'FParsec.CharParsers.satisfy'
00:00:11 v #111 > >
00:00:11 v #112 > > inl none_of_ (x : list char) : parser_ char () =
00:00:11 v #113 > >     x
00:00:11 v #114 > >     |> listm'.box
00:00:11 v #115 > >     |> listm'.to_array'
00:00:11 v #116 > >     |> $'FParsec.CharParsers.noneOf'
00:00:11 v #117 > >
00:00:11 v #118 > > inl any_of_ (x : list char) : parser_ char () =
00:00:11 v #119 > >     x
00:00:11 v #120 > >     |> listm'.box
00:00:11 v #121 > >     |> listm'.to_array'
00:00:11 v #122 > >     |> $'FParsec.CharParsers.anyOf'
00:00:11 v #123 > >
00:00:11 v #124 > > inl skip_any_of_ (x : list char) : parser_ () () =
00:00:11 v #125 > >     x
00:00:11 v #126 > >     |> listm'.box
00:00:11 v #127 > >     |> listm'.to_array'
00:00:11 v #128 > >     |> $'FParsec.CharParsers.skipAnyOf'
00:00:11 v #129 > >
00:00:11 v #130 > > inl between_ forall t u v x. (a : parser_ t x) (b : parser_ u x) (c : parser_ v
00:00:11 v #131 > > x) : parser_ v x =
00:00:11 v #132 > >     c |> $'FParsec.Primitives.between' a b
00:00:11 v #133 > >
00:00:11 v #134 > > inl many_chars_ forall t. (x : parser_ char t) : parser_ string t =
00:00:11 v #135 > >     x |> $'FParsec.CharParsers.manyChars'
00:00:11 v #136 > >
00:00:11 v #137 > > inl many1_chars_ forall t. (x : parser_ char t) : parser_ string t =
00:00:11 v #138 > >     x |> $'FParsec.CharParsers.many1Chars'
00:00:11 v #139 > >
00:00:11 v #140 > > inl many_strings_ forall t. (x : parser_ string t) : parser_ string t =
00:00:11 v #141 > >     x |> $'FParsec.CharParsers.manyStrings'
00:00:11 v #142 > >
00:00:11 v #143 > > inl skip_any_string_ forall t. (n : i32) : parser_ () t =
00:00:11 v #144 > >     n |> $'FParsec.CharParsers.skipAnyString'
00:00:11 v #145 > >
00:00:11 v #146 > > inl many1_strings_ forall t. (x : parser_ string t) : parser_ string t =
00:00:11 v #147 > >     x |> $'FParsec.CharParsers.many1Strings'
00:00:11 v #148 > >
00:00:11 v #149 > > inl opt_ forall t u. (a : parser_ t u) : parser_ (optionm'.option' t) u =
00:00:11 v #150 > >     a |> $'FParsec.Primitives.opt'
00:00:11 v #151 > >
00:00:11 v #152 > > inl choice_ forall t u. (a : list (parser_ t u)) : parser_ t u =
00:00:11 v #153 > >     a
00:00:11 v #154 > >     |> listm'.box
00:00:11 v #155 > >     |> seq.of_list'
00:00:11 v #156 > >     |> $'FParsec.Primitives.choice'
00:00:11 v #157 > >
00:00:11 v #158 > > inl delay_ forall t u. (fn : () -> parser_ t u) : parser_ t u =
00:00:11 v #159 > >     fn |> $'FParsec.Primitives.parse.Delay'
00:00:11 v #160 > >
00:00:11 v #161 > > inl peek_ forall t u. (a : parser_ t u) : parser_ char u =
00:00:11 v #162 > >     $'!a.Peek ()'
00:00:11 v #163 > >
00:00:11 v #164 > > inl not_followed_by_ forall t u. (a : parser_ t u) : parser_ () u =
00:00:11 v #165 > >     a |> $'FParsec.Primitives.notFollowedBy'
00:00:11 v #166 > >
00:00:11 v #167 > > inl sep_by_ forall t u v. (a : parser_ t v) (b : parser_ u v) : parser_
00:00:11 v #168 > > (listm'.list' t) v =
00:00:11 v #169 > >     b |> $'FParsec.Primitives.sepBy' a
00:00:11 v #170 > >
00:00:11 v #171 > > inl sep_by1_ forall t u v. (a : parser_ t v) (b : parser_ u v) : parser_
00:00:11 v #172 > > (listm'.list' t) v =
00:00:11 v #173 > >     b |> $'FParsec.Primitives.sepBy1' a
00:00:11 v #174 > >
00:00:11 v #175 > > inl sep_end_by_ forall t u v. (a : parser_ t v) (b : parser_ u v) : parser_
00:00:11 v #176 > > (listm'.list' t) v =
00:00:11 v #177 > >     b |> $'FParsec.Primitives.sepEndBy' a
00:00:11 v #178 > >
00:00:11 v #179 > > inl many_ forall t u. (a : parser_ t u) : parser_ (listm'.list' t) u =
00:00:11 v #180 > >     a |> $'FParsec.Primitives.many'
00:00:11 v #181 > >
00:00:11 v #182 > > inl many1_ forall t u. (a : parser_ t u) : parser_ (listm'.list' t) u =
00:00:11 v #183 > >     a |> $'FParsec.Primitives.many1'
00:00:11 v #184 > >
00:00:11 v #185 > > inl many1_satisfy_ forall t. (x : char -> bool) : parser_ string t =
00:00:11 v #186 > >     x |> $'FParsec.CharParsers.many1Satisfy'
00:00:11 v #187 > >
00:00:11 v #188 > > nominal parser_result'_ t u = $'FParsec.CharParsers.ParserResult<`t, `u>'
00:00:11 v #189 > >
00:00:11 v #190 > > inl run_ forall t. (parser : parser_ t ()) (x : string) : parser_result'_ t () =
00:00:11 v #191 > >     x |> $'FParsec.CharParsers.run' parser
00:00:11 v #192 > >
00:00:11 v #193 > > union parser_result_ t u =
00:00:11 v #194 > >     | Success : t * u * position_
00:00:11 v #195 > >     | Failure : string * parser_error_ * u
00:00:11 v #196 > >
00:00:11 v #197 > > inl parser_result_ forall t u. = function
00:00:11 v #198 > >     | Success (a, b, c) => $'`(parser_result'_ t u).Success (!a, !b, !c)' :
00:00:11 v #199 > > parser_result'_ t u
00:00:11 v #200 > >     | Failure (a, b, c) => $'`(parser_result'_ t u).Failure (!a, !b, !c)' :
00:00:11 v #201 > > parser_result'_ t u
00:00:11 v #202 > >
00:00:11 v #203 > > inl parser_result'_ forall t u. (x : parser_result'_ t u) : parser_result_ t u =
00:00:11 v #204 > >     $'let mutable _!x = None '
00:00:11 v #205 > >     $'match !x with'
00:00:11 v #206 > >     $'| FParsec.CharParsers.Success (a, b, c) -> (' : ()
00:00:11 v #207 > >     $'(fun () ->'
00:00:11 v #208 > >     $'(fun () ->'
00:00:11 v #209 > >     (Success ((dyn $'a'), dyn $'b', dyn $'c') : _ t u) |> emit_unit
00:00:11 v #210 > >     $')'
00:00:11 v #211 > >     $'|> fun x -> x ()'
00:00:11 v #212 > >     $') () ) | FParsec.CharParsers.Failure (a, b, c) -> (' : ()
00:00:11 v #213 > >     $'(fun () ->'
00:00:11 v #214 > >     $'(fun () ->'
00:00:11 v #215 > >     (Failure ((dyn $'a'), dyn $'b', dyn $'c') : _ t u) |> emit_unit
00:00:11 v #216 > >     $')'
00:00:11 v #217 > >     $'|> fun x -> x ()'
00:00:11 v #218 > >     $') () )' : ()
00:00:11 v #219 > >     $'|> fun x -> _!x <- Some x'
00:00:11 v #220 > >     $'match _!x with Some x -> x | None -> failwith "??? / _!x=None"'
00:00:11 v #221 > >
00:00:11 v #222 > > inl parse_ parser input : result _ _ =
00:00:11 v #223 > >     match input |> run_ parser |> parser_result'_ with
00:00:11 v #224 > >     | Success (result, b, c) => Ok (result, c)
00:00:11 v #225 > >     | Failure (error_msg, b, c) => Error (error_msg, b)
00:00:11 v #226 > >
00:00:11 v #227 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 v #228 > > //// test
00:00:11 v #229 > >
00:00:11 v #230 > > inl split_args (args : string) : result (array_base (string * position_))
00:00:11 v #231 > > (string * parser_error_) =
00:00:11 v #232 > >     inl esc = [[ '\\'; '`' ]]
00:00:11 v #233 > >     inl quotes = [[ '"' ]]
00:00:11 v #234 > >     inl special = esc ++ quotes
00:00:11 v #235 > >     inl p_esc_char c =
00:00:11 v #236 > >         p_char_ c >>.$ any_char_ () |>>$ fun c' => $'$"{!c}{!c'}"'
00:00:11 v #237 > >     inl p_word = special |> none_of_ |>>$ sm'.obj_to_string
00:00:11 v #238 > >     inl p_plain = special ++ [[ ' ' ]] |> none_of_ |> many1_chars_
00:00:11 v #239 > >     inl p_text = p_word |> many1_strings_
00:00:11 v #240 > >     inl p_esc = esc |> listm.map p_esc_char |> choice_
00:00:11 v #241 > >     inl p_quoted = (p_word <|>$ p_esc) |> many_ |>>$ (seq.of_list' >> sm'.concat
00:00:11 v #242 > > "")
00:00:11 v #243 > >     inl p_quoted_all = p_quoted |> between_ (p_char_ '"') (p_char_ '"')
00:00:11 v #244 > >     inl p_esc_root = p_esc |>>$ (fun _ => "") >>.$ (p_word |> many_) |>>$
00:00:11 v #245 > > (seq.of_list' >> sm'.concat "")
00:00:11 v #246 > >     inl p_content = p_plain <|>$ p_quoted_all <|>$ p_esc_root
00:00:11 v #247 > >     inl p_args = spaces1_ () |> sep_by_ p_content
00:00:11 v #248 > >     args
00:00:11 v #249 > >     |> parse_ p_args
00:00:11 v #250 > >     |> resultm.map fun (a', b') =>
00:00:11 v #251 > >         (
00:00:11 v #252 > >             (
00:00:11 v #253 > >                 a'
00:00:11 v #254 > >                 |> listm'.to_array'
00:00:11 v #255 > >                 |> a
00:00:11 v #256 > >                 |> am.map fun x => x, b'
00:00:11 v #257 > >                 |> fun (a x : _ i32 _) => x
00:00:11 v #258 > >             )
00:00:11 v #259 > >         )
00:00:11 v #260 > >
00:00:11 v #261 > > [[
00:00:11 v #262 > >     "a b c",
00:00:11 v #263 > >     ;[[ "a"; "b"; "c" ]]
00:00:11 v #264 > >
00:00:11 v #265 > >     "e f \"g h\" i",
00:00:11 v #266 > >     ;[[ "e"; "f"; "g h"; "i" ]]
00:00:11 v #267 > >
00:00:11 v #268 > >     "\"j k\" \"l\" \"m\"",
00:00:11 v #269 > >     ;[[ "j k"; "l"; "m" ]]
00:00:11 v #270 > >
00:00:11 v #271 > >     "s -t \"u \`\"v\`\" w\"",
00:00:11 v #272 > >     ;[[ "s"; "-t"; "u \`\"v\`\" w" ]]
00:00:11 v #273 > >
00:00:11 v #274 > >     "n -o \"p \\\"q\\\" r\"",
00:00:11 v #275 > >     ;[[ "n"; "-o"; "p \\\"q\\\" r" ]]
00:00:11 v #276 > >
00:00:11 v #277 > >     "r -s \"t \\\"u\\\"\"",
00:00:11 v #278 > >     ;[[ "r"; "-s"; "t \\\"u\\\"" ]]
00:00:11 v #279 > >
00:00:11 v #280 > >     $'$"x -y \\\"$z -a \'(b=\\\\\\"c-id=)[[a-fA-F0-9]]{{8}}\', {{ \`$_[[1]] +
00:00:11 v #281 > > \`$d++ }}\\\""',
00:00:11 v #282 > >     ;[[ "x"; "-y"; "$z -a '(b=\\\"c-id=)[[a-fA-F0-9]]{8}', { `$_[[1]] + `$d++ }"
00:00:11 v #283 > > ]]
00:00:11 v #284 > >
00:00:11 v #285 > >     "e -f \"$g -h '(i=`\"j-id=)[[a-fA-F0-9]]{8}', { `$_[[1]] + `$k++ }\"",
00:00:11 v #286 > >     ;[[ "e"; "-f"; "$g -h '(i=`\"j-id=)[[a-fA-F0-9]]{8}', { `$_[[1]] + `$k++ }"
00:00:11 v #287 > > ]]
00:00:11 v #288 > >
00:00:11 v #289 > >     $'$"--l \\\\\\"\'\'\' m \'\'\'\\\\\\" "',
00:00:11 v #290 > >     ;[[ "--l"; "''' m '''" ]]
00:00:11 v #291 > >
00:00:11 v #292 > >     $'$"n --o --p q --r \\\"s:/t u/v.w\\\" --x \\\"y:/z.a\\\" --b c.d
00:00:11 v #293 > > \\\"\\\\e{{f-g}}\\\" h.i \\\"j (k)\\\""',
00:00:11 v #294 > >     ;[[ "n"; "--o"; "--p"; "q"; "--r"; "s:/t u/v.w"; "--x"; "y:/z.a"; "--b";
00:00:11 v #295 > > "c.d"; "\\e{f-g}"; "h.i"; "j (k)" ]]
00:00:11 v #296 > >
00:00:11 v #297 > >     $'\@$"l ""m n:\\o.p"""',
00:00:11 v #298 > >     ;[[ "l"; "m n:\\o.p" ]]
00:00:11 v #299 > > ]]
00:00:11 v #300 > > |> listm.rev
00:00:11 v #301 > > |> listm.map fun input, expected =>
00:00:11 v #302 > >     input
00:00:11 v #303 > >     |> split_args
00:00:11 v #304 > >     |> fun x =>
00:00:11 v #305 > >         try
00:00:11 v #306 > >             fun () =>
00:00:11 v #307 > >                 ($'$"\ninput: {!input}"' : string)
00:00:11 v #308 > >                 |> console.write_line
00:00:11 v #309 > >                 x
00:00:11 v #310 > >                 |> resultm.get
00:00:11 v #311 > >                 |> am'.map_base fst
00:00:11 v #312 > >                 |> _assert_eq' expected
00:00:11 v #313 > >                 false
00:00:11 v #314 > >             fun ex =>
00:00:11 v #315 > >                 ($'$"error / expected: %A{!expected} / ex: %A{!ex}"' : string)
00:00:11 v #316 > >                 |> console.write_line
00:00:11 v #317 > >                 Some true
00:00:11 v #318 > >         |> optionm.value
00:00:11 v #319 > > |> listm'.filter id
00:00:11 v #320 > > |> function
00:00:11 v #321 > >     | [[]] => ()
00:00:11 v #322 > >     | x => failwith $'$"{!x}"'
00:00:14 v #323 > >
00:00:14 v #324 > > ── [ 2.69s - stdout ] ──────────────────────────────────────────────────────────
00:00:14 v #325 > > │
00:00:14 v #326 > > │ input: a b c
00:00:14 v #327 > > │ __assert_eq' / actual: [|"a"; "b"; "c"|] / expected: [|"a";
00:00:14 v #328 > > "b"; "c"|]
00:00:14 v #329 > > │
00:00:14 v #330 > > │ input: e f "g h" i
00:00:14 v #331 > > │ __assert_eq' / actual: [|"e"; "f"; "g h"; "i"|] / expected:
00:00:14 v #332 > > [|"e"; "f"; "g h"; "i"|]
00:00:14 v #333 > > │
00:00:14 v #334 > > │ input: "j k" "l" "m"
00:00:14 v #335 > > │ __assert_eq' / actual: [|"j k"; "l"; "m"|] / expected: [|"j
00:00:14 v #336 > > k"; "l"; "m"|]
00:00:14 v #337 > > │
00:00:14 v #338 > > │ input: s -t "u `"v`" w"
00:00:14 v #339 > > │ __assert_eq' / actual: [|"s"; "-t"; "u `"v`" w"|] / expected:
00:00:14 v #340 > > [|"s"; "-t"; "u `"v`" w"|]
00:00:14 v #341 > > │
00:00:14 v #342 > > │ input: n -o "p \"q\" r"
00:00:14 v #343 > > │ __assert_eq' / actual: [|"n"; "-o"; "p \"q\" r"|] / expected:
00:00:14 v #344 > > [|"n"; "-o"; "p \"q\" r"|]
00:00:14 v #345 > > │
00:00:14 v #346 > > │ input: r -s "t \"u\""
00:00:14 v #347 > > │ __assert_eq' / actual: [|"r"; "-s"; "t \"u\""|] / expected:
00:00:14 v #348 > > [|"r"; "-s"; "t \"u\""|]
00:00:14 v #349 > > │
00:00:14 v #350 > > │ input: x -y "$z -a '(b=\"c-id=)[a-fA-F0-9]{8}', { `$_[1] +
00:00:14 v #351 > > `$d++ }"
00:00:14 v #352 > > │ __assert_eq' / actual: [|"x"; "-y"; "$z -a
00:00:14 v #353 > > '(b=\"c-id=)[a-fA-F0-9]{8}', { `$_[1] + `$d++ }"|] / expected: [|"x"; "-y"; "$z
00:00:14 v #354 > > -a '(b=\"c-id=)[a-fA-F0-9]{8}', { `$_[1] + `$d++ }"|]
00:00:14 v #355 > > │
00:00:14 v #356 > > │ input: e -f "$g -h '(i=`"j-id=)[a-fA-F0-9]{8}', { `$_[1] +
00:00:14 v #357 > > `$k++ }"
00:00:14 v #358 > > │ __assert_eq' / actual: [|"e"; "-f"; "$g -h
00:00:14 v #359 > > '(i=`"j-id=)[a-fA-F0-9]{8}', { `$_[1] + `$k++ }"|] / expected: [|"e"; "-f"; "$g
00:00:14 v #360 > > -h '(i=`"j-id=)[a-fA-F0-9]{8}', { `$_[1] + `$k++ }"|]
00:00:14 v #361 > > │
00:00:14 v #362 > > │ input: --l \"''' m '''\"
00:00:14 v #363 > > │ __assert_eq' / actual: [|"--l"; "''' m '''"|] / expected:
00:00:14 v #364 > > [|"--l"; "''' m '''"|]
00:00:14 v #365 > > │
00:00:14 v #366 > > │ input: n --o --p q --r "s:/t u/v.w" --x "y:/z.a" --b c.d
00:00:14 v #367 > > "\e{f-g}" h.i "j (k)"
00:00:14 v #368 > > │ __assert_eq' / actual: [|"n"; "--o"; "--p"; "q"; "--r"; "s:/t
00:00:14 v #369 > > u/v.w"; "--x"; "y:/z.a"; "--b"; "c.d";
00:00:14 v #370 > > │   "\e{f-g}"; "h.i"; "j (k)"|] / expected: [|"n"; "--o";
00:00:14 v #371 > > "--p"; "q"; "--r"; "s:/t u/v.w"; "--x"; "y:/z.a"; "--b"; "c.d";
00:00:14 v #372 > > │   "\e{f-g}"; "h.i"; "j (k)"|]
00:00:14 v #373 > > │
00:00:14 v #374 > > │ input: l "m n:\o.p"
00:00:14 v #375 > > │ __assert_eq' / actual: [|"l"; "m n:\o.p"|] / expected: [|"l";
00:00:14 v #376 > > "m n:\o.p"|]
00:00:14 v #377 > > │
00:00:14 v #378 > >
00:00:14 v #379 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:14 v #380 > > │ ## parsing
00:00:14 v #381 > >
00:00:14 v #382 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:14 v #383 > > │ ### range
00:00:14 v #384 > >
00:00:14 v #385 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:14 v #386 > > type range =
00:00:14 v #387 > >     {
00:00:14 v #388 > >         from : int
00:00:14 v #389 > >         to : int
00:00:14 v #390 > >     }
00:00:14 v #391 > >
00:00:14 v #392 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:14 v #393 > > │ ### position
00:00:14 v #394 > >
00:00:14 v #395 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:14 v #396 > > type position =
00:00:14 v #397 > >     {
00:00:14 v #398 > >         line : int
00:00:14 v #399 > >         col : int
00:00:14 v #400 > >     }
00:00:14 v #401 > >
00:00:14 v #402 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:14 v #403 > > │ ### parser_state
00:00:14 v #404 > >
00:00:14 v #405 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:14 v #406 > > nominal parser_state =
00:00:14 v #407 > >     {
00:00:14 v #408 > >         line_text : sm'.string_builder
00:00:14 v #409 > >         position : position
00:00:14 v #410 > >     }
00:00:14 v #411 > >
00:00:14 v #412 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:14 v #413 > > │ ### parser
00:00:14 v #414 > >
00:00:14 v #415 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:14 v #416 > > type parser t = string * parser_state -> result (t * string * parser_state)
00:00:14 v #417 > > string
00:00:14 v #418 > >
00:00:14 v #419 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:14 v #420 > > │ ### parse
00:00:14 v #421 > >
00:00:14 v #422 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:14 v #423 > > inl parse forall t. (p : parser t) (input : string) : result (t * string *
00:00:14 v #424 > > parser_state) string =
00:00:14 v #425 > >     inl input =
00:00:14 v #426 > >         input
00:00:14 v #427 > >         |> optionm'.of_obj
00:00:14 v #428 > >         |> optionm'.default_value' ""
00:00:14 v #429 > >     p (input, { line_text = "" |> sm'.string_builder; position = { line = 1; col
00:00:14 v #430 > > = 1 } } |> parser_state)
00:00:14 v #431 > >
00:00:14 v #432 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:14 v #433 > > │ ### inc
00:00:14 v #434 > >
00:00:14 v #435 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:14 v #436 > > inl inc (parser_state s) = function
00:00:14 v #437 > >     | '\n' => { line = s.position.line + 1; col = 1 }
00:00:14 v #438 > >     | _ => { s.position with col = s.position.col + 1 }.position
00:00:15 v #439 > >
00:00:15 v #440 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:15 v #441 > > │ ### update
00:00:15 v #442 > >
00:00:15 v #443 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:15 v #444 > > inl update result s =
00:00:15 v #445 > >     (s, result |> sm'.to_char_array |> am'.to_list_base' |> listm'.unbox)
00:00:15 v #446 > >     ||> listm.fold fun (parser_state s as s') c =>
00:00:15 v #447 > >         { s with
00:00:15 v #448 > >             position = c |> inc s'
00:00:15 v #449 > >             line_text =
00:00:15 v #450 > >                 match c with
00:00:15 v #451 > >                 | '\n' => s.line_text |> sm'.builder_clear
00:00:15 v #452 > >                 | c => s.line_text |> sm'.builder_append (c |>
00:00:15 v #453 > > sm'.obj_to_string)
00:00:15 v #454 > >         } |> parser_state
00:00:15 v #455 > >
00:00:15 v #456 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:15 v #457 > > │ ### any_char
00:00:15 v #458 > >
00:00:15 v #459 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:15 v #460 > > inl any_char () : parser char = function
00:00:15 v #461 > >     | "", s =>
00:00:15 v #462 > >         backend_switch {
00:00:15 v #463 > >             Fsharp = fun () => $'$"parsing.any_char / unexpected end of input
00:00:15 v #464 > > s: %A{!s}"' : string
00:00:15 v #465 > >             Python = fun () => $'f"parsing.any_char / unexpected end of input
00:00:15 v #466 > > s: {!s}"' : string
00:00:15 v #467 > >         }
00:00:15 v #468 > >         |> Error
00:00:15 v #469 > >     | x, s =>
00:00:15 v #470 > >         inl first_char = x |> sm'.index 0i32
00:00:15 v #471 > >         Ok (
00:00:15 v #472 > >             first_char,
00:00:15 v #473 > >             x |> sm'.range (am'.Start 1i32) (am'.End eval),
00:00:15 v #474 > >             s |> update (first_char |> sm'.obj_to_string)
00:00:15 v #475 > >         )
00:00:15 v #476 > >
00:00:15 v #477 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:15 v #478 > > //// test
00:00:15 v #479 > > ///! fsharp
00:00:15 v #480 > > ///! cuda
00:00:15 v #481 > > ///! typescript
00:00:15 v #482 > >
00:00:15 v #483 > > "abc"
00:00:15 v #484 > > |> parse (any_char ())
00:00:15 v #485 > > |> resultm.get
00:00:15 v #486 > > |> sm'.format_debug
00:00:15 v #487 > > |> _assert_eq (
00:00:15 v #488 > >     ('a', "bc", { line_text = "a" |> sm'.string_builder; position = { line =
00:00:15 v #489 > > 1i32; col = 2i32 } })
00:00:15 v #490 > >     |> sm'.format_debug
00:00:15 v #491 > > )
00:00:21 v #492 > >
00:00:21 v #493 > > ── [ 6.48s - return value ] ────────────────────────────────────────────────────
00:00:21 v #494 > > │ .py output (Cuda):
00:00:21 v #495 > > │ __assert_eq / actual: ('a', 'bc', a, 1, 2) / expected: ('a',
00:00:21 v #496 > > 'bc', a, 1, 2)
00:00:21 v #497 > > │
00:00:21 v #498 > > │ .ts output:
00:00:21 v #499 > > │ __assert_eq / actual: a,bc,a,1,2 / expected: a,bc,a,1,2
00:00:21 v #500 > > │
00:00:21 v #501 > > │
00:00:21 v #502 > >
00:00:21 v #503 > > ── [ 6.48s - stdout ] ──────────────────────────────────────────────────────────
00:00:21 v #504 > > │ .fsx output:
00:00:21 v #505 > > │ __assert_eq / actual: "struct ('a', "bc", a, 1, 2)"
00:00:21 v #506 > > expected: "struct ('a', "bc", a, 1, 2)"
00:00:21 v #507 > > │
00:00:21 v #508 > >
00:00:21 v #509 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:21 v #510 > > //// test
00:00:21 v #511 > >
00:00:21 v #512 > > "abc"
00:00:21 v #513 > > |> parse_ (any_char_ ())
00:00:21 v #514 > > |> resultm.get
00:00:21 v #515 > > |> sm'.format_debug
00:00:21 v #516 > > |> _assert_eq' (('a', ($'FParsec.Position (null, 0, 1, 2)' : position_)) |>
00:00:21 v #517 > > sm'.format_debug)
00:00:22 v #518 > >
00:00:22 v #519 > > ── [ 262.40ms - stdout ] ───────────────────────────────────────────────────────
00:00:22 v #520 > > │ __assert_eq' / actual: "struct ('a', (Ln: 1, Col: 2))"
00:00:22 v #521 > > expected: "struct ('a', (Ln: 1, Col: 2))"
00:00:22 v #522 > > │
00:00:22 v #523 > >
00:00:22 v #524 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:22 v #525 > > │ ### p_char
00:00:22 v #526 > >
00:00:22 v #527 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:22 v #528 > > inl p_char (c : char) : parser char = function
00:00:22 v #529 > >     | "", s =>
00:00:22 v #530 > >         backend_switch {
00:00:22 v #531 > >             Fsharp = fun () => $'$"parsing.p_char / unexpected end of input / c:
00:00:22 v #532 > > \'{!c}\' / s: %A{!s}"' : string
00:00:22 v #533 > >             Python = fun () => $'f"parsing.p_char / unexpected end of input / c:
00:00:22 v #534 > > \'{!c}\' / s: {!s}"' : string
00:00:22 v #535 > >         }
00:00:22 v #536 > >         |> Error
00:00:22 v #537 > >     | input, (parser_state ({ line_text position = { line col } } as s) as s')
00:00:22 v #538 > > =>
00:00:22 v #539 > >         inl first_char = input |> sm'.index 0i32
00:00:22 v #540 > >         if first_char = c then
00:00:22 v #541 > >             Ok (
00:00:22 v #542 > >                 first_char,
00:00:22 v #543 > >                 input |> sm'.range (am'.Start 1i32) (am'.End eval),
00:00:22 v #544 > >                 s' |> update (first_char |> sm'.obj_to_string)
00:00:22 v #545 > >             )
00:00:22 v #546 > >         else
00:00:22 v #547 > >             inl message : string =
00:00:22 v #548 > >                 inl rest =
00:00:22 v #549 > >                     input
00:00:22 v #550 > >                     |> sm'.range
00:00:22 v #551 > >                         (am'.Start 0i32)
00:00:22 v #552 > >                         (am'.End fun l =>
00:00:22 v #553 > >                             match (input |> sm'.index_of "\n") - 1 with
00:00:22 v #554 > >                             | -2 => l () + 1
00:00:22 v #555 > >                             | i => i + 1
00:00:22 v #556 > >                         )
00:00:22 v #557 > >                 backend_switch {
00:00:22 v #558 > >                     Fsharp = fun () => $'$"parsing.p_char / expected: \'{!c}\'
00:00:22 v #559 > > line: {!line} / col: {!col}\n{!line_text}{!rest}"' : string
00:00:22 v #560 > >                     Python = fun () => $'f"""parsing.p_char / expected: \'{!c}\'
00:00:22 v #561 > > / line: {!line} / col: {!col}\n{!line_text}{!rest}"""' : string
00:00:22 v #562 > >                 }
00:00:22 v #563 > >             inl pointer_line = (sm'.replicate (col - 1) " ") +. "^"
00:00:22 v #564 > >             backend_switch {
00:00:22 v #565 > >                 Fsharp = fun () => $'$"{!message}\n{!pointer_line}\n"' : string
00:00:22 v #566 > >                 Python = fun () => $'f"""{!message}\n{!pointer_line}\n"""' :
00:00:22 v #567 > > string
00:00:22 v #568 > >             }
00:00:22 v #569 > >             |> Error
00:00:22 v #570 > >
00:00:22 v #571 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:22 v #572 > > //// test
00:00:22 v #573 > > ///! fsharp
00:00:22 v #574 > > ///! cuda
00:00:22 v #575 > > ///! typescript
00:00:22 v #576 > >
00:00:22 v #577 > > "abc"
00:00:22 v #578 > > |> parse (p_char 'a')
00:00:22 v #579 > > |> resultm.get
00:00:22 v #580 > > |> sm'.format_debug
00:00:22 v #581 > > |> _assert_eq (
00:00:22 v #582 > >     ('a', "bc", { line_text = "a" |> sm'.string_builder; position = { line =
00:00:22 v #583 > > 1i32; col = 2i32 } })
00:00:22 v #584 > >     |> sm'.format_debug
00:00:22 v #585 > > )
00:00:28 v #586 > >
00:00:28 v #587 > > ── [ 5.95s - return value ] ────────────────────────────────────────────────────
00:00:28 v #588 > > │ .py output (Cuda):
00:00:28 v #589 > > │ __assert_eq / actual: ('a', 'bc', a, 1, 2) / expected: ('a',
00:00:28 v #590 > > 'bc', a, 1, 2)
00:00:28 v #591 > > │
00:00:28 v #592 > > │ .ts output:
00:00:28 v #593 > > │ __assert_eq / actual: a,bc,a,1,2 / expected: a,bc,a,1,2
00:00:28 v #594 > > │
00:00:28 v #595 > > │
00:00:28 v #596 > >
00:00:28 v #597 > > ── [ 5.95s - stdout ] ──────────────────────────────────────────────────────────
00:00:28 v #598 > > │ .fsx output:
00:00:28 v #599 > > │ __assert_eq / actual: "struct ('a', "bc", a, 1, 2)"
00:00:28 v #600 > > expected: "struct ('a', "bc", a, 1, 2)"
00:00:28 v #601 > > │
00:00:28 v #602 > >
00:00:28 v #603 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:28 v #604 > > //// test
00:00:28 v #605 > >
00:00:28 v #606 > > "abc"
00:00:28 v #607 > > |> parse_ (p_char_ 'a')
00:00:28 v #608 > > |> resultm.get
00:00:28 v #609 > > |> sm'.format_debug
00:00:28 v #610 > > |> _assert_eq' (('a', ($'FParsec.Position (null, 0, 1, 2)' : position_)) |>
00:00:28 v #611 > > sm'.format_debug)
00:00:28 v #612 > >
00:00:28 v #613 > > ── [ 206.61ms - stdout ] ───────────────────────────────────────────────────────
00:00:28 v #614 > > │ __assert_eq' / actual: "struct ('a', (Ln: 1, Col: 2))"
00:00:28 v #615 > > expected: "struct ('a', (Ln: 1, Col: 2))"
00:00:28 v #616 > > │
00:00:28 v #617 > >
00:00:28 v #618 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:28 v #619 > > │ ### any_string
00:00:28 v #620 > >
00:00:28 v #621 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:28 v #622 > > inl any_string length : parser string = fun input, s =>
00:00:28 v #623 > >     if sm'.length input < length then
00:00:28 v #624 > >         backend_switch {
00:00:28 v #625 > >             Fsharp = fun () => $'$"parsing.any_string / unexpected end of input
00:00:28 v #626 > > / s: %A{!s}"' : string
00:00:28 v #627 > >             Python = fun () => $'f"parsing.any_string / unexpected end of input
00:00:28 v #628 > > / s: {!s}"' : string
00:00:28 v #629 > >         }
00:00:28 v #630 > >         |> Error
00:00:28 v #631 > >     else
00:00:28 v #632 > >         inl result = input |> sm'.range (am'.Start 0i32) (am'.End fun _ =>
00:00:28 v #633 > > length)
00:00:28 v #634 > >         Ok (
00:00:28 v #635 > >             result,
00:00:28 v #636 > >             input |> sm'.range (am'.Start length) (am'.End eval),
00:00:28 v #637 > >             s |> update result
00:00:28 v #638 > >         )
00:00:28 v #639 > >
00:00:28 v #640 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:28 v #641 > > //// test
00:00:28 v #642 > > ///! fsharp
00:00:28 v #643 > > ///! cuda
00:00:28 v #644 > > ///! typescript
00:00:28 v #645 > >
00:00:28 v #646 > > "abcdef"
00:00:28 v #647 > > |> parse (any_string 3i32)
00:00:28 v #648 > > |> resultm.get
00:00:28 v #649 > > |> sm'.format_debug
00:00:28 v #650 > > |> _assert_eq (
00:00:28 v #651 > >     ("abc", "def", { line_text = "abc" |> sm'.string_builder; position = { line
00:00:28 v #652 > > = 1i32; col = 4i32 } })
00:00:28 v #653 > >     |> sm'.format_debug
00:00:28 v #654 > > )
00:00:34 v #655 > >
00:00:34 v #656 > > ── [ 6.08s - return value ] ────────────────────────────────────────────────────
00:00:34 v #657 > > │ .py output (Cuda):
00:00:34 v #658 > > │ __assert_eq / actual: ('abc', 'def', abc, 1, 4) / expected:
00:00:34 v #659 > > ('abc', 'def', abc, 1, 4)
00:00:34 v #660 > > │
00:00:34 v #661 > > │ .ts output:
00:00:34 v #662 > > │ __assert_eq / actual: abc,def,abc,1,4 / expected:
00:00:34 v #663 > > abc,def,abc,1,4
00:00:34 v #664 > > │
00:00:34 v #665 > > │
00:00:34 v #666 > >
00:00:34 v #667 > > ── [ 6.08s - stdout ] ──────────────────────────────────────────────────────────
00:00:34 v #668 > > │ .fsx output:
00:00:34 v #669 > > │ __assert_eq / actual: "struct ("abc", "def", abc, 1, 4)"
00:00:34 v #670 > > expected: "struct ("abc", "def", abc, 1, 4)"
00:00:34 v #671 > > │
00:00:34 v #672 > >
00:00:34 v #673 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:34 v #674 > > //// test
00:00:34 v #675 > >
00:00:34 v #676 > > "abcdef"
00:00:34 v #677 > > |> parse_ (any_string__ 3)
00:00:34 v #678 > > |> resultm.get
00:00:34 v #679 > > |> sm'.obj_to_string
00:00:34 v #680 > > |> _assert_eq' (("abc", ($'FParsec.Position (null, 0, 1, 4)' : position_)) |>
00:00:34 v #681 > > sm'.obj_to_string)
00:00:35 v #682 > >
00:00:35 v #683 > > ── [ 275.62ms - stdout ] ───────────────────────────────────────────────────────
00:00:35 v #684 > > │ __assert_eq' / actual: "(abc, (Ln: 1, Col: 4))" / expected:
00:00:35 v #685 > > "(abc, (Ln: 1, Col: 4))"
00:00:35 v #686 > > │
00:00:35 v #687 > >
00:00:35 v #688 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:35 v #689 > > │ ### skip_any_string
00:00:35 v #690 > >
00:00:35 v #691 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:35 v #692 > > inl skip_any_string length : parser () = fun input, s =>
00:00:35 v #693 > >     if sm'.length input < length then
00:00:35 v #694 > >         backend_switch {
00:00:35 v #695 > >             Fsharp = fun () => $'$"parsing.skip_any_string / unexpected end of
00:00:35 v #696 > > input / s: %A{!s}"' : string
00:00:35 v #697 > >             Python = fun () => $'f"parsing.skip_any_string / unexpected end of
00:00:35 v #698 > > input / s: {!s}"' : string
00:00:35 v #699 > >         }
00:00:35 v #700 > >         |> Error
00:00:35 v #701 > >     else
00:00:35 v #702 > >         Ok (
00:00:35 v #703 > >             (),
00:00:35 v #704 > >             input |> sm'.range (am'.Start length) (am'.End eval),
00:00:35 v #705 > >             s |> update (input |> sm'.range (am'.Start 0i32) (am'.End fun _ =>
00:00:35 v #706 > > length))
00:00:35 v #707 > >         )
00:00:35 v #708 > >
00:00:35 v #709 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:35 v #710 > > //// test
00:00:35 v #711 > > ///! fsharp
00:00:35 v #712 > > ///! cuda
00:00:35 v #713 > > ///! typescript
00:00:35 v #714 > >
00:00:35 v #715 > > "abcdef"
00:00:35 v #716 > > |> parse (skip_any_string 3i32)
00:00:35 v #717 > > |> resultm.get
00:00:35 v #718 > > |> sm'.format_debug
00:00:35 v #719 > > |> _assert_eq (
00:00:35 v #720 > >     ((), "def", { line_text = "abc" |> sm'.string_builder; position = { line =
00:00:35 v #721 > > 1i32; col = 4i32 } })
00:00:35 v #722 > >     |> sm'.format_debug
00:00:35 v #723 > > )
00:00:41 v #724 > >
00:00:41 v #725 > > ── [ 5.85s - return value ] ────────────────────────────────────────────────────
00:00:41 v #726 > > │ .py output (Cuda):
00:00:41 v #727 > > │ __assert_eq / actual: ('def', abc, 1, 4) / expected: ('def',
00:00:41 v #728 > > abc, 1, 4)
00:00:41 v #729 > > │
00:00:41 v #730 > > │ .ts output:
00:00:41 v #731 > > │ __assert_eq / actual: def,abc,1,4 / expected: def,abc,1,4
00:00:41 v #732 > > │
00:00:41 v #733 > > │
00:00:41 v #734 > >
00:00:41 v #735 > > ── [ 5.85s - stdout ] ──────────────────────────────────────────────────────────
00:00:41 v #736 > > │ .fsx output:
00:00:41 v #737 > > │ __assert_eq / actual: "struct ("def", abc, 1, 4)" / expected:
00:00:41 v #738 > > "struct ("def", abc, 1, 4)"
00:00:41 v #739 > > │
00:00:41 v #740 > >
00:00:41 v #741 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:41 v #742 > > │ ### (>>.)
00:00:41 v #743 > >
00:00:41 v #744 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:41 v #745 > > inl (>>.) forall t u. (a : parser t) (b : parser u) : parser u = fun input, s =>
00:00:41 v #746 > >     match a (input, s) with
00:00:41 v #747 > >     | Ok (_, rest, s) => b (rest, s)
00:00:41 v #748 > >     | Error e => Error e
00:00:41 v #749 > >
00:00:41 v #750 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:41 v #751 > > │ ### (>>.)
00:00:41 v #752 > >
00:00:41 v #753 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:41 v #754 > > inl (.>>) forall t u. (a : parser t) (b : parser u) : parser t = fun input, s =>
00:00:41 v #755 > >     match a (input, s) with
00:00:41 v #756 > >     | Ok (result, rest, s) =>
00:00:41 v #757 > >         b (rest, s)
00:00:41 v #758 > >         |> resultm.map fun _, rest, s =>
00:00:41 v #759 > >             result, rest, s
00:00:41 v #760 > >     | Error e => Error e
00:00:41 v #761 > >
00:00:41 v #762 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:41 v #763 > > │ ### (.>>.)
00:00:41 v #764 > >
00:00:41 v #765 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:41 v #766 > > inl (.>>.) forall t u. (a : parser t) (b : parser u) : parser (t * u) = fun
00:00:41 v #767 > > input, s =>
00:00:41 v #768 > >     match a (input, s) with
00:00:41 v #769 > >     | Ok (result_a, rest, s) =>
00:00:41 v #770 > >         b (rest, s)
00:00:41 v #771 > >         |> resultm.map fun result_b, rest, s =>
00:00:41 v #772 > >             (result_a, result_b), rest, s
00:00:41 v #773 > >     | Error e => Error e
00:00:41 v #774 > >
00:00:41 v #775 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:41 v #776 > > │ ### (>>%)
00:00:41 v #777 > >
00:00:41 v #778 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:41 v #779 > > inl (>>%) forall t u. (a : parser t) (b : u) : parser u =
00:00:41 v #780 > >     a >> resultm.map fun _, rest, s =>
00:00:41 v #781 > >         b, rest, s
00:00:41 v #782 > >
00:00:41 v #783 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:41 v #784 > > //// test
00:00:41 v #785 > > ///! fsharp
00:00:41 v #786 > > ///! cuda
00:00:41 v #787 > > ///! typescript
00:00:41 v #788 > >
00:00:41 v #789 > > "abc"
00:00:41 v #790 > > |> parse (p_char 'a' >>. p_char 'b')
00:00:41 v #791 > > |> resultm.get
00:00:41 v #792 > > |> sm'.format_debug
00:00:41 v #793 > > |> _assert_eq (
00:00:41 v #794 > >     ('b', "c", { line_text = "ab" |> sm'.string_builder; position = { line =
00:00:41 v #795 > > 1i32; col = 3i32 } })
00:00:41 v #796 > >     |> sm'.format_debug
00:00:41 v #797 > > )
00:00:41 v #798 > >
00:00:41 v #799 > > "abc\ndef\nghi"
00:00:41 v #800 > > |> parse (skip_any_string 5i32 >>. p_char 'a')
00:00:41 v #801 > > |> _assert_eq (Error "parsing.p_char / expected: 'a' / line: 2 / col: 2\ndef\n
00:00:41 v #802 > > ^\n")
00:00:48 v #803 > >
00:00:48 v #804 > > ── [ 6.22s - return value ] ────────────────────────────────────────────────────
00:00:48 v #805 > > │
00:00:48 v #806 > > │ .py output (Cuda):
00:00:48 v #807 > > │ __assert_eq / actual: ('b', 'c', ab, 1, 3) / expected: ('b',
00:00:48 v #808 > > 'c', ab, 1, 3)
00:00:48 v #809 > > │ __assert_eq / actual: US0_1(v0="parsing.p_char / expected:
00:00:48 v #810 > > 'a' / line: 2 / col: 2\ndef\n ^\n") / expected: US0_1(v0="parsing.p_char
00:00:48 v #811 > > expected: 'a' / line: 2 / col: 2\ndef\n ^\n")
00:00:48 v #812 > > │
00:00:48 v #813 > > │
00:00:48 v #814 > > │ .ts output:
00:00:48 v #815 > > │ __assert_eq / actual: b,c,ab,1,3 / expected: b,c,ab,1,3
00:00:48 v #816 > > │ __assert_eq / actual: US0_1 (parsing.p_char / expected: 'a'
00:00:48 v #817 > > line: 2 / col: 2
00:00:48 v #818 > > │ def
00:00:48 v #819 > > │  ^
00:00:48 v #820 > > │ ) / expected: US0_1 (parsing.p_char / expected: 'a' / line: 2
00:00:48 v #821 > > / col: 2
00:00:48 v #822 > > │ def
00:00:48 v #823 > > │  ^
00:00:48 v #824 > > │ )
00:00:48 v #825 > > │
00:00:48 v #826 > > │
00:00:48 v #827 > > │
00:00:48 v #828 > >
00:00:48 v #829 > > ── [ 6.22s - stdout ] ──────────────────────────────────────────────────────────
00:00:48 v #830 > > │ .fsx output:
00:00:48 v #831 > > │ __assert_eq / actual: "struct ('b', "c", ab, 1, 3)"
00:00:48 v #832 > > expected: "struct ('b', "c", ab, 1, 3)"
00:00:48 v #833 > > │ __assert_eq / actual: US0_1 "parsing.p_char / expected: 'a'
00:00:48 v #834 > > line: 2 / col: 2
00:00:48 v #835 > > │ def
00:00:48 v #836 > > │  ^
00:00:48 v #837 > > │ " / expected: US0_1 "parsing.p_char / expected: 'a' / line: 2
00:00:48 v #838 > > / col: 2
00:00:48 v #839 > > │ def
00:00:48 v #840 > > │  ^
00:00:48 v #841 > > │ "
00:00:48 v #842 > > │
00:00:48 v #843 > >
00:00:48 v #844 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:48 v #845 > > //// test
00:00:48 v #846 > >
00:00:48 v #847 > > "abc"
00:00:48 v #848 > > |> parse_ (p_char_ 'a' >>.$ p_char_ 'b')
00:00:48 v #849 > > |> resultm.get
00:00:48 v #850 > > |> sm'.obj_to_string
00:00:48 v #851 > > |> _assert_eq' (('b', ($'FParsec.Position (null, 0, 1, 3)' : position_)) |>
00:00:48 v #852 > > sm'.obj_to_string)
00:00:48 v #853 > >
00:00:48 v #854 > > ── [ 226.08ms - stdout ] ───────────────────────────────────────────────────────
00:00:48 v #855 > > │ __assert_eq' / actual: "(b, (Ln: 1, Col: 3))" / expected:
00:00:48 v #856 > > "(b, (Ln: 1, Col: 3))"
00:00:48 v #857 > > │
00:00:48 v #858 > >
00:00:48 v #859 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:48 v #860 > > //// test
00:00:48 v #861 > >
00:00:48 v #862 > > "abc\ndef\nghi"
00:00:48 v #863 > > |> parse_ (skip_any_string_ 5 >>.$ p_char_ 'a')
00:00:48 v #864 > > |> resultm.unwrap_err
00:00:48 v #865 > > |> sm'.obj_to_string
00:00:48 v #866 > > |> sm'.replace "\r\n" "\n"
00:00:48 v #867 > > |> _assert_eq "(Error in Ln: 2 Col: 2\ndef\n ^\nExpecting: 'a'\n, Error in Ln: 2
00:00:48 v #868 > > Col: 2\nExpecting: 'a'\n)"
00:00:48 v #869 > >
00:00:48 v #870 > > ── [ 210.94ms - stdout ] ───────────────────────────────────────────────────────
00:00:48 v #871 > > │ __assert_eq / actual: "(Error in Ln: 2 Col: 2
00:00:48 v #872 > > │ def
00:00:48 v #873 > > │  ^
00:00:48 v #874 > > │ Expecting: 'a'
00:00:48 v #875 > > │ , Error in Ln: 2 Col: 2
00:00:48 v #876 > > │ Expecting: 'a'
00:00:48 v #877 > > │ )" / expected: "(Error in Ln: 2 Col: 2
00:00:48 v #878 > > │ def
00:00:48 v #879 > > │  ^
00:00:48 v #880 > > │ Expecting: 'a'
00:00:48 v #881 > > │ , Error in Ln: 2 Col: 2
00:00:48 v #882 > > │ Expecting: 'a'
00:00:48 v #883 > > │ )"
00:00:48 v #884 > > │
00:00:48 v #885 > >
00:00:48 v #886 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:48 v #887 > > │ ### none_of
00:00:48 v #888 > >
00:00:48 v #889 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:48 v #890 > > inl none_of (chars : list char) : parser char = function
00:00:48 v #891 > >     | "", s =>
00:00:48 v #892 > >         inl chars = chars |> listm'.box |> listm'.to_array'
00:00:48 v #893 > >         backend_switch {
00:00:48 v #894 > >             Fsharp = fun () => $'$"parsing.none_of / unexpected end of input
00:00:48 v #895 > > chars: %A{!chars} / s: %A{!s}"' : string
00:00:48 v #896 > >             Python = fun () => $'f"parsing.none_of / unexpected end of input
00:00:48 v #897 > > chars: {!chars} / s: {!s}"' : string
00:00:48 v #898 > >         }
00:00:48 v #899 > >         |> Error
00:00:48 v #900 > >     | x, s =>
00:00:48 v #901 > >         inl first_char = x |> sm'.index 0i32
00:00:48 v #902 > >         if chars |> listm'.exists' ((=) first_char) |> not then
00:00:48 v #903 > >             Ok (
00:00:48 v #904 > >                 first_char,
00:00:48 v #905 > >                 x |> sm'.range (am'.Start 1i32) (am'.End eval),
00:00:48 v #906 > >                 s |> update (first_char |> sm'.obj_to_string)
00:00:48 v #907 > >             )
00:00:48 v #908 > >         else
00:00:48 v #909 > >             inl chars = chars |> listm'.box |> listm'.to_array'
00:00:48 v #910 > >             backend_switch {
00:00:48 v #911 > >                 Fsharp = fun () => $'$"parsing.none_of / unexpected char:
00:00:48 v #912 > > \'{!first_char}\' / chars: %A{!chars} / s: %A{!s}"' : string
00:00:48 v #913 > >                 Python = fun () => $'f"parsing.none_of / unexpected char:
00:00:48 v #914 > > \'{!first_char}\' / chars: {!chars} / s: {!s}"' : string
00:00:48 v #915 > >             }
00:00:48 v #916 > >             |> Error
00:00:48 v #917 > >
00:00:48 v #918 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:48 v #919 > > //// test
00:00:48 v #920 > > ///! fsharp
00:00:48 v #921 > > ///! cuda
00:00:48 v #922 > > ///! typescript
00:00:48 v #923 > >
00:00:48 v #924 > > "abc"
00:00:48 v #925 > > |> parse (none_of [['a'; 'b'; 'c']])
00:00:48 v #926 > > |> _assert_eq (
00:00:48 v #927 > >     backend_switch {
00:00:48 v #928 > >         Fsharp = fun () =>
00:00:48 v #929 > >             run_target function
00:00:48 v #930 > >             | TypeScript _ => fun () => "parsing.none_of / unexpected char:
00:00:48 v #931 > > \'a\' / chars: a,b,c / s: ,1,1" : string
00:00:48 v #932 > >             | _ => fun () => join "parsing.none_of / unexpected char: \'a\'
00:00:48 v #933 > > chars: [[|'a'; 'b'; 'c'|]] / s: struct (, 1, 1)" : string
00:00:48 v #934 > >         Python = fun () => "parsing.none_of / unexpected char: \'a\' / chars:
00:00:48 v #935 > > [['a' 'b' 'c']] / s: (, 1, 1)" : string
00:00:48 v #936 > >     }
00:00:48 v #937 > >     |> Error
00:00:48 v #938 > > )
00:00:48 v #939 > >
00:00:48 v #940 > > "def"
00:00:48 v #941 > > |> parse (none_of [['a'; 'b'; 'c']])
00:00:48 v #942 > > |> resultm.get
00:00:48 v #943 > > |> sm'.format_debug
00:00:48 v #944 > > |> _assert_eq (
00:00:48 v #945 > >     ('d', "ef", { line_text = "d" |> sm'.string_builder; position = { line =
00:00:48 v #946 > > 1i32; col = 2i32 } })
00:00:48 v #947 > >     |> sm'.format_debug
00:00:48 v #948 > > )
00:00:54 v #949 > >
00:00:54 v #950 > > ── [ 6.06s - return value ] ────────────────────────────────────────────────────
00:00:54 v #951 > > │
00:00:54 v #952 > > │ .py output (Cuda):
00:00:54 v #953 > > │ __assert_eq / actual: US0_1(v0="parsing.none_of / unexpected
00:00:54 v #954 > > char: 'a' / chars: ['a' 'b' 'c'] / s: (, 1, 1)") / expected:
00:00:54 v #955 > > US0_1(v0="parsing.none_of / unexpected char: 'a' / chars: ['a' 'b' 'c'] / s: (,
00:00:54 v #956 > > 1, 1)")
00:00:54 v #957 > > │ __assert_eq / actual: ('d', 'ef', d, 1, 2) / expected: ('d',
00:00:54 v #958 > > 'ef', d, 1, 2)
00:00:54 v #959 > > │
00:00:54 v #960 > > │
00:00:54 v #961 > > │ .ts output:
00:00:54 v #962 > > │ __assert_eq / actual: US0_1 (parsing.none_of / unexpected
00:00:54 v #963 > > char: 'a' / chars: a,b,c / s: ,1,1) / expected: US0_1 (parsing.none_of
00:00:54 v #964 > > unexpected char: 'a' / chars: a,b,c / s: ,1,1)
00:00:54 v #965 > > │ __assert_eq / actual: d,ef,d,1,2 / expected: d,ef,d,1,2
00:00:54 v #966 > > │
00:00:54 v #967 > > │
00:00:54 v #968 > > │
00:00:54 v #969 > >
00:00:54 v #970 > > ── [ 6.06s - stdout ] ──────────────────────────────────────────────────────────
00:00:54 v #971 > > │ .fsx output:
00:00:54 v #972 > > │ __assert_eq / actual: US0_1
00:00:54 v #973 > > │   "parsing.none_of / unexpected char: 'a' / chars: [|'a';
00:00:54 v #974 > > 'b'; 'c'|] / s: struct (, 1, 1)" / expected: US0_1
00:00:54 v #975 > > │   "parsing.none_of / unexpected char: 'a' / chars: [|'a';
00:00:54 v #976 > > 'b'; 'c'|] / s: struct (, 1, 1)"
00:00:54 v #977 > > │ __assert_eq / actual: "struct ('d', "ef", d, 1, 2)"
00:00:54 v #978 > > expected: "struct ('d', "ef", d, 1, 2)"
00:00:54 v #979 > > │
00:00:54 v #980 > >
00:00:54 v #981 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:54 v #982 > > //// test
00:00:54 v #983 > >
00:00:54 v #984 > > "abc"
00:00:54 v #985 > > |> parse_ (none_of_ [['a'; 'b'; 'c']])
00:00:54 v #986 > > |> resultm.unwrap_err
00:00:54 v #987 > > |> sm'.obj_to_string
00:00:54 v #988 > > |> sm'.replace "\r\n" "\n"
00:00:54 v #989 > > |> _assert_eq ($'"(Error in Ln: 1 Col: 1\nabc\n^\nExpecting: any char not in
00:00:54 v #990 > > ‘abc’\n, Error in Ln: 1 Col: 1\nExpecting: any char not in ‘abc’\n)"')
00:00:54 v #991 > >
00:00:54 v #992 > > "def"
00:00:54 v #993 > > |> parse_ (none_of_ [['a'; 'b'; 'c']])
00:00:54 v #994 > > |> resultm.get
00:00:54 v #995 > > |> sm'.obj_to_string
00:00:54 v #996 > > |> _assert_eq' (('d', ($'FParsec.Position (null, 0, 1, 2)' : position_)) |>
00:00:54 v #997 > > sm'.obj_to_string)
00:00:54 v #998 > >
00:00:54 v #999 > > ── [ 213.72ms - stdout ] ───────────────────────────────────────────────────────
00:00:54 v #1000 > > │ __assert_eq / actual: "(Error in Ln: 1 Col: 1
00:00:54 v #1001 > > │ abc
00:00:54 v #1002 > > │ ^
00:00:54 v #1003 > > │ Expecting: any char not in ‘abc’
00:00:54 v #1004 > > │ , Error in Ln: 1 Col: 1
00:00:54 v #1005 > > │ Expecting: any char not in ‘abc’
00:00:54 v #1006 > > │ )" / expected: "(Error in Ln: 1 Col: 1
00:00:54 v #1007 > > │ abc
00:00:54 v #1008 > > │ ^
00:00:54 v #1009 > > │ Expecting: any char not in ‘abc’
00:00:54 v #1010 > > │ , Error in Ln: 1 Col: 1
00:00:54 v #1011 > > │ Expecting: any char not in ‘abc’
00:00:54 v #1012 > > │ )"
00:00:54 v #1013 > > │ __assert_eq' / actual: "(d, (Ln: 1, Col: 2))" / expected:
00:00:54 v #1014 > > "(d, (Ln: 1, Col: 2))"
00:00:54 v #1015 > > │
00:00:54 v #1016 > >
00:00:54 v #1017 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:54 v #1018 > > │ ### (<|>)
00:00:54 v #1019 > >
00:00:54 v #1020 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:54 v #1021 > > inl (<|>) forall t. (a : parser t) (b : parser t) : parser t = fun input, s =>
00:00:54 v #1022 > >     match a (input, s) with
00:00:54 v #1023 > >     | Ok _ as result => result
00:00:54 v #1024 > >     | Error _ => b (input, s)
00:00:55 v #1025 > >
00:00:55 v #1026 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:55 v #1027 > > //// test
00:00:55 v #1028 > > ///! fsharp
00:00:55 v #1029 > > ///! cuda
00:00:55 v #1030 > > ///! typescript
00:00:55 v #1031 > >
00:00:55 v #1032 > > "abc"
00:00:55 v #1033 > > |> parse (p_char 'a' <|> p_char 'b')
00:00:55 v #1034 > > |> resultm.get
00:00:55 v #1035 > > |> sm'.format_debug
00:00:55 v #1036 > > |> _assert_eq (
00:00:55 v #1037 > >     ('a', "bc", { line_text = "a" |> sm'.string_builder; position = { line =
00:00:55 v #1038 > > 1i32; col = 2i32 } })
00:00:55 v #1039 > >     |> sm'.format_debug
00:00:55 v #1040 > > )
00:00:55 v #1041 > >
00:00:55 v #1042 > > "cba"
00:00:55 v #1043 > > |> parse (p_char 'a' <|> p_char 'b')
00:00:55 v #1044 > > |> _assert_eq (Error "parsing.p_char / expected: 'b' / line: 1 / col:
00:00:55 v #1045 > > 1\ncba\n^\n")
00:01:01 v #1046 > >
00:01:01 v #1047 > > ── [ 6.22s - return value ] ────────────────────────────────────────────────────
00:01:01 v #1048 > > │
00:01:01 v #1049 > > │ .py output (Cuda):
00:01:01 v #1050 > > │ __assert_eq / actual: ('a', 'bc', a, 1, 2) / expected: ('a',
00:01:01 v #1051 > > 'bc', a, 1, 2)
00:01:01 v #1052 > > │ __assert_eq / actual: US0_1(v0="parsing.p_char / expected:
00:01:01 v #1053 > > 'b' / line: 1 / col: 1\ncba\n^\n") / expected: US0_1(v0="parsing.p_char
00:01:01 v #1054 > > expected: 'b' / line: 1 / col: 1\ncba\n^\n")
00:01:01 v #1055 > > │
00:01:01 v #1056 > > │
00:01:01 v #1057 > > │ .ts output:
00:01:01 v #1058 > > │ __assert_eq / actual: a,bc,a,1,2 / expected: a,bc,a,1,2
00:01:01 v #1059 > > │ __assert_eq / actual: US0_1 (parsing.p_char / expected: 'b'
00:01:01 v #1060 > > line: 1 / col: 1
00:01:01 v #1061 > > │ cba
00:01:01 v #1062 > > │ ^
00:01:01 v #1063 > > │ ) / expected: US0_1 (parsing.p_char / expected: 'b' / line: 1
00:01:01 v #1064 > > / col: 1
00:01:01 v #1065 > > │ cba
00:01:01 v #1066 > > │ ^
00:01:01 v #1067 > > │ )
00:01:01 v #1068 > > │
00:01:01 v #1069 > > │
00:01:01 v #1070 > > │
00:01:01 v #1071 > >
00:01:01 v #1072 > > ── [ 6.22s - stdout ] ──────────────────────────────────────────────────────────
00:01:01 v #1073 > > │ .fsx output:
00:01:01 v #1074 > > │ __assert_eq / actual: "struct ('a', "bc", a, 1, 2)"
00:01:01 v #1075 > > expected: "struct ('a', "bc", a, 1, 2)"
00:01:01 v #1076 > > │ __assert_eq / actual: US0_1 "parsing.p_char / expected: 'b'
00:01:01 v #1077 > > line: 1 / col: 1
00:01:01 v #1078 > > │ cba
00:01:01 v #1079 > > │ ^
00:01:01 v #1080 > > │ " / expected: US0_1 "parsing.p_char / expected: 'b' / line: 1
00:01:01 v #1081 > > / col: 1
00:01:01 v #1082 > > │ cba
00:01:01 v #1083 > > │ ^
00:01:01 v #1084 > > │ "
00:01:01 v #1085 > > │
00:01:01 v #1086 > >
00:01:01 v #1087 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:01 v #1088 > > │ ### (|>>)
00:01:01 v #1089 > >
00:01:01 v #1090 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:01 v #1091 > > inl (|>>) p f : parser _ =
00:01:01 v #1092 > >     p >> resultm.map fun result, rest =>
00:01:01 v #1093 > >         f result, rest
00:01:01 v #1094 > >
00:01:01 v #1095 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:01 v #1096 > > //// test
00:01:01 v #1097 > > ///! fsharp
00:01:01 v #1098 > > ///! cuda
00:01:01 v #1099 > > ///! typescript
00:01:01 v #1100 > >
00:01:01 v #1101 > > "abc"
00:01:01 v #1102 > > |> parse (p_char 'a' |>> sm'.char_to_upper)
00:01:01 v #1103 > > |> resultm.get
00:01:01 v #1104 > > |> sm'.format_debug
00:01:01 v #1105 > > |> _assert_eq (
00:01:01 v #1106 > >     ('A', "bc", { line_text = "a" |> sm'.string_builder; position = { line =
00:01:01 v #1107 > > 1i32; col = 2i32 } })
00:01:01 v #1108 > >     |> sm'.format_debug
00:01:01 v #1109 > > )
00:01:07 v #1110 > >
00:01:07 v #1111 > > ── [ 6.02s - return value ] ────────────────────────────────────────────────────
00:01:07 v #1112 > > │ .py output (Cuda):
00:01:07 v #1113 > > │ __assert_eq / actual: ('A', 'bc', a, 1, 2) / expected: ('A',
00:01:07 v #1114 > > 'bc', a, 1, 2)
00:01:07 v #1115 > > │
00:01:07 v #1116 > > │ .ts output:
00:01:07 v #1117 > > │ __assert_eq / actual: A,bc,a,1,2 / expected: A,bc,a,1,2
00:01:07 v #1118 > > │
00:01:07 v #1119 > > │
00:01:07 v #1120 > >
00:01:07 v #1121 > > ── [ 6.02s - stdout ] ──────────────────────────────────────────────────────────
00:01:07 v #1122 > > │ .fsx output:
00:01:07 v #1123 > > │ __assert_eq / actual: "struct ('A', "bc", a, 1, 2)"
00:01:07 v #1124 > > expected: "struct ('A', "bc", a, 1, 2)"
00:01:07 v #1125 > > │
00:01:07 v #1126 > >
00:01:07 v #1127 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:07 v #1128 > > │ ### many
00:01:07 v #1129 > >
00:01:07 v #1130 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:07 v #1131 > > inl many p : parser (list _) = fun input =>
00:01:07 v #1132 > >     let rec loop acc input =
00:01:07 v #1133 > >         match p input with
00:01:07 v #1134 > >         | Ok (result, rest) => loop (result :: acc) rest
00:01:07 v #1135 > >         | Error _ => Ok (acc |> listm.rev, input)
00:01:07 v #1136 > >     loop [[]] input
00:01:07 v #1137 > >
00:01:07 v #1138 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:07 v #1139 > > //// test
00:01:07 v #1140 > > ///! fsharp
00:01:07 v #1141 > > ///! cuda
00:01:07 v #1142 > > ///! typescript
00:01:07 v #1143 > >
00:01:07 v #1144 > > "aaabbc"
00:01:07 v #1145 > > |> parse (many (p_char 'a' <|> p_char 'b'))
00:01:07 v #1146 > > |> resultm.get
00:01:07 v #1147 > > |> sm'.format_debug
00:01:07 v #1148 > > |> _assert_eq (
00:01:07 v #1149 > >     (
00:01:07 v #1150 > >         [['a'; 'a'; 'a'; 'b'; 'b']],
00:01:07 v #1151 > >         "c",
00:01:07 v #1152 > >         { line_text = "aaabb" |> sm'.string_builder; position = { line = 1i32;
00:01:07 v #1153 > > col = 6i32 } }
00:01:07 v #1154 > >     )
00:01:07 v #1155 > >     |> sm'.format_debug
00:01:07 v #1156 > > )
00:01:13 v #1157 > >
00:01:13 v #1158 > > ── [ 5.99s - return value ] ────────────────────────────────────────────────────
00:01:13 v #1159 > > │ .py output (Cuda):
00:01:13 v #1160 > > │ __assert_eq / actual: (UH0_1(v0='a', v1=UH0_1(v0='a',
00:01:13 v #1161 > > v1=UH0_1(v0='a', v1=UH0_1(v0='b', v1=UH0_1(v0='b', v1=UH0_0()))))), 'c', aaabb,
00:01:13 v #1162 > > 1, 6) / expected: (UH0_1(v0='a', v1=UH0_1(v0='a', v1=UH0_1(v0='a',
00:01:13 v #1163 > > v1=UH0_1(v0='b', v1=UH0_1(v0='b', v1=UH0_0()))))), 'c', aaabb, 1, 6)
00:01:13 v #1164 > > │
00:01:13 v #1165 > > │ .ts output:
00:01:13 v #1166 > > │ __assert_eq / actual: UH0_1 (a, UH0_1 (a, UH0_1 (a, UH0_1 (b,
00:01:13 v #1167 > > UH0_1 (b, UH0_0))))),c,aaabb,1,6 / expected: UH0_1 (a, UH0_1 (a, UH0_1 (a, UH0_1
00:01:13 v #1168 > > (b, UH0_1 (b, UH0_0))))),c,aaabb,1,6
00:01:13 v #1169 > > │
00:01:13 v #1170 > > │
00:01:13 v #1171 > >
00:01:13 v #1172 > > ── [ 5.99s - stdout ] ──────────────────────────────────────────────────────────
00:01:13 v #1173 > > │ .fsx output:
00:01:13 v #1174 > > │ __assert_eq / actual: "struct (UH0_1 ('a', UH0_1 ('a', UH0_1
00:01:13 v #1175 > > ('a', UH0_1 ('b', UH0_1 ('b', UH0_0))))),
00:01:13 v #1176 > > │         "c", aaabb, 1, 6)" / expected: "struct (UH0_1 ('a',
00:01:13 v #1177 > > UH0_1 ('a', UH0_1 ('a', UH0_1 ('b', UH0_1 ('b', UH0_0))))),
00:01:13 v #1178 > > │         "c", aaabb, 1, 6)"
00:01:13 v #1179 > > │
00:01:13 v #1180 > >
00:01:13 v #1181 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:13 v #1182 > > │ ### many1_chars
00:01:13 v #1183 > >
00:01:13 v #1184 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:13 v #1185 > > inl many1_chars p : parser string =
00:01:13 v #1186 > >     p >> resultm.map fun first_result, rest =>
00:01:13 v #1187 > >         let rec loop acc input =
00:01:13 v #1188 > >             match p input with
00:01:13 v #1189 > >             | Ok (result, rest) => loop (acc +. sm'.obj_to_string result) rest
00:01:13 v #1190 > >             | Error _ => acc, input
00:01:13 v #1191 > >         loop (first_result |> sm'.obj_to_string) rest
00:01:13 v #1192 > >
00:01:13 v #1193 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:13 v #1194 > > //// test
00:01:13 v #1195 > > ///! fsharp
00:01:13 v #1196 > > ///! cuda
00:01:13 v #1197 > > ///! typescript
00:01:13 v #1198 > >
00:01:13 v #1199 > > "aaabbc"
00:01:13 v #1200 > > |> parse (many1_chars (p_char 'a' <|> p_char 'b'))
00:01:13 v #1201 > > |> resultm.get
00:01:13 v #1202 > > |> sm'.format_debug
00:01:13 v #1203 > > |> _assert_eq (
00:01:13 v #1204 > >     ("aaabb", "c", { line_text = "aaabb" |> sm'.string_builder; position = {
00:01:13 v #1205 > > line = 1i32; col = 6i32 } })
00:01:13 v #1206 > >     |> sm'.format_debug
00:01:13 v #1207 > > )
00:01:20 v #1208 > >
00:01:20 v #1209 > > ── [ 6.14s - return value ] ────────────────────────────────────────────────────
00:01:20 v #1210 > > │ .py output (Cuda):
00:01:20 v #1211 > > │ __assert_eq / actual: ('aaabb', 'c', aaabb, 1, 6) / expected:
00:01:20 v #1212 > > ('aaabb', 'c', aaabb, 1, 6)
00:01:20 v #1213 > > │
00:01:20 v #1214 > > │ .ts output:
00:01:20 v #1215 > > │ __assert_eq / actual: aaabb,c,aaabb,1,6 / expected:
00:01:20 v #1216 > > aaabb,c,aaabb,1,6
00:01:20 v #1217 > > │
00:01:20 v #1218 > > │
00:01:20 v #1219 > >
00:01:20 v #1220 > > ── [ 6.14s - stdout ] ──────────────────────────────────────────────────────────
00:01:20 v #1221 > > │ .fsx output:
00:01:20 v #1222 > > │ __assert_eq / actual: "struct ("aaabb", "c", aaabb, 1, 6)"
00:01:20 v #1223 > > expected: "struct ("aaabb", "c", aaabb, 1, 6)"
00:01:20 v #1224 > > │
00:01:20 v #1225 > >
00:01:20 v #1226 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:20 v #1227 > > │ ### many_chars
00:01:20 v #1228 > >
00:01:20 v #1229 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:20 v #1230 > > inl many_chars p : parser string = fun input =>
00:01:20 v #1231 > >     match many1_chars p input with
00:01:20 v #1232 > >     | Ok (result, rest) => Ok (result, rest)
00:01:20 v #1233 > >     | Error e => Ok ("", input)
00:01:20 v #1234 > >
00:01:20 v #1235 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:20 v #1236 > > │ ### many_chars_till
00:01:20 v #1237 > >
00:01:20 v #1238 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:20 v #1239 > > inl many_chars_till p end_p : parser string = fun input =>
00:01:20 v #1240 > >     match end_p input with
00:01:20 v #1241 > >     | Ok _ => Ok ("", input)
00:01:20 v #1242 > >     | Error _ => many_chars p input
00:01:20 v #1243 > >
00:01:20 v #1244 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:20 v #1245 > > │ ### many1
00:01:20 v #1246 > >
00:01:20 v #1247 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:20 v #1248 > > inl many1 p : parser (list _) =
00:01:20 v #1249 > >     p >> resultm.map fun first_result, rest =>
00:01:20 v #1250 > >         let rec loop acc input =
00:01:20 v #1251 > >             match p input with
00:01:20 v #1252 > >             | Ok (result, rest) => loop (result :: acc) rest
00:01:20 v #1253 > >             | Error _ => acc |> listm.rev, input
00:01:20 v #1254 > >         loop [[ first_result ]] rest
00:01:20 v #1255 > >
00:01:20 v #1256 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:20 v #1257 > > //// test
00:01:20 v #1258 > > ///! fsharp
00:01:20 v #1259 > > ///! cuda
00:01:20 v #1260 > > ///! typescript
00:01:20 v #1261 > >
00:01:20 v #1262 > > "aaabbc"
00:01:20 v #1263 > > |> parse (many1 (p_char 'a' <|> p_char 'b'))
00:01:20 v #1264 > > |> resultm.get
00:01:20 v #1265 > > |> sm'.format_debug
00:01:20 v #1266 > > |> _assert_eq (
00:01:20 v #1267 > >     ([['a'; 'a'; 'a'; 'b'; 'b']], "c", { line_text = "aaabb" |>
00:01:20 v #1268 > > sm'.string_builder; position = { line = 1i32; col = 6i32 } })
00:01:20 v #1269 > >     |> sm'.format_debug
00:01:20 v #1270 > > )
00:01:20 v #1271 > >
00:01:20 v #1272 > > "bcc"
00:01:20 v #1273 > > |> parse (many1 (p_char 'a' <|> p_char 'b'))
00:01:20 v #1274 > > |> resultm.get
00:01:20 v #1275 > > |> sm'.format_debug
00:01:20 v #1276 > > |> _assert_eq (
00:01:20 v #1277 > >     ([['b']], "cc", { line_text = "b" |> sm'.string_builder; position = { line =
00:01:20 v #1278 > > 1i32; col = 2i32 } })
00:01:20 v #1279 > >     |> sm'.format_debug
00:01:20 v #1280 > > )
00:01:20 v #1281 > >
00:01:20 v #1282 > > "cba"
00:01:20 v #1283 > > |> parse (many1 (p_char 'a' <|> p_char 'b'))
00:01:20 v #1284 > > |> _assert_eq (Error "parsing.p_char / expected: 'b' / line: 1 / col:
00:01:20 v #1285 > > 1\ncba\n^\n")
00:01:27 v #1286 > >
00:01:27 v #1287 > > ── [ 6.60s - return value ] ────────────────────────────────────────────────────
00:01:27 v #1288 > > │
00:01:27 v #1289 > > │ .py output (Cuda):
00:01:27 v #1290 > > │ __assert_eq / actual: (UH0_1(v0='a', v1=UH0_1(v0='a',
00:01:27 v #1291 > > v1=UH0_1(v0='a', v1=UH0_1(v0='b', v1=UH0_1(v0='b', v1=UH0_0()))))), 'c', aaabb,
00:01:27 v #1292 > > 1, 6) / expected: (UH0_1(v0='a', v1=UH0_1(v0='a', v1=UH0_1(v0='a',
00:01:27 v #1293 > > v1=UH0_1(v0='b', v1=UH0_1(v0='b', v1=UH0_0()))))), 'c', aaabb, 1, 6)
00:01:27 v #1294 > > │ __assert_eq / actual: (UH0_1(v0='b', v1=UH0_0()), 'cc', b, 1,
00:01:27 v #1295 > > 2) / expected: (UH0_1(v0='b', v1=UH0_0()), 'cc', b, 1, 2)
00:01:27 v #1296 > > │ __assert_eq / actual: US1_1(v0="parsing.p_char / expected:
00:01:27 v #1297 > > 'b' / line: 1 / col: 1\ncba\n^\n") / expected: US1_1(v0="parsing.p_char
00:01:27 v #1298 > > expected: 'b' / line: 1 / col: 1\ncba\n^\n")
00:01:27 v #1299 > > │
00:01:27 v #1300 > > │
00:01:27 v #1301 > > │ .ts output:
00:01:27 v #1302 > > │ __assert_eq / actual: UH0_1 (a, UH0_1 (a, UH0_1 (a, UH0_1 (b,
00:01:27 v #1303 > > UH0_1 (b, UH0_0))))),c,aaabb,1,6 / expected: UH0_1 (a, UH0_1 (a, UH0_1 (a, UH0_1
00:01:27 v #1304 > > (b, UH0_1 (b, UH0_0))))),c,aaabb,1,6
00:01:27 v #1305 > > │ __assert_eq / actual: UH0_1 (b, UH0_0),cc,b,1,2 / expected:
00:01:27 v #1306 > > UH0_1 (b, UH0_0),cc,b,1,2
00:01:27 v #1307 > > │ __assert_eq / actual: US1_1 (parsing.p_char / expected: 'b'
00:01:27 v #1308 > > line: 1 / col: 1
00:01:27 v #1309 > > │ cba
00:01:27 v #1310 > > │ ^
00:01:27 v #1311 > > │ ) / expected: US1_1 (parsing.p_char / expected: 'b' / line: 1
00:01:27 v #1312 > > / col: 1
00:01:27 v #1313 > > │ cba
00:01:27 v #1314 > > │ ^
00:01:27 v #1315 > > │ )
00:01:27 v #1316 > > │
00:01:27 v #1317 > > │
00:01:27 v #1318 > > │
00:01:27 v #1319 > >
00:01:27 v #1320 > > ── [ 6.60s - stdout ] ──────────────────────────────────────────────────────────
00:01:27 v #1321 > > │ .fsx output:
00:01:27 v #1322 > > │ __assert_eq / actual: "struct (UH0_1 ('a', UH0_1 ('a', UH0_1
00:01:27 v #1323 > > ('a', UH0_1 ('b', UH0_1 ('b', UH0_0))))),
00:01:27 v #1324 > > │         "c", aaabb, 1, 6)" / expected: "struct (UH0_1 ('a',
00:01:27 v #1325 > > UH0_1 ('a', UH0_1 ('a', UH0_1 ('b', UH0_1 ('b', UH0_0))))),
00:01:27 v #1326 > > │         "c", aaabb, 1, 6)"
00:01:27 v #1327 > > │ __assert_eq / actual: "struct (UH0_1 ('b', UH0_0), "cc", b,
00:01:27 v #1328 > > 1, 2)" / expected: "struct (UH0_1 ('b', UH0_0), "cc", b, 1, 2)"
00:01:27 v #1329 > > │ __assert_eq / actual: US1_1 "parsing.p_char / expected: 'b'
00:01:27 v #1330 > > line: 1 / col: 1
00:01:27 v #1331 > > │ cba
00:01:27 v #1332 > > │ ^
00:01:27 v #1333 > > │ " / expected: US1_1 "parsing.p_char / expected: 'b' / line: 1
00:01:27 v #1334 > > / col: 1
00:01:27 v #1335 > > │ cba
00:01:27 v #1336 > > │ ^
00:01:27 v #1337 > > │ "
00:01:27 v #1338 > > │
00:01:27 v #1339 > >
00:01:27 v #1340 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:27 v #1341 > > │ ### many1_strings
00:01:27 v #1342 > >
00:01:27 v #1343 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:27 v #1344 > > inl many1_strings p : parser string =
00:01:27 v #1345 > >     many1 p >> resultm.map fun results, rest =>
00:01:27 v #1346 > >         results
00:01:27 v #1347 > >         |> listm.map sm'.obj_to_string
00:01:27 v #1348 > >         |> listm'.box
00:01:27 v #1349 > >         |> seq.of_list'
00:01:27 v #1350 > >         |> sm'.concat "",
00:01:27 v #1351 > >         rest
00:01:27 v #1352 > >
00:01:27 v #1353 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:27 v #1354 > > //// test
00:01:27 v #1355 > > ///! fsharp
00:01:27 v #1356 > > ///! cuda
00:01:27 v #1357 > > ///! typescript
00:01:27 v #1358 > >
00:01:27 v #1359 > > "aaabbc"
00:01:27 v #1360 > > |> parse (many1_strings (p_char 'a' <|> p_char 'b'))
00:01:27 v #1361 > > |> resultm.get
00:01:27 v #1362 > > |> sm'.format_debug
00:01:27 v #1363 > > |> _assert_eq (
00:01:27 v #1364 > >     ("aaabb", "c", { line_text = "aaabb" |> sm'.string_builder; position = {
00:01:27 v #1365 > > line = 1i32; col = 6i32 } })
00:01:27 v #1366 > >     |> sm'.format_debug
00:01:27 v #1367 > > )
00:01:33 v #1368 > >
00:01:33 v #1369 > > ── [ 6.29s - return value ] ────────────────────────────────────────────────────
00:01:33 v #1370 > > │ .py output (Cuda):
00:01:33 v #1371 > > │ __assert_eq / actual: ('aaabb', 'c', aaabb, 1, 6) / expected:
00:01:33 v #1372 > > ('aaabb', 'c', aaabb, 1, 6)
00:01:33 v #1373 > > │
00:01:33 v #1374 > > │ .ts output:
00:01:33 v #1375 > > │ __assert_eq / actual: aaabb,c,aaabb,1,6 / expected:
00:01:33 v #1376 > > aaabb,c,aaabb,1,6
00:01:33 v #1377 > > │
00:01:33 v #1378 > > │
00:01:33 v #1379 > >
00:01:33 v #1380 > > ── [ 6.29s - stdout ] ──────────────────────────────────────────────────────────
00:01:33 v #1381 > > │ .fsx output:
00:01:33 v #1382 > > │ __assert_eq / actual: "struct ("aaabb", "c", aaabb, 1, 6)"
00:01:33 v #1383 > > expected: "struct ("aaabb", "c", aaabb, 1, 6)"
00:01:33 v #1384 > > │
00:01:33 v #1385 > >
00:01:33 v #1386 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:33 v #1387 > > │ ### many_strings
00:01:33 v #1388 > >
00:01:33 v #1389 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:33 v #1390 > > inl many_strings p : parser string = fun input =>
00:01:33 v #1391 > >     match many p input with
00:01:33 v #1392 > >     | Ok (results, rest) =>
00:01:33 v #1393 > >         Ok (results |> listm.map sm'.obj_to_string |> listm'.box |> seq.of_list'
00:01:33 v #1394 > > |> sm'.concat "", rest)
00:01:33 v #1395 > >     | Error e => Ok ("", input)
00:01:33 v #1396 > >
00:01:33 v #1397 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:33 v #1398 > > │ ### choice
00:01:33 v #1399 > >
00:01:33 v #1400 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:33 v #1401 > > inl choice parsers : parser _ = fun input =>
00:01:33 v #1402 > >     let rec loop = function
00:01:33 v #1403 > >         | [[]] => Error "parsing.choice / no parsers succeeded"
00:01:33 v #1404 > >         | p :: ps =>
00:01:33 v #1405 > >             match p input with
00:01:33 v #1406 > >             | Ok _ as result => result
00:01:33 v #1407 > >             | Error _ => loop ps
00:01:33 v #1408 > >     loop parsers
00:01:34 v #1409 > >
00:01:34 v #1410 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:34 v #1411 > > //// test
00:01:34 v #1412 > > ///! fsharp
00:01:34 v #1413 > > ///! cuda
00:01:34 v #1414 > > ///! typescript
00:01:34 v #1415 > >
00:01:34 v #1416 > > "bca"
00:01:34 v #1417 > > |> parse (choice [[ p_char 'a'; p_char 'b'; p_char 'c' ]])
00:01:34 v #1418 > > |> resultm.get
00:01:34 v #1419 > > |> sm'.format_debug
00:01:34 v #1420 > > |> _assert_eq (
00:01:34 v #1421 > >     ('b', "ca", { line_text = "b" |> sm'.string_builder; position = { line =
00:01:34 v #1422 > > 1i32; col = 2i32 } })
00:01:34 v #1423 > >     |> sm'.format_debug
00:01:34 v #1424 > > )
00:01:34 v #1425 > >
00:01:34 v #1426 > > "cba"
00:01:34 v #1427 > > |> parse (choice [[ p_char 'a'; p_char 'b'; p_char 'c' ]])
00:01:34 v #1428 > > |> resultm.get
00:01:34 v #1429 > > |> sm'.format_debug
00:01:34 v #1430 > > |> _assert_eq (
00:01:34 v #1431 > >     ('c', "ba", { line_text = "c" |> sm'.string_builder; position = { line =
00:01:34 v #1432 > > 1i32; col = 2i32 } })
00:01:34 v #1433 > >     |> sm'.format_debug
00:01:34 v #1434 > > )
00:01:40 v #1435 > >
00:01:40 v #1436 > > ── [ 6.17s - return value ] ────────────────────────────────────────────────────
00:01:40 v #1437 > > │
00:01:40 v #1438 > > │ .py output (Cuda):
00:01:40 v #1439 > > │ __assert_eq / actual: ('b', 'ca', b, 1, 2) / expected: ('b',
00:01:40 v #1440 > > 'ca', b, 1, 2)
00:01:40 v #1441 > > │ __assert_eq / actual: ('c', 'ba', c, 1, 2) / expected: ('c',
00:01:40 v #1442 > > 'ba', c, 1, 2)
00:01:40 v #1443 > > │
00:01:40 v #1444 > > │
00:01:40 v #1445 > > │ .ts output:
00:01:40 v #1446 > > │ __assert_eq / actual: b,ca,b,1,2 / expected: b,ca,b,1,2
00:01:40 v #1447 > > │ __assert_eq / actual: c,ba,c,1,2 / expected: c,ba,c,1,2
00:01:40 v #1448 > > │
00:01:40 v #1449 > > │
00:01:40 v #1450 > > │
00:01:40 v #1451 > >
00:01:40 v #1452 > > ── [ 6.17s - stdout ] ──────────────────────────────────────────────────────────
00:01:40 v #1453 > > │ .fsx output:
00:01:40 v #1454 > > │ __assert_eq / actual: "struct ('b', "ca", b, 1, 2)"
00:01:40 v #1455 > > expected: "struct ('b', "ca", b, 1, 2)"
00:01:40 v #1456 > > │ __assert_eq / actual: "struct ('c', "ba", c, 1, 2)"
00:01:40 v #1457 > > expected: "struct ('c', "ba", c, 1, 2)"
00:01:40 v #1458 > > │
00:01:40 v #1459 > >
00:01:40 v #1460 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:40 v #1461 > > │ ### between
00:01:40 v #1462 > >
00:01:40 v #1463 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:40 v #1464 > > inl between p_open p_close p_content : parser _ = fun input =>
00:01:40 v #1465 > >     match p_open input with
00:01:40 v #1466 > >     | Ok (_, rest1) =>
00:01:40 v #1467 > >         match p_content rest1 with
00:01:40 v #1468 > >         | Ok (result, rest2) =>
00:01:40 v #1469 > >             match p_close rest2 with
00:01:40 v #1470 > >             | Ok (_, rest3) => Ok (result, rest3)
00:01:40 v #1471 > >             | Error e =>
00:01:40 v #1472 > >                 backend_switch {
00:01:40 v #1473 > >                     Fsharp = fun () => $'$"parsing.between / expected closing
00:01:40 v #1474 > > delimiter / e: %A{!e} / input: %A{!input} / rest1: %A{!rest1} / rest2:
00:01:40 v #1475 > > %A{!rest2}"' : string
00:01:40 v #1476 > >                     Python = fun () => $'f"parsing.between / expected closing
00:01:40 v #1477 > > delimiter / e: {!e} / input: {!input} / rest1: {!rest1} / rest2: {!rest2}"' :
00:01:40 v #1478 > > string
00:01:40 v #1479 > >                 }
00:01:40 v #1480 > >                 |> Error
00:01:40 v #1481 > >         | Error _ => Error "parsing.between / expected content"
00:01:40 v #1482 > >     | Error e => Error e
00:01:40 v #1483 > >
00:01:40 v #1484 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:40 v #1485 > > //// test
00:01:40 v #1486 > >
00:01:40 v #1487 > > "[[aaabb"
00:01:40 v #1488 > > |> parse_ (between_ (p_char_ '[[') (p_char_ ']]') (many1_chars_ (p_char_ 'a'
00:01:40 v #1489 > > <|>$ p_char_ 'b')))
00:01:40 v #1490 > > |> resultm.unwrap_err
00:01:40 v #1491 > > |> sm'.format_debug
00:01:40 v #1492 > >
00:01:40 v #1493 > > ── [ 280.30ms - return value ] ─────────────────────────────────────────────────
00:01:40 v #1494 > > │ struct ("Error in Ln: 1 Col: 7
00:01:40 v #1495 > > │ [aaabb
00:01:40 v #1496 > > │       ^
00:01:40 v #1497 > > │ Note: The error occurred at the end of the input stream.
00:01:40 v #1498 > > │ Expecting: ']', 'a' or 'b'
00:01:40 v #1499 > > │ ",
00:01:40 v #1500 > > │         Error in Ln: 1 Col: 7
00:01:40 v #1501 > > │ Expecting: ']', 'a' or 'b'
00:01:40 v #1502 > > │ )
00:01:40 v #1503 > >
00:01:40 v #1504 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:40 v #1505 > > //// test
00:01:40 v #1506 > > ///! fsharp
00:01:40 v #1507 > > ///! cuda
00:01:40 v #1508 > > ///! typescript
00:01:40 v #1509 > >
00:01:40 v #1510 > > "[[aaabb]]"
00:01:40 v #1511 > > |> parse (between (p_char '[[') (p_char ']]') (many1_chars (p_char 'a' <|>
00:01:40 v #1512 > > p_char 'b')))
00:01:40 v #1513 > > |> resultm.get
00:01:40 v #1514 > > |> sm'.format_debug
00:01:40 v #1515 > > |> _assert_eq (
00:01:40 v #1516 > >     ("aaabb", "", { line_text = "[[aaabb]]" |> sm'.string_builder; position = {
00:01:40 v #1517 > > line = 1i32; col = 8i32 } })
00:01:40 v #1518 > >     |> sm'.format_debug
00:01:40 v #1519 > > )
00:01:40 v #1520 > >
00:01:40 v #1521 > > "[[aaabb"
00:01:40 v #1522 > > |> parse (between (p_char '[[') (p_char ']]') (many1_chars (p_char 'a' <|>
00:01:40 v #1523 > > p_char 'b')))
00:01:40 v #1524 > > |> resultm.unwrap_err
00:01:40 v #1525 > > |> sm'.format_debug
00:01:40 v #1526 > > |> _assert_eq (
00:01:40 v #1527 > >     backend_switch {
00:01:40 v #1528 > >         Fsharp = fun () =>
00:01:40 v #1529 > >             run_target function
00:01:40 v #1530 > >             | TypeScript _ => fun () => "parsing.between / expected closing
00:01:40 v #1531 > > delimiter / e: parsing.p_char / unexpected end of input / c: ']]' / s:
00:01:40 v #1532 > > [[aaabb,1,7 / input: [[aaabb,[[aaabb,1,1 / rest1: aaabb,[[aaabb,1,2 / rest2:
00:01:40 v #1533 > > ,[[aaabb,1,7" : string
00:01:40 v #1534 > >             | _ => fun () => join "\"parsing.between / expected closing
00:01:40 v #1535 > > delimiter / e: \"parsing.p_char / unexpected end of input / c: ']]' / s: struct
00:01:40 v #1536 > > ([[aaabb, 1, 7)\" / input: struct (\"[[aaabb\", [[aaabb, 1, 1) / rest1: struct
00:01:40 v #1537 > > (\"aaabb\", [[aaabb, 1, 2) / rest2: struct (\"\", [[aaabb, 1, 7)\"" : string
00:01:40 v #1538 > >         Python = fun () => "parsing.between / expected closing delimiter / e:
00:01:40 v #1539 > > parsing.p_char / unexpected end of input / c: ']]' / s: ([[aaabb, 1, 7) / input:
00:01:40 v #1540 > > ('[[aaabb', [[aaabb, 1, 1) / rest1: ('aaabb', [[aaabb, 1, 2) / rest2: ('',
00:01:40 v #1541 > > [[aaabb, 1, 7)" : string
00:01:40 v #1542 > >     }
00:01:40 v #1543 > > )
00:01:47 v #1544 > >
00:01:47 v #1545 > > ── [ 6.76s - return value ] ────────────────────────────────────────────────────
00:01:47 v #1546 > > │
00:01:47 v #1547 > > │ .py output (Cuda):
00:01:47 v #1548 > > │ __assert_eq / actual: ('aaabb', '', [aaabb], 1, 8)
00:01:47 v #1549 > > expected: ('aaabb', '', [aaabb], 1, 8)
00:01:47 v #1550 > > │ __assert_eq / actual: parsing.between / expected closing
00:01:47 v #1551 > > delimiter / e: parsing.p_char / unexpected end of input / c: ']' / s: ([aaabb,
00:01:47 v #1552 > > 1, 7) / input: ('[aaabb', [aaabb, 1, 1) / rest1: ('aaabb', [aaabb, 1, 2)
00:01:47 v #1553 > > rest2: ('', [aaabb, 1, 7) / expected: parsing.between / expected closing
00:01:47 v #1554 > > delimiter / e: parsing.p_char / unexpected end of input / c: ']' / s: ([aaabb,
00:01:47 v #1555 > > 1, 7) / input: ('[aaabb', [aaabb, 1, 1) / rest1: ('aaabb', [aaabb, 1, 2)
00:01:47 v #1556 > > rest2: ('', [aaabb, 1, 7)
00:01:47 v #1557 > > │
00:01:47 v #1558 > > │
00:01:47 v #1559 > > │ .ts output:
00:01:47 v #1560 > > │ __assert_eq / actual: aaabb,,[aaabb],1,8 / expected:
00:01:47 v #1561 > > aaabb,,[aaabb],1,8
00:01:47 v #1562 > > │ __assert_eq / actual: parsing.between / expected closing
00:01:47 v #1563 > > delimiter / e: parsing.p_char / unexpected end of input / c: ']' / s: [aaabb,1,7
00:01:47 v #1564 > > / input: [aaabb,[aaabb,1,1 / rest1: aaabb,[aaabb,1,2 / rest2: ,[aaabb,1,7
00:01:47 v #1565 > > expected: parsing.between / expected closing delimiter / e: parsing.p_char
00:01:47 v #1566 > > unexpected end of input / c: ']' / s: [aaabb,1,7 / input: [aaabb,[aaabb,1,1
00:01:47 v #1567 > > rest1: aaabb,[aaabb,1,2 / rest2: ,[aaabb,1,7
00:01:47 v #1568 > > │
00:01:47 v #1569 > > │
00:01:47 v #1570 > > │
00:01:47 v #1571 > >
00:01:47 v #1572 > > ── [ 6.76s - stdout ] ──────────────────────────────────────────────────────────
00:01:47 v #1573 > > │ .fsx output:
00:01:47 v #1574 > > │ __assert_eq / actual: "struct ("aaabb", "", [aaabb], 1, 8)"
00:01:47 v #1575 > > expected: "struct ("aaabb", "", [aaabb], 1, 8)"
00:01:47 v #1576 > > │ __assert_eq / actual: ""parsing.between / expected closing
00:01:47 v #1577 > > delimiter / e: "parsing.p_char / unexpected end of input / c: ']' / s: struct
00:01:47 v #1578 > > ([aaabb, 1, 7)" / input: struct ("[aaabb", [aaabb, 1, 1) / rest1: struct
00:01:47 v #1579 > > ("aaabb", [aaabb, 1, 2) / rest2: struct ("", [aaabb, 1, 7)"" / expected:
00:01:47 v #1580 > > ""parsing.between / expected closing delimiter / e: "parsing.p_char / unexpected
00:01:47 v #1581 > > end of input / c: ']' / s: struct ([aaabb, 1, 7)" / input: struct ("[aaabb",
00:01:47 v #1582 > > [aaabb, 1, 1) / rest1: struct ("aaabb", [aaabb, 1, 2) / rest2: struct ("",
00:01:47 v #1583 > > [aaabb, 1, 7)""
00:01:47 v #1584 > > │
00:01:47 v #1585 > >
00:01:47 v #1586 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:47 v #1587 > > │ ### sep_by
00:01:47 v #1588 > >
00:01:47 v #1589 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:47 v #1590 > > inl sep_by p sep : parser (list _) = fun input, s =>
00:01:47 v #1591 > >     let rec loop acc input s =
00:01:47 v #1592 > >         match p (input, s) with
00:01:47 v #1593 > >         | Ok (result, rest, s) =>
00:01:47 v #1594 > >             match sep (rest, s) with
00:01:47 v #1595 > >             | Ok (_, rest, s) => loop (result :: acc) rest s
00:01:47 v #1596 > >             | Error _ => Ok ((result :: acc) |> listm.rev, rest, s)
00:01:47 v #1597 > >         | Error _ => Ok (acc |> listm.rev, input, s)
00:01:47 v #1598 > >     loop [[]] input s
00:01:47 v #1599 > >
00:01:47 v #1600 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:47 v #1601 > > │ ### span
00:01:47 v #1602 > >
00:01:47 v #1603 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:47 v #1604 > > inl span pred str =
00:01:47 v #1605 > >     let rec loop i =
00:01:47 v #1606 > >         if i >= sm'.length str
00:01:47 v #1607 > >         then i
00:01:47 v #1608 > >         elif pred (str |> sm'.index i)
00:01:47 v #1609 > >         then loop (i + 1)
00:01:47 v #1610 > >         else i
00:01:47 v #1611 > >     loop 0
00:01:47 v #1612 > >
00:01:47 v #1613 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:47 v #1614 > > │ ### spaces1
00:01:47 v #1615 > >
00:01:47 v #1616 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:47 v #1617 > > inl spaces1 () : parser () = fun input, s =>
00:01:47 v #1618 > >     match input |> span ((=) ' ') with
00:01:47 v #1619 > >     | 0i32 => Error "parsing.spaces1 / expected at least one space"
00:01:47 v #1620 > >     | n => Ok ((), input |> sm'.range (am'.Start n) (am'.End eval), s)
00:01:48 v #1621 > >
00:01:48 v #1622 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:48 v #1623 > > │ ### spaces
00:01:48 v #1624 > >
00:01:48 v #1625 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:48 v #1626 > > inl spaces () : parser () = fun input, s =>
00:01:48 v #1627 > >     input
00:01:48 v #1628 > >     |> span ((=) ' ')
00:01:48 v #1629 > >     |> fun (n : i32) =>
00:01:48 v #1630 > >         Ok ((), input |> sm'.range (am'.Start n) (am'.End eval), s)
00:01:48 v #1631 > >
00:01:48 v #1632 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:48 v #1633 > > │ ### p_digit
00:01:48 v #1634 > >
00:01:48 v #1635 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:48 v #1636 > > inl p_digit () : parser char = fun input, s =>
00:01:48 v #1637 > >     match input |> sm'.index 0i32 with
00:01:48 v #1638 > >     | ('0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9') as c =>
00:01:48 v #1639 > >         Ok (c, input |> sm'.range (am'.Start 1i32) (am'.End eval), s)
00:01:48 v #1640 > >     | c =>
00:01:48 v #1641 > >         backend_switch {
00:01:48 v #1642 > >             Fsharp = fun () => $'$"parsing.p_digit / unexpected char: {!c}"' :
00:01:48 v #1643 > > string
00:01:48 v #1644 > >             Python = fun () => $'f"parsing.p_digit / unexpected char: {!c}"' :
00:01:48 v #1645 > > string
00:01:48 v #1646 > >         }
00:01:48 v #1647 > >         |> Error
00:01:48 v #1648 > >
00:01:48 v #1649 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:48 v #1650 > > //// test
00:01:48 v #1651 > > ///! fsharp
00:01:48 v #1652 > > ///! cuda
00:01:48 v #1653 > > ///! typescript
00:01:48 v #1654 > >
00:01:48 v #1655 > > "1 2 3"
00:01:48 v #1656 > > |> parse (sep_by (p_digit ()) (spaces1 ()))
00:01:48 v #1657 > > |> resultm.get
00:01:48 v #1658 > > |> sm'.format_debug
00:01:48 v #1659 > > |> _assert_eq (
00:01:48 v #1660 > >     ([['1'; '2'; '3']], "", { line_text = "" |> sm'.string_builder; position = {
00:01:48 v #1661 > > col = 1i32; line = 1i32 } })
00:01:48 v #1662 > >     |> sm'.format_debug
00:01:48 v #1663 > > )
00:01:54 v #1664 > >
00:01:54 v #1665 > > ── [ 5.84s - return value ] ────────────────────────────────────────────────────
00:01:54 v #1666 > > │ .py output (Cuda):
00:01:54 v #1667 > > │ __assert_eq / actual: (UH0_1(v0='1', v1=UH0_1(v0='2',
00:01:54 v #1668 > > v1=UH0_1(v0='3', v1=UH0_0()))), '', , 1, 1) / expected: (UH0_1(v0='1',
00:01:54 v #1669 > > v1=UH0_1(v0='2', v1=UH0_1(v0='3', v1=UH0_0()))), '', , 1, 1)
00:01:54 v #1670 > > │
00:01:54 v #1671 > > │ .ts output:
00:01:54 v #1672 > > │ __assert_eq / actual: UH0_1 (1, UH0_1 (2, UH0_1 (3,
00:01:54 v #1673 > > UH0_0))),,,1,1 / expected: UH0_1 (1, UH0_1 (2, UH0_1 (3, UH0_0))),,,1,1
00:01:54 v #1674 > > │
00:01:54 v #1675 > > │
00:01:54 v #1676 > >
00:01:54 v #1677 > > ── [ 5.84s - stdout ] ──────────────────────────────────────────────────────────
00:01:54 v #1678 > > │ .fsx output:
00:01:54 v #1679 > > │ __assert_eq / actual: "struct (UH0_1 ('1', UH0_1 ('2', UH0_1
00:01:54 v #1680 > > ('3', UH0_0))), "", , 1, 1)" / expected: "struct (UH0_1 ('1', UH0_1 ('2', UH0_1
00:01:54 v #1681 > > ('3', UH0_0))), "", , 1, 1)"
00:01:54 v #1682 > > │
00:01:54 v #1683 > >
00:01:54 v #1684 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:54 v #1685 > > //// test
00:01:54 v #1686 > > ///! fsharp
00:01:54 v #1687 > > ///! cuda
00:01:54 v #1688 > > ///! typescript
00:01:54 v #1689 > >
00:01:54 v #1690 > > "1 a 2"
00:01:54 v #1691 > > |> parse (sep_by (p_digit ()) (spaces1 ()))
00:01:54 v #1692 > > |> resultm.get
00:01:54 v #1693 > > |> sm'.format_debug
00:01:54 v #1694 > > |> _assert_eq (
00:01:54 v #1695 > >     ([['1']], "a 2", { line_text = "" |> sm'.string_builder; position = { col =
00:01:54 v #1696 > > 1i32; line = 1i32 } })
00:01:54 v #1697 > >     |> sm'.format_debug
00:01:54 v #1698 > > )
00:02:00 v #1699 > >
00:02:00 v #1700 > > ── [ 5.89s - return value ] ────────────────────────────────────────────────────
00:02:00 v #1701 > > │ .py output (Cuda):
00:02:00 v #1702 > > │ __assert_eq / actual: (UH0_1(v0='1', v1=UH0_0()), 'a 2', , 1,
00:02:00 v #1703 > > 1) / expected: (UH0_1(v0='1', v1=UH0_0()), 'a 2', , 1, 1)
00:02:00 v #1704 > > │
00:02:00 v #1705 > > │ .ts output:
00:02:00 v #1706 > > │ __assert_eq / actual: UH0_1 (1, UH0_0),a 2,,1,1 / expected:
00:02:00 v #1707 > > UH0_1 (1, UH0_0),a 2,,1,1
00:02:00 v #1708 > > │
00:02:00 v #1709 > > │
00:02:00 v #1710 > >
00:02:00 v #1711 > > ── [ 5.89s - stdout ] ──────────────────────────────────────────────────────────
00:02:00 v #1712 > > │ .fsx output:
00:02:00 v #1713 > > │ __assert_eq / actual: "struct (UH0_1 ('1', UH0_0), "a 2", ,
00:02:00 v #1714 > > 1, 1)" / expected: "struct (UH0_1 ('1', UH0_0), "a 2", , 1, 1)"
00:02:00 v #1715 > > │
00:02:00 v #1716 > >
00:02:00 v #1717 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:00 v #1718 > > │ ### opt
00:02:00 v #1719 > >
00:02:00 v #1720 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:00 v #1721 > > inl opt p : parser (option _) = fun input, s =>
00:02:00 v #1722 > >     match p (input, s) with
00:02:00 v #1723 > >     | Ok (result, rest, s) => Ok (Some result, rest, s)
00:02:00 v #1724 > >     | Error _ => Ok (None, input, s)
00:02:00 v #1725 > >
00:02:00 v #1726 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:00 v #1727 > > │ ### rest_of_line
00:02:00 v #1728 > >
00:02:00 v #1729 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:00 v #1730 > > inl rest_of_line () : parser string = fun input, s =>
00:02:00 v #1731 > >     inl i : i32 = input |> span ((<>) '\n')
00:02:00 v #1732 > >     inl result = input |> sm'.range (am'.Start i) (am'.End eval)
00:02:00 v #1733 > >     Ok (result, result, s)
00:02:00 v #1734 > >
00:02:00 v #1735 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:00 v #1736 > > │ ### eof
00:02:00 v #1737 > >
00:02:00 v #1738 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:00 v #1739 > > inl eof () : parser () = fun input, s =>
00:02:00 v #1740 > >     if sm'.length input = 0i32
00:02:00 v #1741 > >     then Ok ((), input, s)
00:02:00 v #1742 > >     else
00:02:00 v #1743 > >         backend_switch {
00:02:00 v #1744 > >             Fsharp = fun () => $'$"parsing.eof / expected end of input / input:
00:02:00 v #1745 > > %A{!input}"' : string
00:02:00 v #1746 > >             Python = fun () => $'f"parsing.eof / expected end of input / input:
00:02:00 v #1747 > > {!input}"' : string
00:02:00 v #1748 > >         }
00:02:00 v #1749 > >         |> Error
00:02:00 v #1750 > 00:01:59 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 65218 }
00:02:00 v #1751 > 00:01:59 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/parsing.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/parsing.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:02:01 v #1752 > 00:02:00 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/parsing.dib.ipynb to html
00:02:01 v #1753 > 00:02:00 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:02:01 v #1754 > 00:02:00 v #7 !   validate(nb)
00:02:02 v #1755 > 00:02:00 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:02:02 v #1756 > 00:02:00 v #9 !   return _pygments_highlight(
00:02:03 v #1757 > 00:02:01 v #10 ! [NbConvertApp] Writing 502616 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/parsing.dib.html
00:02:03 v #1758 > 00:02:01 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 898 }
00:02:03 v #1759 > 00:02:01 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 898 }
00:02:03 v #1760 > 00:02:01 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/parsing.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/parsing.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:02:03 v #1761 > 00:02:02 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:02:03 v #1762 > 00:02:02 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:02:03 v #1763 > 00:02:02 d #16 spiral.run / dib / { exit_code = 0; result_length = 66175 }
00:02:03 d #1764 runtime.execute_with_options_async / { exit_code = 0; output_length = 72319 }
00:02:03 d #3 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path parsing.dib --retries 3
00:02:03 d #1765 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path sm'.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path sm'.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:02:03 v #1766 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "sm'.dib", "--retries", "3"])) }
00:02:03 v #1767 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/sm'.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/sm'.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/sm'.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/sm'.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:02:04 v #1768 > >
00:02:04 v #1769 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:04 v #1770 > > │ # sm'
00:02:07 v #1771 > >
00:02:07 v #1772 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:07 v #1773 > > //// test
00:02:07 v #1774 > >
00:02:07 v #1775 > > open testing
00:02:07 v #1776 > >
00:02:07 v #1777 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:07 v #1778 > > open rust
00:02:07 v #1779 > > open rust_operators
00:02:07 v #1780 > > open sm'_real
00:02:08 v #1781 > >
00:02:08 v #1782 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:08 v #1783 > > │ ## rust
00:02:08 v #1784 > >
00:02:08 v #1785 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:08 v #1786 > > │ ### std_string
00:02:08 v #1787 > >
00:02:08 v #1788 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:08 v #1789 > > //// real
00:02:08 v #1790 > >
00:02:08 v #1791 > > nominal std_string =
00:02:08 v #1792 > >     `(
00:02:08 v #1793 > >         backend_switch `(()) `({}) {
00:02:08 v #1794 > >             Fsharp =
00:02:08 v #1795 > >                 (fun () =>
00:02:08 v #1796 > >                     global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:02:08 v #1797 > > Fable.Core.Emit(\"std::string::String\")>]]\ntype std_string_String = class
00:02:08 v #1798 > > end\n#else\ntype std_string_String = string\n#endif\n"
00:02:08 v #1799 > >                 ) : () -> ()
00:02:08 v #1800 > >         }
00:02:08 v #1801 > >         $'' : $'std_string_String'
00:02:08 v #1802 > >     )
00:02:08 v #1803 > >
00:02:08 v #1804 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:08 v #1805 > > type std_string = sm'_real.std_string
00:02:08 v #1806 > >
00:02:08 v #1807 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:08 v #1808 > > │ ### to_string'
00:02:08 v #1809 > >
00:02:08 v #1810 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:08 v #1811 > > inl to_string' forall t. (x : t) : std_string =
00:02:08 v #1812 > >     !\($'$"!x.to_string()"')
00:02:08 v #1813 > >
00:02:08 v #1814 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:08 v #1815 > > │ ### from_std_string
00:02:08 v #1816 > >
00:02:08 v #1817 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:08 v #1818 > > //// real
00:02:08 v #1819 > >
00:02:08 v #1820 > > inl from_std_string (str : std_string) : string =
00:02:08 v #1821 > >     open rust
00:02:08 v #1822 > >     rust.emit_expr `std_string `string str
00:02:08 v #1823 > > ($'"fable_library_rust::String_::fromString($0)"' : string)
00:02:08 v #1824 > >
00:02:08 v #1825 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:08 v #1826 > > inl from_std_string (str : std_string) : string =
00:02:08 v #1827 > >     real sm'_real.from_std_string str
00:02:08 v #1828 > >
00:02:08 v #1829 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:08 v #1830 > > │ ## sm'
00:02:08 v #1831 > >
00:02:08 v #1832 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:08 v #1833 > > │ ### symbol_to_string
00:02:08 v #1834 > >
00:02:08 v #1835 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:08 v #1836 > > //// real
00:02:08 v #1837 > >
00:02:08 v #1838 > > inl symbol_to_string forall t {symbol}. : string =
00:02:08 v #1839 > >     // inl x = real_core.type_lit_to_lit `t
00:02:08 v #1840 > >     // inl x = real_core.type_to_symbol `t
00:02:08 v #1841 > >     // inl x = real_core.type_lit_to_lit `t
00:02:08 v #1842 > >     // !!!!SymbolToString (`(`t))
00:02:08 v #1843 > >     inl x = real_core.type_to_symbol `t
00:02:08 v #1844 > >     !!!!SymbolToString (x)
00:02:09 v #1845 > >
00:02:09 v #1846 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:09 v #1847 > > inl symbol_to_string forall t {symbol}. (x : t) : string =
00:02:09 v #1848 > >     real symbol_to_string `t
00:02:09 v #1849 > >
00:02:09 v #1850 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:09 v #1851 > > //// test
00:02:09 v #1852 > > ///! fsharp
00:02:09 v #1853 > > ///! cuda
00:02:09 v #1854 > >
00:02:09 v #1855 > > .test
00:02:09 v #1856 > > |> symbol_to_string
00:02:09 v #1857 > > |> _assert_eq "test"
00:02:10 v #1858 > >
00:02:10 v #1859 > > ── [ 1.04s - return value ] ────────────────────────────────────────────────────
00:02:10 v #1860 > > │ .py output (Cuda):
00:02:10 v #1861 > > │ __assert_eq / actual: test / expected: test
00:02:10 v #1862 > > │
00:02:10 v #1863 > > │
00:02:10 v #1864 > >
00:02:10 v #1865 > > ── [ 1.05s - stdout ] ──────────────────────────────────────────────────────────
00:02:10 v #1866 > > │ .fsx output:
00:02:10 v #1867 > > │ __assert_eq / actual: "test" / expected: "test"
00:02:10 v #1868 > > │
00:02:10 v #1869 > >
00:02:10 v #1870 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:10 v #1871 > > //// test
00:02:10 v #1872 > > //// real
00:02:10 v #1873 > > ///! fsharp
00:02:10 v #1874 > > ///! cuda
00:02:10 v #1875 > >
00:02:10 v #1876 > > open testing
00:02:10 v #1877 > > inl x = .test
00:02:10 v #1878 > > inl x = symbol_to_string `(`x)
00:02:10 v #1879 > > _assert_eq `string "test" x
00:02:10 v #1880 > >
00:02:10 v #1881 > > ── [ 567.21ms - return value ] ─────────────────────────────────────────────────
00:02:10 v #1882 > > │ .py output (Cuda):
00:02:10 v #1883 > > │ __assert_eq / actual: test / expected: test
00:02:10 v #1884 > > │
00:02:10 v #1885 > > │
00:02:10 v #1886 > >
00:02:10 v #1887 > > ── [ 567.60ms - stdout ] ───────────────────────────────────────────────────────
00:02:10 v #1888 > > │ .fsx output:
00:02:10 v #1889 > > │ __assert_eq / actual: "test" / expected: "test"
00:02:10 v #1890 > > │
00:02:10 v #1891 > >
00:02:10 v #1892 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:10 v #1893 > > │ ### index
00:02:10 v #1894 > >
00:02:10 v #1895 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:10 v #1896 > > inl index i (str : string) : char =
00:02:10 v #1897 > >     sm.index str i
00:02:11 v #1898 > >
00:02:11 v #1899 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:11 v #1900 > > │ ### length
00:02:11 v #1901 > >
00:02:11 v #1902 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:11 v #1903 > > inl length forall dim {int}. (input : string) : dim =
00:02:11 v #1904 > >     input |> sm.length
00:02:11 v #1905 > >
00:02:11 v #1906 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:11 v #1907 > > //// test
00:02:11 v #1908 > > ///! fsharp
00:02:11 v #1909 > > ///! cuda
00:02:11 v #1910 > >
00:02:11 v #1911 > > "abc"
00:02:11 v #1912 > > |> length
00:02:11 v #1913 > > |> _assert_eq 3i32
00:02:11 v #1914 > >
00:02:11 v #1915 > > ── [ 534.52ms - return value ] ─────────────────────────────────────────────────
00:02:11 v #1916 > > │ .py output (Cuda):
00:02:11 v #1917 > > │ __assert_eq / actual: 3 / expected: 3
00:02:11 v #1918 > > │
00:02:11 v #1919 > > │
00:02:11 v #1920 > >
00:02:11 v #1921 > > ── [ 534.89ms - stdout ] ───────────────────────────────────────────────────────
00:02:11 v #1922 > > │ .fsx output:
00:02:11 v #1923 > > │ __assert_eq / actual: 3 / expected: 3
00:02:11 v #1924 > > │
00:02:11 v #1925 > >
00:02:11 v #1926 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:11 v #1927 > > │ ### to_char_array
00:02:11 v #1928 > >
00:02:11 v #1929 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:11 v #1930 > > inl to_char_array (str : string) : array_base char =
00:02:11 v #1931 > >     am.init (str |> length) (fun i => str |> index i)
00:02:11 v #1932 > >     |> fun (a x : _ int _) => x
00:02:11 v #1933 > >
00:02:11 v #1934 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:11 v #1935 > > //// test
00:02:11 v #1936 > > ///! fsharp
00:02:11 v #1937 > > ///! cuda
00:02:11 v #1938 > >
00:02:11 v #1939 > > "abc"
00:02:11 v #1940 > > |> to_char_array
00:02:11 v #1941 > > |> sm'.format
00:02:11 v #1942 > > |> _assert_eq (;[[ 'a'; 'b'; 'c' ]] |> sm'.format)
00:02:12 v #1943 > >
00:02:12 v #1944 > > ── [ 992.93ms - return value ] ─────────────────────────────────────────────────
00:02:12 v #1945 > > │ .py output (Cuda):
00:02:12 v #1946 > > │ __assert_eq / actual: ['a' 'b' 'c'] / expected: ['a' 'b' 'c']
00:02:12 v #1947 > > │
00:02:12 v #1948 > > │
00:02:12 v #1949 > >
00:02:12 v #1950 > > ── [ 993.47ms - stdout ] ───────────────────────────────────────────────────────
00:02:12 v #1951 > > │ .fsx output:
00:02:12 v #1952 > > │ __assert_eq / actual: "[|'a'; 'b'; 'c'|]" / expected: "[|'a';
00:02:12 v #1953 > > 'b'; 'c'|]"
00:02:12 v #1954 > > │
00:02:12 v #1955 > >
00:02:12 v #1956 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:12 v #1957 > > │ ### to_char_list
00:02:12 v #1958 > >
00:02:12 v #1959 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:12 v #1960 > > inl to_char_list (str : string) : list char =
00:02:12 v #1961 > >     listm.init (str |> length) (fun (i : i64) => str |> index i)
00:02:13 v #1962 > >
00:02:13 v #1963 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:13 v #1964 > > //// test
00:02:13 v #1965 > > ///! fsharp
00:02:13 v #1966 > > ///! cuda
00:02:13 v #1967 > >
00:02:13 v #1968 > > "abc"
00:02:13 v #1969 > > |> to_char_list
00:02:13 v #1970 > > |> _assert_eq [[ 'a'; 'b'; 'c' ]]
00:02:13 v #1971 > >
00:02:13 v #1972 > > ── [ 665.07ms - return value ] ─────────────────────────────────────────────────
00:02:13 v #1973 > > │ .py output (Cuda):
00:02:13 v #1974 > > │ __assert_eq / actual: UH0_1(v0='a', v1=UH0_1(v0='b',
00:02:13 v #1975 > > v1=UH0_1(v0='c', v1=UH0_0()))) / expected: UH0_1(v0='a', v1=UH0_1(v0='b',
00:02:13 v #1976 > > v1=UH0_1(v0='c', v1=UH0_0())))
00:02:13 v #1977 > > │
00:02:13 v #1978 > > │
00:02:13 v #1979 > >
00:02:13 v #1980 > > ── [ 665.64ms - stdout ] ───────────────────────────────────────────────────────
00:02:13 v #1981 > > │ .fsx output:
00:02:13 v #1982 > > │ __assert_eq / actual: UH0_1 ('a', UH0_1 ('b', UH0_1 ('c',
00:02:13 v #1983 > > UH0_0))) / expected: UH0_1 ('a', UH0_1 ('b', UH0_1 ('c', UH0_0)))
00:02:13 v #1984 > > │
00:02:13 v #1985 > >
00:02:13 v #1986 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:13 v #1987 > > │ ### is_empty
00:02:13 v #1988 > >
00:02:13 v #1989 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:13 v #1990 > > inl is_empty (input : string) : bool =
00:02:13 v #1991 > >     length input = 0i32
00:02:13 v #1992 > >
00:02:13 v #1993 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:13 v #1994 > > │ ### slice
00:02:13 v #1995 > >
00:02:13 v #1996 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:13 v #1997 > > inl slice forall t {number; int}. (from : t) (to : t) s : string =
00:02:13 v #1998 > >     backend_switch {
00:02:13 v #1999 > >         Fsharp = fun () => sm.slice s { from to } : string
00:02:13 v #2000 > >         Python = fun () => sm.slice s { from to = if var_is s || var_is to then
00:02:13 v #2001 > > to + 1 else to } : string
00:02:13 v #2002 > >     }
00:02:14 v #2003 > >
00:02:14 v #2004 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:14 v #2005 > > //// test
00:02:14 v #2006 > > ///! fsharp
00:02:14 v #2007 > > ///! cuda
00:02:14 v #2008 > >
00:02:14 v #2009 > > "abcdef"
00:02:14 v #2010 > > |> slice 1i32 3i32
00:02:14 v #2011 > > |> _assert_eq "bcd"
00:02:14 v #2012 > >
00:02:14 v #2013 > > (join "abcde")
00:02:14 v #2014 > > |> slice 1i32 3i32
00:02:14 v #2015 > > |> _assert_eq "bcd"
00:02:14 v #2016 > >
00:02:14 v #2017 > > "abcde"
00:02:14 v #2018 > > |> slice 1i32 (join 3i32)
00:02:14 v #2019 > > |> _assert_eq "bcd"
00:02:14 v #2020 > >
00:02:14 v #2021 > > (join "abcde")
00:02:14 v #2022 > > |> slice 1i32 (join 3i32)
00:02:14 v #2023 > > |> _assert_eq "bcd"
00:02:14 v #2024 > >
00:02:14 v #2025 > > ── [ 598.44ms - return value ] ─────────────────────────────────────────────────
00:02:14 v #2026 > > │
00:02:14 v #2027 > > │ .py output (Cuda):
00:02:14 v #2028 > > │ __assert_eq / actual: bcd / expected: bcd
00:02:14 v #2029 > > │ __assert_eq / actual: bcd / expected: bcd
00:02:14 v #2030 > > │ __assert_eq / actual: bcd / expected: bcd
00:02:14 v #2031 > > │ __assert_eq / actual: bcd / expected: bcd
00:02:14 v #2032 > > │
00:02:14 v #2033 > > │
00:02:14 v #2034 > >
00:02:14 v #2035 > > ── [ 599.03ms - stdout ] ───────────────────────────────────────────────────────
00:02:14 v #2036 > > │ .fsx output:
00:02:14 v #2037 > > │ __assert_eq / actual: "bcd" / expected: "bcd"
00:02:14 v #2038 > > │ __assert_eq / actual: "bcd" / expected: "bcd"
00:02:14 v #2039 > > │ __assert_eq / actual: "bcd" / expected: "bcd"
00:02:14 v #2040 > > │ __assert_eq / actual: "bcd" / expected: "bcd"
00:02:14 v #2041 > > │
00:02:14 v #2042 > >
00:02:14 v #2043 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:14 v #2044 > > │ ### format_debug
00:02:14 v #2045 > >
00:02:14 v #2046 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:14 v #2047 > > //// real
00:02:14 v #2048 > >
00:02:14 v #2049 > > inl format_debug forall t. (x : t) : string =
00:02:14 v #2050 > >     backend_switch `string `({}) {
00:02:14 v #2051 > >         Fsharp = (fun () => $'$"%A{!x}"' : string) : () -> string
00:02:14 v #2052 > >         Python = (fun () => $'f"{!x}"' : string) : () -> string
00:02:14 v #2053 > >     }
00:02:14 v #2054 > >
00:02:14 v #2055 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:14 v #2056 > > inl format_debug forall t. (x : t) : string =
00:02:14 v #2057 > >     real format_debug `t x
00:02:14 v #2058 > >
00:02:14 v #2059 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:14 v #2060 > > //// test
00:02:14 v #2061 > > ///! fsharp
00:02:14 v #2062 > > ///! cuda
00:02:14 v #2063 > >
00:02:14 v #2064 > > { c = "1"; a = "2"; b = "3" }
00:02:14 v #2065 > > |> format_debug
00:02:14 v #2066 > > |> _assert_eq (
00:02:14 v #2067 > >     backend_switch {
00:02:14 v #2068 > >         Fsharp = fun () => "struct (\"1\", \"2\", \"3\")" : string
00:02:14 v #2069 > >         Python = fun () => "('1', '2', '3')" : string
00:02:14 v #2070 > >     }
00:02:14 v #2071 > > )
00:02:15 v #2072 > >
00:02:15 v #2073 > > ── [ 581.97ms - return value ] ─────────────────────────────────────────────────
00:02:15 v #2074 > > │ .py output (Cuda):
00:02:15 v #2075 > > │ __assert_eq / actual: ('1', '2', '3') / expected: ('1', '2',
00:02:15 v #2076 > > '3')
00:02:15 v #2077 > > │
00:02:15 v #2078 > > │
00:02:15 v #2079 > >
00:02:15 v #2080 > > ── [ 582.49ms - stdout ] ───────────────────────────────────────────────────────
00:02:15 v #2081 > > │ .fsx output:
00:02:15 v #2082 > > │ __assert_eq / actual: "struct ("1", "2", "3")" / expected:
00:02:15 v #2083 > > "struct ("1", "2", "3")"
00:02:15 v #2084 > > │
00:02:15 v #2085 > >
00:02:15 v #2086 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:15 v #2087 > > │ ### format_pretty
00:02:15 v #2088 > >
00:02:15 v #2089 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:15 v #2090 > > //// real
00:02:15 v #2091 > >
00:02:15 v #2092 > > inl format_pretty forall t. (x : t) : string =
00:02:15 v #2093 > >     run_target_args `string `t (fun () => x) function
00:02:15 v #2094 > >         | Rust _ => fun x =>
00:02:15 v #2095 > >             open rust
00:02:15 v #2096 > >             inl result = rust.emit_expr `t `std_string x
00:02:15 v #2097 > > ($'"format\!(\\\"{:#?}\\\", $0)"' : string)
00:02:15 v #2098 > >             from_std_string result
00:02:15 v #2099 > >         | _ => fun _ => format_debug `t x
00:02:15 v #2100 > >
00:02:15 v #2101 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:15 v #2102 > > inl format_pretty forall t. (x : t) : string =
00:02:15 v #2103 > >     real sm'_real.format_pretty `t x
00:02:15 v #2104 > >
00:02:15 v #2105 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:15 v #2106 > > │ ### prim
00:02:15 v #2107 > >
00:02:15 v #2108 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:15 v #2109 > > inl prim x = real
00:02:15 v #2110 > >     match x with
00:02:15 v #2111 > >     | (x : i8) | (x : i16) | (x : i32) | (x : i64) => "%d", x
00:02:15 v #2112 > >     | (x : u8) | (x : u16) | (x : u32) | (x : u64) => "%u", x
00:02:15 v #2113 > >     | (x : f32) | (x : f64) => "%f", x
00:02:15 v #2114 > >     | (x : string) => "%s", x
00:02:15 v #2115 > >     | (x : char) => "%c", x
00:02:15 v #2116 > >
00:02:15 v #2117 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:15 v #2118 > > │ ### printable
00:02:15 v #2119 > >
00:02:15 v #2120 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:15 v #2121 > > //// real
00:02:15 v #2122 > >
00:02:15 v #2123 > > prototype printable t : t -> ()
00:02:16 v #2124 > >
00:02:16 v #2125 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:16 v #2126 > > │ ### format_real
00:02:16 v #2127 > >
00:02:16 v #2128 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:16 v #2129 > > //// real
00:02:16 v #2130 > >
00:02:16 v #2131 > > let format_real forall t. (x : t) : string =
00:02:16 v #2132 > >     inl result = mut `string (join "")
00:02:16 v #2133 > >     inl rec write x =
00:02:16 v #2134 > >         inl p ((a : string), b) =
00:02:16 v #2135 > >             inl s : string =
00:02:16 v #2136 > >                 backend_switch `string `({}) {
00:02:16 v #2137 > >                     Fsharp =
00:02:16 v #2138 > >                         (fun () =>
00:02:16 v #2139 > >                             match b with
00:02:16 v #2140 > >                             | (_ : f32) | (_ : f64) => $'$"%+.6f{!b}"' : string
00:02:16 v #2141 > >                             | _ => $'$"{!b}"' : string
00:02:16 v #2142 > >                         ) : () -> string
00:02:16 v #2143 > >                     Python =
00:02:16 v #2144 > >                         (fun () =>
00:02:16 v #2145 > >                             match b with
00:02:16 v #2146 > >                             | (_ : f32) | (_ : f64) => $'"{:.6f}".format(!b)' :
00:02:16 v #2147 > > string
00:02:16 v #2148 > >                             | _ => $'f"{!b}"' : string
00:02:16 v #2149 > >                         ) : () -> string
00:02:16 v #2150 > >                 }
00:02:16 v #2151 > >             exec_unit ((fun () => result <- (+.) `string ((~*) `string result)
00:02:16 v #2152 > > s) : () -> ())
00:02:16 v #2153 > >
00:02:16 v #2154 > >         match x with // According to Bing it shouldn't matter whether these are
00:02:16 v #2155 > > %d or %lld in printf.
00:02:16 v #2156 > >         | () => ()
00:02:16 v #2157 > >         | (x : i8) | (x : i16) | (x : i32) | (x : i64) => p ("%d", x)
00:02:16 v #2158 > >         | (x : u8) | (x : u16) | (x : u32) | (x : u64) => p ("%u", x)
00:02:16 v #2159 > >         | (x : f32) | (x : f64) => p ("%f", x)
00:02:16 v #2160 > >         | (x : string) => p ("%s", x)
00:02:16 v #2161 > >         | (x : char) => p ("%c", x)
00:02:16 v #2162 > >         | (x : bool) => p ("%s", if x then "true" else "false")
00:02:16 v #2163 > >         | (a,b) => write a . write ", " . write b
00:02:16 v #2164 > >         | {} as x =>
00:02:16 v #2165 > >             write "{ "
00:02:16 v #2166 > >             inl _result =
00:02:16 v #2167 > >                 real_core.record_fold
00:02:16 v #2168 > >                     fun { state = separator key value } =>
00:02:16 v #2169 > >                         write separator
00:02:16 v #2170 > >                         write (symbol_to_string `(`key)) . write " = " . write
00:02:16 v #2171 > > value
00:02:16 v #2172 > >                         "; "
00:02:16 v #2173 > >                     () x
00:02:16 v #2174 > >             write " }"
00:02:16 v #2175 > >         | x when real_core.symbol_is x => write (symbol_to_string `(`x))
00:02:16 v #2176 > >         | x when real_core.function_is x => write (x ())
00:02:16 v #2177 > >         | x when real_core.union_is x =>
00:02:16 v #2178 > >             if real_core.prototype_has `(`x) printable then printable `(`x) x
00:02:16 v #2179 > >             else
00:02:16 v #2180 > >                 write (format_debug `(`x) x)
00:02:16 v #2181 > >                 // real_core.unbox x (fun (k, v) =>
00:02:16 v #2182 > >                 //     write k
00:02:16 v #2183 > >                 //     match v with
00:02:16 v #2184 > >                 //     | () => ()
00:02:16 v #2185 > >                 //     | _ => write "(" . write v . write ")"
00:02:16 v #2186 > >                 //     )
00:02:16 v #2187 > >         | x when real_core.nominal_is x =>
00:02:16 v #2188 > >             if real_core.prototype_has `(`x) printable then printable `(`x) x
00:02:16 v #2189 > >             // elif layout_is x then write *x // TODO: Deal with all the layout
00:02:16 v #2190 > > type cases.
00:02:16 v #2191 > >             else write (format_pretty `(`x) x)
00:02:16 v #2192 > >         | x => write (format_debug `(`x) x)
00:02:16 v #2193 > >     write x
00:02:16 v #2194 > >     (~*) `string result
00:02:16 v #2195 > >
00:02:16 v #2196 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:16 v #2197 > > │ ### format
00:02:16 v #2198 > >
00:02:16 v #2199 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:16 v #2200 > > inl format forall t. (x : t) : string =
00:02:16 v #2201 > >     real format_real `t x
00:02:16 v #2202 > >
00:02:16 v #2203 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:16 v #2204 > > //// test
00:02:16 v #2205 > > ///! fsharp
00:02:16 v #2206 > > ////! cuda
00:02:16 v #2207 > > ////! rust
00:02:16 v #2208 > > ////! typescript
00:02:16 v #2209 > > ////! python
00:02:16 v #2210 > >
00:02:16 v #2211 > > ("1", "2", [["3"; "4"]], { b = "5"; c = "6"; a = fun () => "7" })
00:02:16 v #2212 > > |> format
00:02:16 v #2213 > > |> _assert_eq "1, 2, UH0_1 (\"3\", UH0_1 (\"4\", UH0_0)), { b = 5; c = 6; a = 7
00:02:16 v #2214 > > }"
00:02:16 v #2215 > >
00:02:16 v #2216 > > ── [ 287.82ms - stdout ] ───────────────────────────────────────────────────────
00:02:16 v #2217 > > │ __assert_eq / actual: "1, 2, UH0_1 ("3", UH0_1 ("4", UH0_0)),
00:02:16 v #2218 > > { b = 5; c = 6; a = 7 }" / expected: "1, 2, UH0_1 ("3", UH0_1 ("4", UH0_0)), { b
00:02:16 v #2219 > > = 5; c = 6; a = 7 }"
00:02:16 v #2220 > > │
00:02:16 v #2221 > >
00:02:16 v #2222 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:16 v #2223 > > │ ### concat_array
00:02:16 v #2224 > >
00:02:16 v #2225 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:16 v #2226 > > inl concat_array (separator : string) (input : a int string) =
00:02:16 v #2227 > >     (input, { acc = ""; sep = "" })
00:02:16 v #2228 > >     ||> am.foldBack fun (x : string) { acc sep } =>
00:02:16 v #2229 > >             { acc = $'!x + !sep + !acc + ""' : string; sep = separator }
00:02:16 v #2230 > >     |> fun { acc } => acc
00:02:16 v #2231 > >
00:02:16 v #2232 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:16 v #2233 > > //// test
00:02:16 v #2234 > > ///! fsharp
00:02:16 v #2235 > > ////! cuda // AttributeError: 'str' object has no attribute 'item'
00:02:16 v #2236 > > ///! rust
00:02:16 v #2237 > > ///! typescript
00:02:16 v #2238 > > ///! python
00:02:16 v #2239 > > //// print_code
00:02:16 v #2240 > >
00:02:16 v #2241 > > ;[[
00:02:16 v #2242 > >     "1"
00:02:16 v #2243 > >     "2"
00:02:16 v #2244 > >     "3"
00:02:16 v #2245 > > ]]
00:02:16 v #2246 > > |> fun x =>
00:02:16 v #2247 > >     inl code = (a x : _ int _) |> concat_array "\n"
00:02:16 v #2248 > >     code
00:02:16 v #2249 > >     |> _assert_eq "1\n2\n3"
00:02:28 v #2250 > >
00:02:28 v #2251 > > ── [ 11.95s - return value ] ───────────────────────────────────────────────────
00:02:28 v #2252 > > │
00:02:28 v #2253 > > │ .rs output:
00:02:28 v #2254 > > │ __assert_eq / actual: "1
00:02:28 v #2255 > > │ 2
00:02:28 v #2256 > > │ 3" / expected: "1
00:02:28 v #2257 > > │ 2
00:02:28 v #2258 > > │ 3"
00:02:28 v #2259 > > │
00:02:28 v #2260 > > │
00:02:28 v #2261 > > │ .ts output:
00:02:28 v #2262 > > │ __assert_eq / actual: 1
00:02:28 v #2263 > > │ 2
00:02:28 v #2264 > > │ 3 / expected: 1
00:02:28 v #2265 > > │ 2
00:02:28 v #2266 > > │ 3
00:02:28 v #2267 > > │
00:02:28 v #2268 > > │
00:02:28 v #2269 > > │ .py output:
00:02:28 v #2270 > > │ __assert_eq / actual: 1
00:02:28 v #2271 > > │ 2
00:02:28 v #2272 > > │ 3 / expected: 1
00:02:28 v #2273 > > │ 2
00:02:28 v #2274 > > │ 3
00:02:28 v #2275 > > │
00:02:28 v #2276 > > │
00:02:28 v #2277 > > │
00:02:28 v #2278 > > │
00:02:28 v #2279 > > │
00:02:28 v #2280 > >
00:02:28 v #2281 > > ── [ 11.95s - stdout ] ─────────────────────────────────────────────────────────
00:02:28 v #2282 > > │ .fsx:
00:02:28 v #2283 > > │ type Mut0 = {mutable l0 : int32; mutable l1 : string; mutable
00:02:28 v #2284 > > l2 : string}
00:02:28 v #2285 > > │ let rec method1 (v0 : int32, v1 : Mut0) : bool =
00:02:28 v #2286 > > │     let v2 : int32 = v1.l0
00:02:28 v #2287 > > │     let v3 : bool = v2 < v0
00:02:28 v #2288 > > │     v3
00:02:28 v #2289 > > │ and method2 (v0 : bool) : bool =
00:02:28 v #2290 > > │     v0
00:02:28 v #2291 > > │ and closure0 (v0 : string) () : unit =
00:02:28 v #2292 > > │     let v1 : (string -> unit) = System.Console.WriteLine
00:02:28 v #2293 > > │     v1 v0
00:02:28 v #2294 > > │ and method0 () : unit =
00:02:28 v #2295 > > │     let v0 : string = "1"
00:02:28 v #2296 > > │     let v1 : string = "2"
00:02:28 v #2297 > > │     let v2 : string = "3"
00:02:28 v #2298 > > │     let v3 : (string []) = [|v0; v1; v2|]
00:02:28 v #2299 > > │     let v4 : int32 = v3.Length
00:02:28 v #2300 > > │     let v5 : string = ""
00:02:28 v #2301 > > │     let v6 : Mut0 = {l0 = 0; l1 = v5; l2 = v5} : Mut0
00:02:28 v #2302 > > │     while method1(v4, v6) do
00:02:28 v #2303 > > │         let v8 : int32 = v6.l0
00:02:28 v #2304 > > │         let v9 : int32 =  -v8
00:02:28 v #2305 > > │         let v10 : int32 = v9 + v4
00:02:28 v #2306 > > │         let v11 : int32 = v10 - 1
00:02:28 v #2307 > > │         let struct (v12 : string, v13 : string) = v6.l1,
00:02:28 v #2308 > > v6.l2
00:02:28 v #2309 > > │         let v14 : string = v3.[int v11]
00:02:28 v #2310 > > │         let v15 : string = v14 + v13 + v12 + ""
00:02:28 v #2311 > > │         let v16 : int32 = v8 + 1
00:02:28 v #2312 > > │         let v17 : string = "\n"
00:02:28 v #2313 > > │         v6.l0 <- v16
00:02:28 v #2314 > > │         v6.l1 <- v15
00:02:28 v #2315 > > │         v6.l2 <- v17
00:02:28 v #2316 > > │         ()
00:02:28 v #2317 > > │     let struct (v18 : string, v19 : string) = v6.l1, v6.l2
00:02:28 v #2318 > > │     let v20 : bool = v18 = "1\n2\n3"
00:02:28 v #2319 > > │     let v22 : bool =
00:02:28 v #2320 > > │         if v20 then
00:02:28 v #2321 > > │             true
00:02:28 v #2322 > > │         else
00:02:28 v #2323 > > │             method2(v20)
00:02:28 v #2324 > > │     let v23 : string = "__assert_eq"
00:02:28 v #2325 > > │     let v24 : string = "1\n2\n3"
00:02:28 v #2326 > > │     let v25 : string = $"{v23} / actual: %A{v18} / expected:
00:02:28 v #2327 > > %A{v24}"
00:02:28 v #2328 > > │     let v28 : unit = ()
00:02:28 v #2329 > > │     let v29 : (unit -> unit) = closure0(v25)
00:02:28 v #2330 > > │     let v30 : unit = (fun () -> v29 (); v28) ()
00:02:28 v #2331 > > │     let v32 : bool = v22 = false
00:02:28 v #2332 > > │     if v32 then
00:02:28 v #2333 > > │         failwith<unit> v25
00:02:28 v #2334 > > │ method0()
00:02:28 v #2335 > > │
00:02:28 v #2336 > > │
00:02:28 v #2337 > > │ .rs:
00:02:28 v #2338 > > │ #![allow(dead_code)]
00:02:28 v #2339 > > │ #![allow(non_camel_case_types)]
00:02:28 v #2340 > > │ #![allow(non_snake_case)]
00:02:28 v #2341 > > │ #![allow(non_upper_case_globals)]
00:02:28 v #2342 > > │ #![allow(unreachable_code)]
00:02:28 v #2343 > > │ #![allow(unused_attributes)]
00:02:28 v #2344 > > │ #![allow(unused_imports)]
00:02:28 v #2345 > > │ #![allow(unused_macros)]
00:02:28 v #2346 > > │ #![allow(unused_parens)]
00:02:28 v #2347 > > │ #![allow(unused_variables)]
00:02:28 v #2348 > > │ #![allow(unused_assignments)]
00:02:28 v #2349 > > │ mod module_6ff740fe {
00:02:28 v #2350 > > │     pub mod Spiral {
00:02:28 v #2351 > > │         use super::*;
00:02:28 v #2352 > > │         use fable_library_rust::NativeArray_::get_Count;
00:02:28 v #2353 > > │         use fable_library_rust::NativeArray_::new_array;
00:02:28 v #2354 > > │         use fable_library_rust::NativeArray_::Array;
00:02:28 v #2355 > > │         use fable_library_rust::Native_::on_startup;
00:02:28 v #2356 > > │         use fable_library_rust::Native_::LrcPtr;
00:02:28 v #2357 > > │         use fable_library_rust::Native_::MutCell;
00:02:28 v #2358 > > │         use fable_library_rust::String_::append;
00:02:28 v #2359 > > │         use fable_library_rust::String_::printfn;
00:02:28 v #2360 > > │         use fable_library_rust::String_::sprintf;
00:02:28 v #2361 > > │         use fable_library_rust::String_::string;
00:02:28 v #2362 > > │         #[derive(Clone, Debug, Hash, PartialEq, PartialOrd)]
00:02:28 v #2363 > > │         pub struct Mut0 {
00:02:28 v #2364 > > │             pub l0: MutCell<i32>,
00:02:28 v #2365 > > │             pub l1: MutCell<string>,
00:02:28 v #2366 > > │             pub l2: MutCell<string>,
00:02:28 v #2367 > > │         }
00:02:28 v #2368 > > │         impl core::fmt::Display for Mut0 {
00:02:28 v #2369 > > │             fn fmt(&self, f: &mut core::fmt::Formatter) ->
00:02:28 v #2370 > > core::fmt::Result {
00:02:28 v #2371 > > │                 write!(f, "{}",
00:02:28 v #2372 > > core::any::type_name::<Self>())
00:02:28 v #2373 > > │             }
00:02:28 v #2374 > > │         }
00:02:28 v #2375 > > │         pub fn method1(v0: i32, v1: LrcPtr<Spiral::Mut0>) ->
00:02:28 v #2376 > > bool {
00:02:28 v #2377 > > │             (v1.l0.get().clone()) < (v0)
00:02:28 v #2378 > > │         }
00:02:28 v #2379 > > │         pub fn method2(v0: bool) -> bool {
00:02:28 v #2380 > > │             v0
00:02:28 v #2381 > > │         }
00:02:28 v #2382 > > │         pub fn closure0(v0: string, unitVar: ()) {
00:02:28 v #2383 > > │             printfn!("{0}", v0);
00:02:28 v #2384 > > │         }
00:02:28 v #2385 > > │         pub fn method0() {
00:02:28 v #2386 > > │             let v3: Array<string> = new_array(&[string("1"),
00:02:28 v #2387 > > string("2"), string("3")]);
00:02:28 v #2388 > > │             let v4: i32 = get_Count(v3.clone());
00:02:28 v #2389 > > │             let v6: LrcPtr<Spiral::Mut0> =
00:02:28 v #2390 > > LrcPtr::new(Spiral::Mut0 {
00:02:28 v #2391 > > │                 l0: MutCell::new(0_i32),
00:02:28 v #2392 > > │                 l1: MutCell::new(string("")),
00:02:28 v #2393 > > │                 l2: MutCell::new(string("")),
00:02:28 v #2394 > > │             });
00:02:28 v #2395 > > │             while Spiral::method1(v4, v6.clone()) {
00:02:28 v #2396 > > │                 let v8: i32 = v6.l0.get().clone();
00:02:28 v #2397 > > │                 let v11: i32 = ((v8.wrapping_neg()) + (v4)) -
00:02:28 v #2398 > > 1_i32;
00:02:28 v #2399 > > │                 let matchValue: string = v6.l1.get().clone();
00:02:28 v #2400 > > │                 let matchValue_1: string =
00:02:28 v #2401 > > v6.l2.get().clone();
00:02:28 v #2402 > > │                 let v15: string = append(
00:02:28 v #2403 > > │                     (append((append((v3[v11].clone()),
00:02:28 v #2404 > > (matchValue_1))), (matchValue))),
00:02:28 v #2405 > > │                     string(""),
00:02:28 v #2406 > > │                 );
00:02:28 v #2407 > > │                 let v16: i32 = (v8) + 1_i32;
00:02:28 v #2408 > > │                 v6.l0.set(v16);
00:02:28 v #2409 > > │                 v6.l1.set(v15);
00:02:28 v #2410 > > │                 v6.l2.set(string("\n"));
00:02:28 v #2411 > > │                 ()
00:02:28 v #2412 > > │             }
00:02:28 v #2413 > > │             {
00:02:28 v #2414 > > │                 let matchValue_2: string =
00:02:28 v #2415 > > v6.l1.get().clone();
00:02:28 v #2416 > > │                 let matchValue_3: string =
00:02:28 v #2417 > > v6.l2.get().clone();
00:02:28 v #2418 > > │                 let v18: string = matchValue_2;
00:02:28 v #2419 > > │                 let v20: bool = (v18.clone()) ==
00:02:28 v #2420 > > string("1\n2\n3");
00:02:28 v #2421 > > │                 let v22: bool = if v20 { true } else {
00:02:28 v #2422 > > Spiral::method2(v20) };
00:02:28 v #2423 > > │                 let v25: string = sprintf!(
00:02:28 v #2424 > > │                     "{} / actual: {:?} / expected: {:?}",
00:02:28 v #2425 > > │                     string("__assert_eq"),
00:02:28 v #2426 > > │                     v18,
00:02:28 v #2427 > > │                     string("1\n2\n3")
00:02:28 v #2428 > > │                 );
00:02:28 v #2429 > > │                 let v30: () = {
00:02:28 v #2430 > > │                     Spiral::closure0(v25.clone(), ());
00:02:28 v #2431 > > │                     ()
00:02:28 v #2432 > > │                 };
00:02:28 v #2433 > > │                 if (v22) == false {
00:02:28 v #2434 > > │                     panic!("{}", v25,);
00:02:28 v #2435 > > │                 }
00:02:28 v #2436 > > │             }
00:02:28 v #2437 > > │         }
00:02:28 v #2438 > > │         // on_startup!(Spiral::method0());
00:02:28 v #2439 > > │     }
00:02:28 v #2440 > > │ }
00:02:28 v #2441 > > │ pub use module_6ff740fe::*;
00:02:28 v #2442 > > │
00:02:28 v #2443 > > │
00:02:28 v #2444 > > │
00:02:28 v #2445 > > │ pub fn main() -> Result<(), String> { Ok(Spiral::method0()) }
00:02:28 v #2446 > > │
00:02:28 v #2447 > > │ .ts:
00:02:28 v #2448 > > │ import { Record } from
00:02:28 v #2449 > > "./fable_modules/fable-library-ts.5.0.0-alpha.2/Types.js";
00:02:28 v #2450 > > │ import { op_UnaryNegation_Int32, int32 } from
00:02:28 v #2451 > > "./fable_modules/fable-library-ts.5.0.0-alpha.2/Int32.js";
00:02:28 v #2452 > > │ import { IComparable, IEquatable } from
00:02:28 v #2453 > > "./fable_modules/fable-library-ts.5.0.0-alpha.2/Util.js";
00:02:28 v #2454 > > │ import { record_type, string_type, int32_type, TypeInfo }
00:02:28 v #2455 > > from "./fable_modules/fable-library-ts.5.0.0-alpha.2/Reflection.js";
00:02:28 v #2456 > > │ import { item } from
00:02:28 v #2457 > > "./fable_modules/fable-library-ts.5.0.0-alpha.2/Array.js";
00:02:28 v #2458 > > │ import { interpolate, toText } from
00:02:28 v #2459 > > "./fable_modules/fable-library-ts.5.0.0-alpha.2/String.js";
00:02:28 v #2460 > > │
00:02:28 v #2461 > > │ export class Mut0 extends Record implements IEquatable<Mut0>,
00:02:28 v #2462 > > IComparable<Mut0> {
00:02:28 v #2463 > > │     l0: int32;
00:02:28 v #2464 > > │     l1: string;
00:02:28 v #2465 > > │     l2: string;
00:02:28 v #2466 > > │     constructor(l0: int32, l1: string, l2: string) {
00:02:28 v #2467 > > │         super();
00:02:28 v #2468 > > │         this.l0 = (l0 | 0);
00:02:28 v #2469 > > │         this.l1 = l1;
00:02:28 v #2470 > > │         this.l2 = l2;
00:02:28 v #2471 > > │     }
00:02:28 v #2472 > > │ }
00:02:28 v #2473 > > │
00:02:28 v #2474 > > │ export function Mut0_$reflection(): TypeInfo {
00:02:28 v #2475 > > │     return record_type("Spiral.Mut0", [], Mut0, () => [["l0",
00:02:28 v #2476 > > int32_type], ["l1", string_type], ["l2", string_type]]);
00:02:28 v #2477 > > │ }
00:02:28 v #2478 > > │
00:02:28 v #2479 > > │ export function method1(v0: int32, v1: Mut0): boolean {
00:02:28 v #2480 > > │     return v1.l0 < v0;
00:02:28 v #2481 > > │ }
00:02:28 v #2482 > > │
00:02:28 v #2483 > > │ export function method2(v0: boolean): boolean {
00:02:28 v #2484 > > │     return v0;
00:02:28 v #2485 > > │ }
00:02:28 v #2486 > > │
00:02:28 v #2487 > > │ export function closure0(v0: string, unitVar: void): void {
00:02:28 v #2488 > > │     console.log(v0);
00:02:28 v #2489 > > │ }
00:02:28 v #2490 > > │
00:02:28 v #2491 > > │ export function method0(): void {
00:02:28 v #2492 > > │     const v3: string[] = ["1", "2", "3"];
00:02:28 v #2493 > > │     const v4: int32 = v3.length | 0;
00:02:28 v #2494 > > │     const v6: Mut0 = new Mut0(0, "", "");
00:02:28 v #2495 > > │     while (method1(v4, v6)) {
00:02:28 v #2496 > > │         const v8: int32 = v6.l0 | 0;
00:02:28 v #2497 > > │         const v11: int32 = ((op_UnaryNegation_Int32(v8) + v4)
00:02:28 v #2498 > > - 1) | 0;
00:02:28 v #2499 > > │         const matchValue: string = v6.l1;
00:02:28 v #2500 > > │         const matchValue_1: string = v6.l2;
00:02:28 v #2501 > > │         const v15: string = ((item(v11, v3) + matchValue_1) +
00:02:28 v #2502 > > matchValue) + "";
00:02:28 v #2503 > > │         const v16: int32 = (v8 + 1) | 0;
00:02:28 v #2504 > > │         v6.l0 = (v16 | 0);
00:02:28 v #2505 > > │         v6.l1 = v15;
00:02:28 v #2506 > > │         v6.l2 = "\n";
00:02:28 v #2507 > > │     }
00:02:28 v #2508 > > │     const matchValue_2: string = v6.l1;
00:02:28 v #2509 > > │     const matchValue_3: string = v6.l2;
00:02:28 v #2510 > > │     const v18: string = matchValue_2;
00:02:28 v #2511 > > │     const v20: boolean = v18 === "1\n2\n3";
00:02:28 v #2512 > > │     const v22: boolean = v20 ? true : method2(v20);
00:02:28 v #2513 > > │     const v25: string = toText(interpolate("%P() / actual:
00:02:28 v #2514 > > %A%P() / expected: %A%P()", ["__assert_eq", v18, "1\n2\n3"]));
00:02:28 v #2515 > > │     let v30: any;
00:02:28 v #2516 > > │     closure0(v25, undefined);
00:02:28 v #2517 > > │     v30 = undefined;
00:02:28 v #2518 > > │     if (v22 === false) {
00:02:28 v #2519 > > │         throw new Error(v25);
00:02:28 v #2520 > > │     }
00:02:28 v #2521 > > │ }
00:02:28 v #2522 > > │
00:02:28 v #2523 > > │ method0();
00:02:28 v #2524 > > │
00:02:28 v #2525 > > │
00:02:28 v #2526 > > │ .py:
00:02:28 v #2527 > > │ from __future__ import annotations
00:02:28 v #2528 > > │ from dataclasses import dataclass
00:02:28 v #2529 > > │ from fable_modules.fable_library.int32 import
00:02:28 v #2530 > > op_unary_negation_int32
00:02:28 v #2531 > > │ from fable_modules.fable_library.reflection import (TypeInfo,
00:02:28 v #2532 > > int32_type, string_type, record_type)
00:02:28 v #2533 > > │ from fable_modules.fable_library.string_ import (to_text,
00:02:28 v #2534 > > interpolate)
00:02:28 v #2535 > > │ from fable_modules.fable_library.types import (Record, Array)
00:02:28 v #2536 > > │
00:02:28 v #2537 > > │ def _expr0() -> TypeInfo:
00:02:28 v #2538 > > │     return record_type("Spiral.Mut0", [], Mut0, lambda:
00:02:28 v #2539 > > [("l0", int32_type), ("l1", string_type), ("l2", string_type)])
00:02:28 v #2540 > > │
00:02:28 v #2541 > > │
00:02:28 v #2542 > > │ @dataclass(eq = False, repr = False, slots = True)
00:02:28 v #2543 > > │ class Mut0(Record):
00:02:28 v #2544 > > │     l0: int
00:02:28 v #2545 > > │     l1: str
00:02:28 v #2546 > > │     l2: str
00:02:28 v #2547 > > │
00:02:28 v #2548 > > │ Mut0_reflection = _expr0
00:02:28 v #2549 > > │
00:02:28 v #2550 > > │ def method1(v0: int, v1: Mut0) -> bool:
00:02:28 v #2551 > > │     return v1.l0 < v0
00:02:28 v #2552 > > │
00:02:28 v #2553 > > │
00:02:28 v #2554 > > │ def method2(v0: bool) -> bool:
00:02:28 v #2555 > > │     return v0
00:02:28 v #2556 > > │
00:02:28 v #2557 > > │
00:02:28 v #2558 > > │ def closure0(v0: str, unit_var: None) -> None:
00:02:28 v #2559 > > │     print(v0)
00:02:28 v #2560 > > │
00:02:28 v #2561 > > │
00:02:28 v #2562 > > │ def method0(__unit: None=None) -> None:
00:02:28 v #2563 > > │     v3: Array[str] = ["1", "2", "3"]
00:02:28 v #2564 > > │     v4: int = len(v3) or 0
00:02:28 v #2565 > > │     v6: Mut0 = Mut0(0, "", "")
00:02:28 v #2566 > > │     while method1(v4, v6):
00:02:28 v #2567 > > │         v8: int = v6.l0 or 0
00:02:28 v #2568 > > │         v11: int = ((op_unary_negation_int32(v8) + v4) - 1)
00:02:28 v #2569 > > or 0
00:02:28 v #2570 > > │         match_value: str = v6.l1
00:02:28 v #2571 > > │         match_value_1: str = v6.l2
00:02:28 v #2572 > > │         v15: str = ((v3[v11] + match_value_1) + match_value)
00:02:28 v #2573 > > + ""
00:02:28 v #2574 > > │         v16: int = (v8 + 1) or 0
00:02:28 v #2575 > > │         v6.l0 = v16 or 0
00:02:28 v #2576 > > │         v6.l1 = v15
00:02:28 v #2577 > > │         v6.l2 = "\n"
00:02:28 v #2578 > > │     match_value_2: str = v6.l1
00:02:28 v #2579 > > │     match_value_3: str = v6.l2
00:02:28 v #2580 > > │     v18: str = match_value_2
00:02:28 v #2581 > > │     v20: bool = v18 == "1\n2\n3"
00:02:28 v #2582 > > │     v22: bool = True if v20 else method2(v20)
00:02:28 v #2583 > > │     v25: str = to_text(interpolate("%P() / actual: %A%P()
00:02:28 v #2584 > > expected: %A%P()", ["__assert_eq", v18, "1\n2\n3"]))
00:02:28 v #2585 > > │     v30: None
00:02:28 v #2586 > > │     closure0(v25, None)
00:02:28 v #2587 > > │     v30 = None
00:02:28 v #2588 > > │     if v22 == False:
00:02:28 v #2589 > > │         raise Exception(v25)
00:02:28 v #2590 > > │
00:02:28 v #2591 > > │
00:02:28 v #2592 > > │
00:02:28 v #2593 > > │ method0()
00:02:28 v #2594 > > │
00:02:28 v #2595 > > │
00:02:28 v #2596 > > │ .fsx output:
00:02:28 v #2597 > > │ __assert_eq / actual: "1
00:02:28 v #2598 > > │ 2
00:02:28 v #2599 > > │ 3" / expected: "1
00:02:28 v #2600 > > │ 2
00:02:28 v #2601 > > │ 3"
00:02:28 v #2602 > > │
00:02:28 v #2603 > >
00:02:28 v #2604 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:28 v #2605 > > │ ### concat_list
00:02:28 v #2606 > >
00:02:28 v #2607 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:28 v #2608 > > inl concat_list separator input =
00:02:28 v #2609 > >     (input, { acc = ""; sep = "" })
00:02:28 v #2610 > >     ||> listm.foldBack fun (x : string) { acc sep } =>
00:02:28 v #2611 > >             { acc = $'!x + !sep + !acc + ""' : string; sep = separator }
00:02:28 v #2612 > >     |> fun { acc } => acc
00:02:29 v #2613 > >
00:02:29 v #2614 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:29 v #2615 > > //// test
00:02:29 v #2616 > > ///! fsharp
00:02:29 v #2617 > > ///! cuda
00:02:29 v #2618 > > ///! rust
00:02:29 v #2619 > > ///! typescript
00:02:29 v #2620 > > ///! python
00:02:29 v #2621 > > //// print_code
00:02:29 v #2622 > >
00:02:29 v #2623 > > [[
00:02:29 v #2624 > >     "1"
00:02:29 v #2625 > >     "2"
00:02:29 v #2626 > >     "3"
00:02:29 v #2627 > > ]]
00:02:29 v #2628 > > |> fun x =>
00:02:29 v #2629 > >     inl code = (x : _) |> concat_list "\n"
00:02:29 v #2630 > >     code
00:02:29 v #2631 > >     |> _assert_eq "1\n2\n3"
00:02:36 v #2632 > >
00:02:36 v #2633 > > ── [ 7.57s - return value ] ────────────────────────────────────────────────────
00:02:36 v #2634 > > │
00:02:36 v #2635 > > │ .py output (Cuda):
00:02:36 v #2636 > > │ __assert_eq / actual: 1
00:02:36 v #2637 > > │ 2
00:02:36 v #2638 > > │ 3 / expected: 1
00:02:36 v #2639 > > │ 2
00:02:36 v #2640 > > │ 3
00:02:36 v #2641 > > │
00:02:36 v #2642 > > │
00:02:36 v #2643 > > │ .rs output:
00:02:36 v #2644 > > │ __assert_eq / actual: "1
00:02:36 v #2645 > > │ 2
00:02:36 v #2646 > > │ 3" / expected: "1
00:02:36 v #2647 > > │ 2
00:02:36 v #2648 > > │ 3"
00:02:36 v #2649 > > │
00:02:36 v #2650 > > │
00:02:36 v #2651 > > │ .ts output:
00:02:36 v #2652 > > │ __assert_eq / actual: 1
00:02:36 v #2653 > > │ 2
00:02:36 v #2654 > > │ 3 / expected: 1
00:02:36 v #2655 > > │ 2
00:02:36 v #2656 > > │ 3
00:02:36 v #2657 > > │
00:02:36 v #2658 > > │
00:02:36 v #2659 > > │ .py output:
00:02:36 v #2660 > > │ __assert_eq / actual: 1
00:02:36 v #2661 > > │ 2
00:02:36 v #2662 > > │ 3 / expected: 1
00:02:36 v #2663 > > │ 2
00:02:36 v #2664 > > │ 3
00:02:36 v #2665 > > │
00:02:36 v #2666 > > │
00:02:36 v #2667 > > │
00:02:36 v #2668 > > │
00:02:36 v #2669 > > │
00:02:36 v #2670 > >
00:02:36 v #2671 > > ── [ 7.57s - stdout ] ──────────────────────────────────────────────────────────
00:02:36 v #2672 > > │ .fsx:
00:02:36 v #2673 > > │ let rec method1 (v0 : bool) : bool =
00:02:36 v #2674 > > │     v0
00:02:36 v #2675 > > │ and closure0 (v0 : string) () : unit =
00:02:36 v #2676 > > │     let v1 : (string -> unit) = System.Console.WriteLine
00:02:36 v #2677 > > │     v1 v0
00:02:36 v #2678 > > │ and method0 () : unit =
00:02:36 v #2679 > > │     let v0 : string = "3"
00:02:36 v #2680 > > │     let v1 : string = ""
00:02:36 v #2681 > > │     let v2 : string = v0 + v1 + v1 + ""
00:02:36 v #2682 > > │     let v3 : string = "2"
00:02:36 v #2683 > > │     let v4 : string = "\n"
00:02:36 v #2684 > > │     let v5 : string = v3 + v4 + v2 + ""
00:02:36 v #2685 > > │     let v6 : string = "1"
00:02:36 v #2686 > > │     let v7 : string = v6 + v4 + v5 + ""
00:02:36 v #2687 > > │     let v8 : bool = v7 = "1\n2\n3"
00:02:36 v #2688 > > │     let v10 : bool =
00:02:36 v #2689 > > │         if v8 then
00:02:36 v #2690 > > │             true
00:02:36 v #2691 > > │         else
00:02:36 v #2692 > > │             method1(v8)
00:02:36 v #2693 > > │     let v11 : string = "__assert_eq"
00:02:36 v #2694 > > │     let v12 : string = "1\n2\n3"
00:02:36 v #2695 > > │     let v13 : string = $"{v11} / actual: %A{v7} / expected:
00:02:36 v #2696 > > %A{v12}"
00:02:36 v #2697 > > │     let v16 : unit = ()
00:02:36 v #2698 > > │     let v17 : (unit -> unit) = closure0(v13)
00:02:36 v #2699 > > │     let v18 : unit = (fun () -> v17 (); v16) ()
00:02:36 v #2700 > > │     let v20 : bool = v10 = false
00:02:36 v #2701 > > │     if v20 then
00:02:36 v #2702 > > │         failwith<unit> v13
00:02:36 v #2703 > > │ method0()
00:02:36 v #2704 > > │
00:02:36 v #2705 > > │
00:02:36 v #2706 > > │ .rs:
00:02:36 v #2707 > > │ #![allow(dead_code)]
00:02:36 v #2708 > > │ #![allow(non_camel_case_types)]
00:02:36 v #2709 > > │ #![allow(non_snake_case)]
00:02:36 v #2710 > > │ #![allow(non_upper_case_globals)]
00:02:36 v #2711 > > │ #![allow(unreachable_code)]
00:02:36 v #2712 > > │ #![allow(unused_attributes)]
00:02:36 v #2713 > > │ #![allow(unused_imports)]
00:02:36 v #2714 > > │ #![allow(unused_macros)]
00:02:36 v #2715 > > │ #![allow(unused_parens)]
00:02:36 v #2716 > > │ #![allow(unused_variables)]
00:02:36 v #2717 > > │ #![allow(unused_assignments)]
00:02:36 v #2718 > > │ mod module_6ff740fe {
00:02:36 v #2719 > > │     pub mod Spiral {
00:02:36 v #2720 > > │         use super::*;
00:02:36 v #2721 > > │         use fable_library_rust::Native_::on_startup;
00:02:36 v #2722 > > │         use fable_library_rust::String_::printfn;
00:02:36 v #2723 > > │         use fable_library_rust::String_::sprintf;
00:02:36 v #2724 > > │         use fable_library_rust::String_::string;
00:02:36 v #2725 > > │         pub fn method1(v0: bool) -> bool {
00:02:36 v #2726 > > │             v0
00:02:36 v #2727 > > │         }
00:02:36 v #2728 > > │         pub fn closure0(v0: string, unitVar: ()) {
00:02:36 v #2729 > > │             printfn!("{0}", v0);
00:02:36 v #2730 > > │         }
00:02:36 v #2731 > > │         pub fn method0() {
00:02:36 v #2732 > > │             let v7: string = string("1\n2\n3");
00:02:36 v #2733 > > │             let v8: bool = (v7.clone()) == string("1\n2\n3");
00:02:36 v #2734 > > │             let v10: bool = if v8 { true } else {
00:02:36 v #2735 > > Spiral::method1(v8) };
00:02:36 v #2736 > > │             let v13: string = sprintf!(
00:02:36 v #2737 > > │                 "{} / actual: {:?} / expected: {:?}",
00:02:36 v #2738 > > │                 string("__assert_eq"),
00:02:36 v #2739 > > │                 v7,
00:02:36 v #2740 > > │                 string("1\n2\n3")
00:02:36 v #2741 > > │             );
00:02:36 v #2742 > > │             let v18: () = {
00:02:36 v #2743 > > │                 Spiral::closure0(v13.clone(), ());
00:02:36 v #2744 > > │                 ()
00:02:36 v #2745 > > │             };
00:02:36 v #2746 > > │             if (v10) == false {
00:02:36 v #2747 > > │                 panic!("{}", v13,);
00:02:36 v #2748 > > │             }
00:02:36 v #2749 > > │         }
00:02:36 v #2750 > > │         // on_startup!(Spiral::method0());
00:02:36 v #2751 > > │     }
00:02:36 v #2752 > > │ }
00:02:36 v #2753 > > │ pub use module_6ff740fe::*;
00:02:36 v #2754 > > │
00:02:36 v #2755 > > │
00:02:36 v #2756 > > │
00:02:36 v #2757 > > │ pub fn main() -> Result<(), String> { Ok(Spiral::method0()) }
00:02:36 v #2758 > > │
00:02:36 v #2759 > > │ .ts:
00:02:36 v #2760 > > │ import { interpolate, toText } from
00:02:36 v #2761 > > "./fable_modules/fable-library-ts.5.0.0-alpha.2/String.js";
00:02:36 v #2762 > > │
00:02:36 v #2763 > > │ export function method1(v0: boolean): boolean {
00:02:36 v #2764 > > │     return v0;
00:02:36 v #2765 > > │ }
00:02:36 v #2766 > > │
00:02:36 v #2767 > > │ export function closure0(v0: string, unitVar: void): void {
00:02:36 v #2768 > > │     console.log(v0);
00:02:36 v #2769 > > │ }
00:02:36 v #2770 > > │
00:02:36 v #2771 > > │ export function method0(): void {
00:02:36 v #2772 > > │     const v7 = "1\n2\n3";
00:02:36 v #2773 > > │     const v8: boolean = v7 === "1\n2\n3";
00:02:36 v #2774 > > │     const v10: boolean = v8 ? true : method1(v8);
00:02:36 v #2775 > > │     const v13: string = toText(interpolate("%P() / actual:
00:02:36 v #2776 > > %A%P() / expected: %A%P()", ["__assert_eq", v7, "1\n2\n3"]));
00:02:36 v #2777 > > │     let v18: any;
00:02:36 v #2778 > > │     closure0(v13, undefined);
00:02:36 v #2779 > > │     v18 = undefined;
00:02:36 v #2780 > > │     if (v10 === false) {
00:02:36 v #2781 > > │         throw new Error(v13);
00:02:36 v #2782 > > │     }
00:02:36 v #2783 > > │ }
00:02:36 v #2784 > > │
00:02:36 v #2785 > > │ method0();
00:02:36 v #2786 > > │
00:02:36 v #2787 > > │
00:02:36 v #2788 > > │ .py:
00:02:36 v #2789 > > │ from fable_modules.fable_library.string_ import (to_text,
00:02:36 v #2790 > > interpolate)
00:02:36 v #2791 > > │
00:02:36 v #2792 > > │ def method1(v0: bool) -> bool:
00:02:36 v #2793 > > │     return v0
00:02:36 v #2794 > > │
00:02:36 v #2795 > > │
00:02:36 v #2796 > > │ def closure0(v0: str, unit_var: None) -> None:
00:02:36 v #2797 > > │     print(v0)
00:02:36 v #2798 > > │
00:02:36 v #2799 > > │
00:02:36 v #2800 > > │ def method0(__unit: None=None) -> None:
00:02:36 v #2801 > > │     v7: str = "1\n2\n3"
00:02:36 v #2802 > > │     v8: bool = v7 == "1\n2\n3"
00:02:36 v #2803 > > │     v10: bool = True if v8 else method1(v8)
00:02:36 v #2804 > > │     v13: str = to_text(interpolate("%P() / actual: %A%P()
00:02:36 v #2805 > > expected: %A%P()", ["__assert_eq", v7, "1\n2\n3"]))
00:02:36 v #2806 > > │     v18: None
00:02:36 v #2807 > > │     closure0(v13, None)
00:02:36 v #2808 > > │     v18 = None
00:02:36 v #2809 > > │     if v10 == False:
00:02:36 v #2810 > > │         raise Exception(v13)
00:02:36 v #2811 > > │
00:02:36 v #2812 > > │
00:02:36 v #2813 > > │
00:02:36 v #2814 > > │ method0()
00:02:36 v #2815 > > │
00:02:36 v #2816 > > │
00:02:36 v #2817 > > │ .py (Cuda):
00:02:36 v #2818 > > │ kernel = r"""
00:02:36 v #2819 > > │ """
00:02:36 v #2820 > > │ class static_array():
00:02:36 v #2821 > > │     def __init__(self, length):
00:02:36 v #2822 > > │         self.ptr = []
00:02:36 v #2823 > > │         for _ in range(length):
00:02:36 v #2824 > > │             self.ptr.append(None)
00:02:36 v #2825 > > │
00:02:36 v #2826 > > │     def __getitem__(self, index):
00:02:36 v #2827 > > │         assert 0 <= index < len(self.ptr), "The get index
00:02:36 v #2828 > > needs to be in range."
00:02:36 v #2829 > > │         return self.ptr[index]
00:02:36 v #2830 > > │
00:02:36 v #2831 > > │     def __setitem__(self, index, value):
00:02:36 v #2832 > > │         assert 0 <= index < len(self.ptr), "The set index
00:02:36 v #2833 > > needs to be in range."
00:02:36 v #2834 > > │         self.ptr[index] = value
00:02:36 v #2835 > > │
00:02:36 v #2836 > > │ class static_array_list(static_array):
00:02:36 v #2837 > > │     def __init__(self, length):
00:02:36 v #2838 > > │         super().__init__(length)
00:02:36 v #2839 > > │         self.length = 0
00:02:36 v #2840 > > │
00:02:36 v #2841 > > │     def __getitem__(self, index):
00:02:36 v #2842 > > │         assert 0 <= index < self.length, "The get index needs
00:02:36 v #2843 > > to be in range."
00:02:36 v #2844 > > │         return self.ptr[index]
00:02:36 v #2845 > > │
00:02:36 v #2846 > > │     def __setitem__(self, index, value):
00:02:36 v #2847 > > │         assert 0 <= index < self.length, "The set index needs
00:02:36 v #2848 > > to be in range."
00:02:36 v #2849 > > │         self.ptr[index] = value
00:02:36 v #2850 > > │
00:02:36 v #2851 > > │     def push(self,value):
00:02:36 v #2852 > > │         assert (self.length < len(self.ptr)), "The length
00:02:36 v #2853 > > before pushing has to be less than the maximum length of the array."
00:02:36 v #2854 > > │         self.ptr[self.length] = value
00:02:36 v #2855 > > │         self.length += 1
00:02:36 v #2856 > > │
00:02:36 v #2857 > > │     def pop(self):
00:02:36 v #2858 > > │         assert (0 < self.length), "The length before popping
00:02:36 v #2859 > > has to be greater than 0."
00:02:36 v #2860 > > │         self.length -= 1
00:02:36 v #2861 > > │         return self.ptr[self.length]
00:02:36 v #2862 > > │
00:02:36 v #2863 > > │     def unsafe_set_length(self,i):
00:02:36 v #2864 > > │         assert 0 <= i <= len(self.ptr), "The new length has
00:02:36 v #2865 > > to be in range."
00:02:36 v #2866 > > │         self.length = i
00:02:36 v #2867 > > │
00:02:36 v #2868 > > │ class dynamic_array(static_array):
00:02:36 v #2869 > > │     pass
00:02:36 v #2870 > > │
00:02:36 v #2871 > > │ class dynamic_array_list(static_array_list):
00:02:36 v #2872 > > │     def length_(self): return self.length
00:02:36 v #2873 > > │
00:02:36 v #2874 > > │ import cupy as cp
00:02:36 v #2875 > > │ import numpy as np
00:02:36 v #2876 > > │ from dataclasses import dataclass
00:02:36 v #2877 > > │ from typing import NamedTuple, Union, Callable, Tuple
00:02:36 v #2878 > > │ i8 = int; i16 = int; i32 = int; i64 = int; u8 = int; u16 =
00:02:36 v #2879 > > int; u32 = int; u64 = int; f32 = float; f64 = float; char = str; string = str
00:02:36 v #2880 > > │ cuda = False
00:02:36 v #2881 > > │
00:02:36 v #2882 > > │ def method1(v0 : bool) -> bool:
00:02:36 v #2883 > > │     return v0
00:02:36 v #2884 > > │ def method0() -> None:
00:02:36 v #2885 > > │     v0 = "3"
00:02:36 v #2886 > > │     v1 = ""
00:02:36 v #2887 > > │     v2 = v0 + v1 + v1 + ""
00:02:36 v #2888 > > │     del v0, v1
00:02:36 v #2889 > > │     v3 = "2"
00:02:36 v #2890 > > │     v4 = "\n"
00:02:36 v #2891 > > │     v5 = v3 + v4 + v2 + ""
00:02:36 v #2892 > > │     del v2, v3
00:02:36 v #2893 > > │     v6 = "1"
00:02:36 v #2894 > > │     v7 = v6 + v4 + v5 + ""
00:02:36 v #2895 > > │     del v4, v5, v6
00:02:36 v #2896 > > │     v8 = v7 == "1\n2\n3"
00:02:36 v #2897 > > │     if v8:
00:02:36 v #2898 > > │         v10 = True
00:02:36 v #2899 > > │     else:
00:02:36 v #2900 > > │         v10 = method1(v8)
00:02:36 v #2901 > > │     del v8
00:02:36 v #2902 > > │     v14 = "__assert_eq"
00:02:36 v #2903 > > │     v15 = "1\n2\n3"
00:02:36 v #2904 > > │     v16 = f"{v14} / actual: {v7} / expected: {v15}"
00:02:36 v #2905 > > │     del v7, v14, v15
00:02:36 v #2906 > > │     print(v16)
00:02:36 v #2907 > > │     v22 = v10 == False
00:02:36 v #2908 > > │     del v10
00:02:36 v #2909 > > │     if v22:
00:02:36 v #2910 > > │         del v22
00:02:36 v #2911 > > │         raise Exception(v16)
00:02:36 v #2912 > > │     else:
00:02:36 v #2913 > > │         del v16, v22
00:02:36 v #2914 > > │         return
00:02:36 v #2915 > > │ def main_body():
00:02:36 v #2916 > > │     return method0()
00:02:36 v #2917 > > │
00:02:36 v #2918 > > │ def main():
00:02:36 v #2919 > > │     r = main_body()
00:02:36 v #2920 > > │     if cuda: cp.cuda.get_current_stream().synchronize() #
00:02:36 v #2921 > > This line is here so the `__trap()` calls on the kernel aren't missed.
00:02:36 v #2922 > > │     return r
00:02:36 v #2923 > > │
00:02:36 v #2924 > > │ if __name__ == '__main__': result = main(); None if result is
00:02:36 v #2925 > > None else print(result)
00:02:36 v #2926 > > │
00:02:36 v #2927 > > │ .fsx output:
00:02:36 v #2928 > > │ __assert_eq / actual: "1
00:02:36 v #2929 > > │ 2
00:02:36 v #2930 > > │ 3" / expected: "1
00:02:36 v #2931 > > │ 2
00:02:36 v #2932 > > │ 3"
00:02:36 v #2933 > > │
00:02:36 v #2934 > >
00:02:36 v #2935 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:36 v #2936 > > │ ### concat_list_interpolation
00:02:36 v #2937 > >
00:02:36 v #2938 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:36 v #2939 > > inl concat_list_interpolation separator input =
00:02:36 v #2940 > >     (input, { acc = ""; sep = "" })
00:02:36 v #2941 > >     ||> listm.foldBack fun (x : string) { acc sep } =>
00:02:36 v #2942 > >         backend_switch {
00:02:36 v #2943 > >             Fsharp = fun () => { acc = $'$"{!x}{!sep}{!acc}"' : string; sep =
00:02:36 v #2944 > > separator }
00:02:36 v #2945 > >             Python = fun () => { acc = $'f"{!x}{!sep}{!acc}"' : string; sep =
00:02:36 v #2946 > > separator }
00:02:36 v #2947 > >         }
00:02:36 v #2948 > >     |> fun { acc } => acc
00:02:36 v #2949 > >
00:02:36 v #2950 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:36 v #2951 > > //// test
00:02:36 v #2952 > > ///! fsharp
00:02:36 v #2953 > > ///! cuda
00:02:36 v #2954 > > ///! rust
00:02:36 v #2955 > > ///! typescript
00:02:36 v #2956 > > ///! python
00:02:36 v #2957 > > //// print_code
00:02:36 v #2958 > >
00:02:36 v #2959 > > [[
00:02:36 v #2960 > >     "1"
00:02:36 v #2961 > >     "2"
00:02:36 v #2962 > >     "3"
00:02:36 v #2963 > > ]]
00:02:36 v #2964 > > |> fun x =>
00:02:36 v #2965 > >     inl code = (x : _) |> concat_list_interpolation "\n"
00:02:36 v #2966 > >     code
00:02:36 v #2967 > >     |> _assert_eq "1\n2\n3"
00:02:44 v #2968 > >
00:02:44 v #2969 > > ── [ 7.84s - return value ] ────────────────────────────────────────────────────
00:02:44 v #2970 > > │
00:02:44 v #2971 > > │ .py output (Cuda):
00:02:44 v #2972 > > │ __assert_eq / actual: 1
00:02:44 v #2973 > > │ 2
00:02:44 v #2974 > > │ 3 / expected: 1
00:02:44 v #2975 > > │ 2
00:02:44 v #2976 > > │ 3
00:02:44 v #2977 > > │
00:02:44 v #2978 > > │
00:02:44 v #2979 > > │ .rs output:
00:02:44 v #2980 > > │ __assert_eq / actual: "1
00:02:44 v #2981 > > │ 2
00:02:44 v #2982 > > │ 3" / expected: "1
00:02:44 v #2983 > > │ 2
00:02:44 v #2984 > > │ 3"
00:02:44 v #2985 > > │
00:02:44 v #2986 > > │
00:02:44 v #2987 > > │ .ts output:
00:02:44 v #2988 > > │ __assert_eq / actual: 1
00:02:44 v #2989 > > │ 2
00:02:44 v #2990 > > │ 3 / expected: 1
00:02:44 v #2991 > > │ 2
00:02:44 v #2992 > > │ 3
00:02:44 v #2993 > > │
00:02:44 v #2994 > > │
00:02:44 v #2995 > > │ .py output:
00:02:44 v #2996 > > │ __assert_eq / actual: 1
00:02:44 v #2997 > > │ 2
00:02:44 v #2998 > > │ 3 / expected: 1
00:02:44 v #2999 > > │ 2
00:02:44 v #3000 > > │ 3
00:02:44 v #3001 > > │
00:02:44 v #3002 > > │
00:02:44 v #3003 > > │
00:02:44 v #3004 > > │
00:02:44 v #3005 > > │
00:02:44 v #3006 > >
00:02:44 v #3007 > > ── [ 7.84s - stdout ] ──────────────────────────────────────────────────────────
00:02:44 v #3008 > > │ .fsx:
00:02:44 v #3009 > > │ let rec method1 (v0 : bool) : bool =
00:02:44 v #3010 > > │     v0
00:02:44 v #3011 > > │ and closure0 (v0 : string) () : unit =
00:02:44 v #3012 > > │     let v1 : (string -> unit) = System.Console.WriteLine
00:02:44 v #3013 > > │     v1 v0
00:02:44 v #3014 > > │ and method0 () : unit =
00:02:44 v #3015 > > │     let v0 : string = "3"
00:02:44 v #3016 > > │     let v1 : string = ""
00:02:44 v #3017 > > │     let v2 : string = $"{v0}{v1}{v1}"
00:02:44 v #3018 > > │     let v7 : string = "\n"
00:02:44 v #3019 > > │     let v8 : string = "2"
00:02:44 v #3020 > > │     let v9 : string = $"{v8}{v7}{v2}"
00:02:44 v #3021 > > │     let v13 : string = "1"
00:02:44 v #3022 > > │     let v14 : string = $"{v13}{v7}{v9}"
00:02:44 v #3023 > > │     let v18 : bool = v14 = "1\n2\n3"
00:02:44 v #3024 > > │     let v20 : bool =
00:02:44 v #3025 > > │         if v18 then
00:02:44 v #3026 > > │             true
00:02:44 v #3027 > > │         else
00:02:44 v #3028 > > │             method1(v18)
00:02:44 v #3029 > > │     let v21 : string = "__assert_eq"
00:02:44 v #3030 > > │     let v22 : string = "1\n2\n3"
00:02:44 v #3031 > > │     let v23 : string = $"{v21} / actual: %A{v14} / expected:
00:02:44 v #3032 > > %A{v22}"
00:02:44 v #3033 > > │     let v26 : unit = ()
00:02:44 v #3034 > > │     let v27 : (unit -> unit) = closure0(v23)
00:02:44 v #3035 > > │     let v28 : unit = (fun () -> v27 (); v26) ()
00:02:44 v #3036 > > │     let v30 : bool = v20 = false
00:02:44 v #3037 > > │     if v30 then
00:02:44 v #3038 > > │         failwith<unit> v23
00:02:44 v #3039 > > │ method0()
00:02:44 v #3040 > > │
00:02:44 v #3041 > > │
00:02:44 v #3042 > > │ .rs:
00:02:44 v #3043 > > │ #![allow(dead_code)]
00:02:44 v #3044 > > │ #![allow(non_camel_case_types)]
00:02:44 v #3045 > > │ #![allow(non_snake_case)]
00:02:44 v #3046 > > │ #![allow(non_upper_case_globals)]
00:02:44 v #3047 > > │ #![allow(unreachable_code)]
00:02:44 v #3048 > > │ #![allow(unused_attributes)]
00:02:44 v #3049 > > │ #![allow(unused_imports)]
00:02:44 v #3050 > > │ #![allow(unused_macros)]
00:02:44 v #3051 > > │ #![allow(unused_parens)]
00:02:44 v #3052 > > │ #![allow(unused_variables)]
00:02:44 v #3053 > > │ #![allow(unused_assignments)]
00:02:44 v #3054 > > │ mod module_6ff740fe {
00:02:44 v #3055 > > │     pub mod Spiral {
00:02:44 v #3056 > > │         use super::*;
00:02:44 v #3057 > > │         use fable_library_rust::NativeArray_::new_array;
00:02:44 v #3058 > > │         use fable_library_rust::Native_::on_startup;
00:02:44 v #3059 > > │         use fable_library_rust::String_::concat;
00:02:44 v #3060 > > │         use fable_library_rust::String_::printfn;
00:02:44 v #3061 > > │         use fable_library_rust::String_::sprintf;
00:02:44 v #3062 > > │         use fable_library_rust::String_::string;
00:02:44 v #3063 > > │         pub fn method1(v0: bool) -> bool {
00:02:44 v #3064 > > │             v0
00:02:44 v #3065 > > │         }
00:02:44 v #3066 > > │         pub fn closure0(v0: string, unitVar: ()) {
00:02:44 v #3067 > > │             printfn!("{0}", v0);
00:02:44 v #3068 > > │         }
00:02:44 v #3069 > > │         pub fn method0() {
00:02:44 v #3070 > > │             let v14: string = concat(new_array(&[
00:02:44 v #3071 > > │                 string("1"),
00:02:44 v #3072 > > │                 string("\n"),
00:02:44 v #3073 > > │                 concat(new_array(&[
00:02:44 v #3074 > > │                     string("2"),
00:02:44 v #3075 > > │                     string("\n"),
00:02:44 v #3076 > > │                     concat(new_array(&[string("3"),
00:02:44 v #3077 > > string(""), string("")])),
00:02:44 v #3078 > > │                 ])),
00:02:44 v #3079 > > │             ]));
00:02:44 v #3080 > > │             let v18: bool = (v14.clone()) ==
00:02:44 v #3081 > > string("1\n2\n3");
00:02:44 v #3082 > > │             let v20: bool = if v18 { true } else {
00:02:44 v #3083 > > Spiral::method1(v18) };
00:02:44 v #3084 > > │             let v23: string = sprintf!(
00:02:44 v #3085 > > │                 "{} / actual: {:?} / expected: {:?}",
00:02:44 v #3086 > > │                 string("__assert_eq"),
00:02:44 v #3087 > > │                 v14,
00:02:44 v #3088 > > │                 string("1\n2\n3")
00:02:44 v #3089 > > │             );
00:02:44 v #3090 > > │             let v28: () = {
00:02:44 v #3091 > > │                 Spiral::closure0(v23.clone(), ());
00:02:44 v #3092 > > │                 ()
00:02:44 v #3093 > > │             };
00:02:44 v #3094 > > │             if (v20) == false {
00:02:44 v #3095 > > │                 panic!("{}", v23,);
00:02:44 v #3096 > > │             }
00:02:44 v #3097 > > │         }
00:02:44 v #3098 > > │         // on_startup!(Spiral::method0());
00:02:44 v #3099 > > │     }
00:02:44 v #3100 > > │ }
00:02:44 v #3101 > > │ pub use module_6ff740fe::*;
00:02:44 v #3102 > > │
00:02:44 v #3103 > > │
00:02:44 v #3104 > > │
00:02:44 v #3105 > > │ pub fn main() -> Result<(), String> { Ok(Spiral::method0()) }
00:02:44 v #3106 > > │
00:02:44 v #3107 > > │ .ts:
00:02:44 v #3108 > > │ import { interpolate, toText, concat } from
00:02:44 v #3109 > > "./fable_modules/fable-library-ts.5.0.0-alpha.2/String.js";
00:02:44 v #3110 > > │
00:02:44 v #3111 > > │ export function method1(v0: boolean): boolean {
00:02:44 v #3112 > > │     return v0;
00:02:44 v #3113 > > │ }
00:02:44 v #3114 > > │
00:02:44 v #3115 > > │ export function closure0(v0: string, unitVar: void): void {
00:02:44 v #3116 > > │     console.log(v0);
00:02:44 v #3117 > > │ }
00:02:44 v #3118 > > │
00:02:44 v #3119 > > │ export function method0(): void {
00:02:44 v #3120 > > │     const v14: string = concat("1", "\n", ...concat("2",
00:02:44 v #3121 > > "\n", ...concat("3", "", ..."")));
00:02:44 v #3122 > > │     const v18: boolean = v14 === "1\n2\n3";
00:02:44 v #3123 > > │     const v20: boolean = v18 ? true : method1(v18);
00:02:44 v #3124 > > │     const v23: string = toText(interpolate("%P() / actual:
00:02:44 v #3125 > > %A%P() / expected: %A%P()", ["__assert_eq", v14, "1\n2\n3"]));
00:02:44 v #3126 > > │     let v28: any;
00:02:44 v #3127 > > │     closure0(v23, undefined);
00:02:44 v #3128 > > │     v28 = undefined;
00:02:44 v #3129 > > │     if (v20 === false) {
00:02:44 v #3130 > > │         throw new Error(v23);
00:02:44 v #3131 > > │     }
00:02:44 v #3132 > > │ }
00:02:44 v #3133 > > │
00:02:44 v #3134 > > │ method0();
00:02:44 v #3135 > > │
00:02:44 v #3136 > > │
00:02:44 v #3137 > > │ .py:
00:02:44 v #3138 > > │ from fable_modules.fable_library.string_ import (concat,
00:02:44 v #3139 > > to_text, interpolate)
00:02:44 v #3140 > > │
00:02:44 v #3141 > > │ def method1(v0: bool) -> bool:
00:02:44 v #3142 > > │     return v0
00:02:44 v #3143 > > │
00:02:44 v #3144 > > │
00:02:44 v #3145 > > │ def closure0(v0: str, unit_var: None) -> None:
00:02:44 v #3146 > > │     print(v0)
00:02:44 v #3147 > > │
00:02:44 v #3148 > > │
00:02:44 v #3149 > > │ def method0(__unit: None=None) -> None:
00:02:44 v #3150 > > │     v14: str = concat("1", "\n", *concat("2", "\n",
00:02:44 v #3151 > > *concat("3", "", *"")))
00:02:44 v #3152 > > │     v18: bool = v14 == "1\n2\n3"
00:02:44 v #3153 > > │     v20: bool = True if v18 else method1(v18)
00:02:44 v #3154 > > │     v23: str = to_text(interpolate("%P() / actual: %A%P()
00:02:44 v #3155 > > expected: %A%P()", ["__assert_eq", v14, "1\n2\n3"]))
00:02:44 v #3156 > > │     v28: None
00:02:44 v #3157 > > │     closure0(v23, None)
00:02:44 v #3158 > > │     v28 = None
00:02:44 v #3159 > > │     if v20 == False:
00:02:44 v #3160 > > │         raise Exception(v23)
00:02:44 v #3161 > > │
00:02:44 v #3162 > > │
00:02:44 v #3163 > > │
00:02:44 v #3164 > > │ method0()
00:02:44 v #3165 > > │
00:02:44 v #3166 > > │
00:02:44 v #3167 > > │ .py (Cuda):
00:02:44 v #3168 > > │ kernel = r"""
00:02:44 v #3169 > > │ """
00:02:44 v #3170 > > │ class static_array():
00:02:44 v #3171 > > │     def __init__(self, length):
00:02:44 v #3172 > > │         self.ptr = []
00:02:44 v #3173 > > │         for _ in range(length):
00:02:44 v #3174 > > │             self.ptr.append(None)
00:02:44 v #3175 > > │
00:02:44 v #3176 > > │     def __getitem__(self, index):
00:02:44 v #3177 > > │         assert 0 <= index < len(self.ptr), "The get index
00:02:44 v #3178 > > needs to be in range."
00:02:44 v #3179 > > │         return self.ptr[index]
00:02:44 v #3180 > > │
00:02:44 v #3181 > > │     def __setitem__(self, index, value):
00:02:44 v #3182 > > │         assert 0 <= index < len(self.ptr), "The set index
00:02:44 v #3183 > > needs to be in range."
00:02:44 v #3184 > > │         self.ptr[index] = value
00:02:44 v #3185 > > │
00:02:44 v #3186 > > │ class static_array_list(static_array):
00:02:44 v #3187 > > │     def __init__(self, length):
00:02:44 v #3188 > > │         super().__init__(length)
00:02:44 v #3189 > > │         self.length = 0
00:02:44 v #3190 > > │
00:02:44 v #3191 > > │     def __getitem__(self, index):
00:02:44 v #3192 > > │         assert 0 <= index < self.length, "The get index needs
00:02:44 v #3193 > > to be in range."
00:02:44 v #3194 > > │         return self.ptr[index]
00:02:44 v #3195 > > │
00:02:44 v #3196 > > │     def __setitem__(self, index, value):
00:02:44 v #3197 > > │         assert 0 <= index < self.length, "The set index needs
00:02:44 v #3198 > > to be in range."
00:02:44 v #3199 > > │         self.ptr[index] = value
00:02:44 v #3200 > > │
00:02:44 v #3201 > > │     def push(self,value):
00:02:44 v #3202 > > │         assert (self.length < len(self.ptr)), "The length
00:02:44 v #3203 > > before pushing has to be less than the maximum length of the array."
00:02:44 v #3204 > > │         self.ptr[self.length] = value
00:02:44 v #3205 > > │         self.length += 1
00:02:44 v #3206 > > │
00:02:44 v #3207 > > │     def pop(self):
00:02:44 v #3208 > > │         assert (0 < self.length), "The length before popping
00:02:44 v #3209 > > has to be greater than 0."
00:02:44 v #3210 > > │         self.length -= 1
00:02:44 v #3211 > > │         return self.ptr[self.length]
00:02:44 v #3212 > > │
00:02:44 v #3213 > > │     def unsafe_set_length(self,i):
00:02:44 v #3214 > > │         assert 0 <= i <= len(self.ptr), "The new length has
00:02:44 v #3215 > > to be in range."
00:02:44 v #3216 > > │         self.length = i
00:02:44 v #3217 > > │
00:02:44 v #3218 > > │ class dynamic_array(static_array):
00:02:44 v #3219 > > │     pass
00:02:44 v #3220 > > │
00:02:44 v #3221 > > │ class dynamic_array_list(static_array_list):
00:02:44 v #3222 > > │     def length_(self): return self.length
00:02:44 v #3223 > > │
00:02:44 v #3224 > > │ import cupy as cp
00:02:44 v #3225 > > │ import numpy as np
00:02:44 v #3226 > > │ from dataclasses import dataclass
00:02:44 v #3227 > > │ from typing import NamedTuple, Union, Callable, Tuple
00:02:44 v #3228 > > │ i8 = int; i16 = int; i32 = int; i64 = int; u8 = int; u16 =
00:02:44 v #3229 > > int; u32 = int; u64 = int; f32 = float; f64 = float; char = str; string = str
00:02:44 v #3230 > > │ cuda = False
00:02:44 v #3231 > > │
00:02:44 v #3232 > > │ def method1(v0 : bool) -> bool:
00:02:44 v #3233 > > │     return v0
00:02:44 v #3234 > > │ def method0() -> None:
00:02:44 v #3235 > > │     v4 = "3"
00:02:44 v #3236 > > │     v5 = ""
00:02:44 v #3237 > > │     v6 = f"{v4}{v5}{v5}"
00:02:44 v #3238 > > │     del v4, v5
00:02:44 v #3239 > > │     v9 = "\n"
00:02:44 v #3240 > > │     v12 = "2"
00:02:44 v #3241 > > │     v13 = f"{v12}{v9}{v6}"
00:02:44 v #3242 > > │     del v6, v12
00:02:44 v #3243 > > │     v18 = "1"
00:02:44 v #3244 > > │     v19 = f"{v18}{v9}{v13}"
00:02:44 v #3245 > > │     del v9, v13, v18
00:02:44 v #3246 > > │     v22 = v19 == "1\n2\n3"
00:02:44 v #3247 > > │     if v22:
00:02:44 v #3248 > > │         v24 = True
00:02:44 v #3249 > > │     else:
00:02:44 v #3250 > > │         v24 = method1(v22)
00:02:44 v #3251 > > │     del v22
00:02:44 v #3252 > > │     v28 = "__assert_eq"
00:02:44 v #3253 > > │     v29 = "1\n2\n3"
00:02:44 v #3254 > > │     v30 = f"{v28} / actual: {v19} / expected: {v29}"
00:02:44 v #3255 > > │     del v19, v28, v29
00:02:44 v #3256 > > │     print(v30)
00:02:44 v #3257 > > │     v36 = v24 == False
00:02:44 v #3258 > > │     del v24
00:02:44 v #3259 > > │     if v36:
00:02:44 v #3260 > > │         del v36
00:02:44 v #3261 > > │         raise Exception(v30)
00:02:44 v #3262 > > │     else:
00:02:44 v #3263 > > │         del v30, v36
00:02:44 v #3264 > > │         return
00:02:44 v #3265 > > │ def main_body():
00:02:44 v #3266 > > │     return method0()
00:02:44 v #3267 > > │
00:02:44 v #3268 > > │ def main():
00:02:44 v #3269 > > │     r = main_body()
00:02:44 v #3270 > > │     if cuda: cp.cuda.get_current_stream().synchronize() #
00:02:44 v #3271 > > This line is here so the `__trap()` calls on the kernel aren't missed.
00:02:44 v #3272 > > │     return r
00:02:44 v #3273 > > │
00:02:44 v #3274 > > │ if __name__ == '__main__': result = main(); None if result is
00:02:44 v #3275 > > None else print(result)
00:02:44 v #3276 > > │
00:02:44 v #3277 > > │ .fsx output:
00:02:44 v #3278 > > │ __assert_eq / actual: "1
00:02:44 v #3279 > > │ 2
00:02:44 v #3280 > > │ 3" / expected: "1
00:02:44 v #3281 > > │ 2
00:02:44 v #3282 > > │ 3"
00:02:44 v #3283 > > │
00:02:44 v #3284 > >
00:02:44 v #3285 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:44 v #3286 > > │ ### ellipsis
00:02:44 v #3287 > >
00:02:44 v #3288 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:44 v #3289 > > inl ellipsis (max : i32) (s : string) =
00:02:44 v #3290 > >     if sm.length s <= max
00:02:44 v #3291 > >     then s
00:02:44 v #3292 > >     else s |> slice 0 (max - 1) |> fun x => $'!x + "..."'
00:02:44 v #3293 > >
00:02:44 v #3294 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:44 v #3295 > > //// test
00:02:44 v #3296 > > ///! fsharp
00:02:44 v #3297 > > ///! cuda
00:02:44 v #3298 > > ///! rust
00:02:44 v #3299 > > ///! typescript
00:02:44 v #3300 > > ///! python
00:02:44 v #3301 > >
00:02:44 v #3302 > > "12345"
00:02:44 v #3303 > > |> ellipsis 2
00:02:44 v #3304 > > |> _assert_eq "12..."
00:02:44 v #3305 > >
00:02:44 v #3306 > > "12345"
00:02:44 v #3307 > > |> ellipsis 4
00:02:44 v #3308 > > |> _assert_eq "1234..."
00:02:52 v #3309 > >
00:02:52 v #3310 > > ── [ 7.94s - return value ] ────────────────────────────────────────────────────
00:02:52 v #3311 > > │
00:02:52 v #3312 > > │ .py output (Cuda):
00:02:52 v #3313 > > │ __assert_eq / actual: 12... / expected: 12...
00:02:52 v #3314 > > │ __assert_eq / actual: 1234... / expected: 1234...
00:02:52 v #3315 > > │
00:02:52 v #3316 > > │
00:02:52 v #3317 > > │ .rs output:
00:02:52 v #3318 > > │ __assert_eq / actual: "12..." / expected: "12..."
00:02:52 v #3319 > > │ __assert_eq / actual: "1234..." / expected: "1234..."
00:02:52 v #3320 > > │
00:02:52 v #3321 > > │
00:02:52 v #3322 > > │ .ts output:
00:02:52 v #3323 > > │ __assert_eq / actual: 12... / expected: 12...
00:02:52 v #3324 > > │ __assert_eq / actual: 1234... / expected: 1234...
00:02:52 v #3325 > > │
00:02:52 v #3326 > > │
00:02:52 v #3327 > > │ .py output:
00:02:52 v #3328 > > │ __assert_eq / actual: 12... / expected: 12...
00:02:52 v #3329 > > │ __assert_eq / actual: 1234... / expected: 1234...
00:02:52 v #3330 > > │
00:02:52 v #3331 > > │
00:02:52 v #3332 > > │
00:02:52 v #3333 > >
00:02:52 v #3334 > > ── [ 7.94s - stdout ] ──────────────────────────────────────────────────────────
00:02:52 v #3335 > > │ .fsx output:
00:02:52 v #3336 > > │ __assert_eq / actual: "12..." / expected: "12..."
00:02:52 v #3337 > > │ __assert_eq / actual: "1234..." / expected: "1234..."
00:02:52 v #3338 > > │
00:02:52 v #3339 > >
00:02:52 v #3340 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:52 v #3341 > > │ ## fsharp
00:02:52 v #3342 > >
00:02:52 v #3343 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:52 v #3344 > > │ ### last_index_of
00:02:52 v #3345 > >
00:02:52 v #3346 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:52 v #3347 > > inl last_index_of (search : string) (s : string) : i32 =
00:02:52 v #3348 > >     $'!s.LastIndexOf !search '
00:02:52 v #3349 > >
00:02:52 v #3350 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:52 v #3351 > > │ ### index_of
00:02:52 v #3352 > >
00:02:52 v #3353 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:52 v #3354 > > inl index_of (search : string) (s : string) : i32 =
00:02:52 v #3355 > >     backend_switch {
00:02:52 v #3356 > >         Fsharp = fun () => $'!s.IndexOf !search ' : i32
00:02:52 v #3357 > >         Python = fun () => $'!s.find(!search)' : i32
00:02:52 v #3358 > >     }
00:02:53 v #3359 > >
00:02:53 v #3360 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:53 v #3361 > > │ ### replicate
00:02:53 v #3362 > >
00:02:53 v #3363 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:53 v #3364 > > inl replicate (n : int) (s : string) : string =
00:02:53 v #3365 > >     inl rec body i acc =
00:02:53 v #3366 > >         if i >= n
00:02:53 v #3367 > >         then acc
00:02:53 v #3368 > >         else loop (i + 1) (acc +. s)
00:02:53 v #3369 > >     and inl loop i = join_body_unit body n i
00:02:53 v #3370 > >     loop 0 ""
00:02:53 v #3371 > >
00:02:53 v #3372 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:53 v #3373 > > //// test
00:02:53 v #3374 > > ///! fsharp
00:02:53 v #3375 > > //// print_code
00:02:53 v #3376 > >
00:02:53 v #3377 > > "12"
00:02:53 v #3378 > > |> replicate 3
00:02:53 v #3379 > > |> _assert_eq "121212"
00:02:53 v #3380 > >
00:02:53 v #3381 > > ── [ 169.10ms - stdout ] ───────────────────────────────────────────────────────
00:02:53 v #3382 > > │ .fsx:
00:02:53 v #3383 > > │ let rec method1 (v0 : bool) : bool =
00:02:53 v #3384 > > │     v0
00:02:53 v #3385 > > │ and closure0 (v0 : string) () : unit =
00:02:53 v #3386 > > │     let v1 : (string -> unit) = System.Console.WriteLine
00:02:53 v #3387 > > │     v1 v0
00:02:53 v #3388 > > │ and method0 () : unit =
00:02:53 v #3389 > > │     let v0 : string = ""
00:02:53 v #3390 > > │     let v1 : string = "12"
00:02:53 v #3391 > > │     let v2 : string = v0 + v1
00:02:53 v #3392 > > │     let v3 : string = v2 + v1
00:02:53 v #3393 > > │     let v4 : string = v3 + v1
00:02:53 v #3394 > > │     let v5 : bool = v4 = "121212"
00:02:53 v #3395 > > │     let v7 : bool =
00:02:53 v #3396 > > │         if v5 then
00:02:53 v #3397 > > │             true
00:02:53 v #3398 > > │         else
00:02:53 v #3399 > > │             method1(v5)
00:02:53 v #3400 > > │     let v8 : string = "__assert_eq"
00:02:53 v #3401 > > │     let v9 : string = "121212"
00:02:53 v #3402 > > │     let v10 : string = $"{v8} / actual: %A{v4} / expected:
00:02:53 v #3403 > > %A{v9}"
00:02:53 v #3404 > > │     let v13 : unit = ()
00:02:53 v #3405 > > │     let v14 : (unit -> unit) = closure0(v10)
00:02:53 v #3406 > > │     let v15 : unit = (fun () -> v14 (); v13) ()
00:02:53 v #3407 > > │     let v17 : bool = v7 = false
00:02:53 v #3408 > > │     if v17 then
00:02:53 v #3409 > > │         failwith<unit> v10
00:02:53 v #3410 > > │ method0()
00:02:53 v #3411 > > │
00:02:53 v #3412 > > │
00:02:53 v #3413 > > │ __assert_eq / actual: "121212" / expected: "121212"
00:02:53 v #3414 > > │
00:02:53 v #3415 > >
00:02:53 v #3416 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:53 v #3417 > > //// test
00:02:53 v #3418 > > ///! fsharp
00:02:53 v #3419 > > ///! cuda
00:02:53 v #3420 > > ///! rust
00:02:53 v #3421 > > ///! typescript
00:02:53 v #3422 > > ///! python
00:02:53 v #3423 > >
00:02:53 v #3424 > > "12"
00:02:53 v #3425 > > |> replicate 3
00:02:53 v #3426 > > |> _assert_eq "121212"
00:03:01 v #3427 > >
00:03:01 v #3428 > > ── [ 7.72s - return value ] ────────────────────────────────────────────────────
00:03:01 v #3429 > > │ .py output (Cuda):
00:03:01 v #3430 > > │ __assert_eq / actual: 121212 / expected: 121212
00:03:01 v #3431 > > │
00:03:01 v #3432 > > │ .rs output:
00:03:01 v #3433 > > │ __assert_eq / actual: "121212" / expected: "121212"
00:03:01 v #3434 > > │
00:03:01 v #3435 > > │ .ts output:
00:03:01 v #3436 > > │ __assert_eq / actual: 121212 / expected: 121212
00:03:01 v #3437 > > │
00:03:01 v #3438 > > │ .py output:
00:03:01 v #3439 > > │ __assert_eq / actual: 121212 / expected: 121212
00:03:01 v #3440 > > │
00:03:01 v #3441 > > │
00:03:01 v #3442 > >
00:03:01 v #3443 > > ── [ 7.72s - stdout ] ──────────────────────────────────────────────────────────
00:03:01 v #3444 > > │ .fsx output:
00:03:01 v #3445 > > │ __assert_eq / actual: "121212" / expected: "121212"
00:03:01 v #3446 > > │
00:03:01 v #3447 > >
00:03:01 v #3448 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:01 v #3449 > > │ ### obj_to_string
00:03:01 v #3450 > >
00:03:01 v #3451 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:01 v #3452 > > inl obj_to_string x : string =
00:03:01 v #3453 > >     backend_switch {
00:03:01 v #3454 > >         Fsharp = fun () => x |> $'_.ToString()' : string
00:03:01 v #3455 > >         Python = fun () => $'str(!x)' : string
00:03:01 v #3456 > >     }
00:03:01 v #3457 > >
00:03:01 v #3458 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:01 v #3459 > > │ ### pad_left
00:03:01 v #3460 > >
00:03:01 v #3461 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:01 v #3462 > > inl pad_left (total_width : int) (padding_char : char) (s : string) : string =
00:03:01 v #3463 > >     inl padding = padding_char |> obj_to_string |> replicate (total_width -
00:03:01 v #3464 > > length s)
00:03:01 v #3465 > >     padding +. s
00:03:01 v #3466 > >
00:03:01 v #3467 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:01 v #3468 > > │ ### pad_right
00:03:01 v #3469 > >
00:03:01 v #3470 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:01 v #3471 > > inl pad_right (total_width : int) (padding_char : char) (s : string) : string =
00:03:01 v #3472 > >     inl padding = padding_char |> obj_to_string |> replicate (total_width -
00:03:01 v #3473 > > length s)
00:03:01 v #3474 > >     s +. padding
00:03:01 v #3475 > >
00:03:01 v #3476 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:01 v #3477 > > //// test
00:03:01 v #3478 > > ///! fsharp
00:03:01 v #3479 > > ///! cuda
00:03:01 v #3480 > > ///! rust
00:03:01 v #3481 > > ///! typescript
00:03:01 v #3482 > > ///! python
00:03:01 v #3483 > >
00:03:01 v #3484 > > "123"
00:03:01 v #3485 > > |> pad_right 6 ' '
00:03:01 v #3486 > > |> _assert_eq "123   "
00:03:09 v #3487 > >
00:03:09 v #3488 > > ── [ 7.83s - return value ] ────────────────────────────────────────────────────
00:03:09 v #3489 > > │ .py output (Cuda):
00:03:09 v #3490 > > │ __assert_eq / actual: 123    / expected: 123
00:03:09 v #3491 > > │
00:03:09 v #3492 > > │ .rs output:
00:03:09 v #3493 > > │ __assert_eq / actual: "123   " / expected: "123   "
00:03:09 v #3494 > > │
00:03:09 v #3495 > > │ .ts output:
00:03:09 v #3496 > > │ __assert_eq / actual: 123    / expected: 123
00:03:09 v #3497 > > │
00:03:09 v #3498 > > │ .py output:
00:03:09 v #3499 > > │ __assert_eq / actual: 123    / expected: 123
00:03:09 v #3500 > > │
00:03:09 v #3501 > > │
00:03:09 v #3502 > >
00:03:09 v #3503 > > ── [ 7.83s - stdout ] ──────────────────────────────────────────────────────────
00:03:09 v #3504 > > │ .fsx output:
00:03:09 v #3505 > > │ __assert_eq / actual: "123   " / expected: "123   "
00:03:09 v #3506 > > │
00:03:09 v #3507 > >
00:03:09 v #3508 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:09 v #3509 > > │ ### convert_to_utf32
00:03:09 v #3510 > >
00:03:09 v #3511 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:09 v #3512 > > inl convert_to_utf32 (c : char) : int =
00:03:09 v #3513 > >     backend_switch {
00:03:09 v #3514 > >         Fsharp = fun () =>
00:03:09 v #3515 > >             run_target_args' c function
00:03:09 v #3516 > >             | Fsharp (Native) => fun c => $'System.Char.ConvertToUtf32 (string
00:03:09 v #3517 > > !c, 0)' : int
00:03:09 v #3518 > >             | _ => fun c => c |> i32
00:03:09 v #3519 > >         Python = fun () => $'ord(!c)' : int
00:03:09 v #3520 > >     }
00:03:09 v #3521 > >
00:03:09 v #3522 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:09 v #3523 > > │ ### ends_with
00:03:09 v #3524 > >
00:03:09 v #3525 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:09 v #3526 > > inl ends_with (value : string) (s : string) : bool =
00:03:09 v #3527 > >     backend_switch {
00:03:09 v #3528 > >         Fsharp = fun () => $'!s.EndsWith (!value, false, null)' : bool
00:03:09 v #3529 > >         Python = fun () => $'!s.endswith(!value)' : bool
00:03:09 v #3530 > >     }
00:03:09 v #3531 > >
00:03:09 v #3532 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:09 v #3533 > > │ ### starts_with
00:03:09 v #3534 > >
00:03:09 v #3535 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:09 v #3536 > > inl starts_with (value : string) (s : string) : bool =
00:03:09 v #3537 > >     backend_switch {
00:03:09 v #3538 > >         Fsharp = fun () => $'!s.StartsWith (!value, false, null)' : bool
00:03:09 v #3539 > >         Python = fun () => $'!s.startswith(!value)' : bool
00:03:09 v #3540 > >     }
00:03:09 v #3541 > >
00:03:09 v #3542 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:09 v #3543 > > │ ### is_white_space
00:03:09 v #3544 > >
00:03:09 v #3545 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:09 v #3546 > > inl is_white_space (c : char) : bool =
00:03:09 v #3547 > >     c |> $'System.Char.IsWhiteSpace'
00:03:10 v #3548 > >
00:03:10 v #3549 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:10 v #3550 > > │ ### substring
00:03:10 v #3551 > >
00:03:10 v #3552 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:10 v #3553 > > inl substring (start : i32) (len : i32) (str : string) : string =
00:03:10 v #3554 > >     $'!str.Substring (!start, !len)'
00:03:10 v #3555 > >
00:03:10 v #3556 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:10 v #3557 > > │ ### to_lower
00:03:10 v #3558 > >
00:03:10 v #3559 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:10 v #3560 > > inl to_lower (input : string) : string =
00:03:10 v #3561 > >     backend_switch {
00:03:10 v #3562 > >         Fsharp = fun () => $'!input.ToLower' () : string
00:03:10 v #3563 > >         Python = fun () => $'!input.lower()' : string
00:03:10 v #3564 > >     }
00:03:10 v #3565 > >
00:03:10 v #3566 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:10 v #3567 > > │ ### to_upper
00:03:10 v #3568 > >
00:03:10 v #3569 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:10 v #3570 > > inl to_upper (input : string) : string =
00:03:10 v #3571 > >     $'!input.ToUpper' ()
00:03:10 v #3572 > >
00:03:10 v #3573 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:10 v #3574 > > │ ### char_to_upper
00:03:10 v #3575 > >
00:03:10 v #3576 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:10 v #3577 > > inl char_to_upper (input : char) : char =
00:03:10 v #3578 > >     backend_switch {
00:03:10 v #3579 > >         Fsharp = fun () => $'System.Char.ToUpper !input ' : char
00:03:10 v #3580 > >         Python = fun () => $'!input.upper()' : char
00:03:10 v #3581 > >     }
00:03:10 v #3582 > >
00:03:10 v #3583 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:10 v #3584 > > │ ### string_builder
00:03:10 v #3585 > >
00:03:10 v #3586 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:10 v #3587 > > nominal string_builder_python =
00:03:10 v #3588 > >     `(
00:03:10 v #3589 > >         global "import io"
00:03:10 v #3590 > >         $'' : $'io.StringIO'
00:03:10 v #3591 > >     )
00:03:10 v #3592 > > type string_builder_switch =
00:03:10 v #3593 > >     {
00:03:10 v #3594 > >         Fsharp : $'System.Text.StringBuilder'
00:03:10 v #3595 > >         Python : string_builder_python
00:03:10 v #3596 > >     }
00:03:10 v #3597 > > nominal string_builder = $'backend_switch `(string_builder_switch)'
00:03:10 v #3598 > >
00:03:10 v #3599 > > inl string_builder (initial : string) : string_builder =
00:03:10 v #3600 > >     inl initial =
00:03:10 v #3601 > >         if initial = ""
00:03:10 v #3602 > >         then join initial
00:03:10 v #3603 > >         else initial
00:03:10 v #3604 > >
00:03:10 v #3605 > >     backend_switch {
00:03:10 v #3606 > >         Fsharp = fun () => initial |> $'`string_builder ' : string_builder
00:03:10 v #3607 > >         Python = fun () =>
00:03:10 v #3608 > >             global "import io"
00:03:10 v #3609 > >             global "class CustomStringIO(io.StringIO):\n    def __init__(self,
00:03:10 v #3610 > > init=''):\n        super().__init__()\n        if init != '': self.write(init)\n
00:03:10 v #3611 > > def __str__(self): return self.getvalue()\n    def __repr__(self): return
00:03:10 v #3612 > > self.getvalue()"
00:03:10 v #3613 > >             $'CustomStringIO(!initial)' : string_builder
00:03:10 v #3614 > >     }
00:03:10 v #3615 > >
00:03:10 v #3616 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:10 v #3617 > > │ ### builder_append
00:03:10 v #3618 > >
00:03:10 v #3619 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:10 v #3620 > > inl builder_append (item : string) (sb : string_builder) : string_builder =
00:03:10 v #3621 > >     backend_switch {
00:03:10 v #3622 > >         Fsharp = fun () =>
00:03:10 v #3623 > >             ($'!sb.Append' item : string_builder) |> ignore
00:03:10 v #3624 > >             sb
00:03:10 v #3625 > >         Python = fun () =>
00:03:10 v #3626 > >             ($'!sb.write(!item)' : int) |> ignore
00:03:10 v #3627 > >             sb
00:03:10 v #3628 > >     }
00:03:11 v #3629 > >
00:03:11 v #3630 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:11 v #3631 > > //// test
00:03:11 v #3632 > > ///! fsharp
00:03:11 v #3633 > > ///! cuda
00:03:11 v #3634 > > ///! rust
00:03:11 v #3635 > > ///! typescript
00:03:11 v #3636 > > ///! python
00:03:11 v #3637 > >
00:03:11 v #3638 > > "ab"
00:03:11 v #3639 > > |> string_builder
00:03:11 v #3640 > > |> builder_append "cd"
00:03:11 v #3641 > > |> builder_append "ef"
00:03:11 v #3642 > > |> sm'.obj_to_string
00:03:11 v #3643 > > |> _assert_eq "abcdef"
00:03:18 v #3644 > >
00:03:18 v #3645 > > ── [ 7.66s - return value ] ────────────────────────────────────────────────────
00:03:18 v #3646 > > │ .py output (Cuda):
00:03:18 v #3647 > > │ __assert_eq / actual: abcdef / expected: abcdef
00:03:18 v #3648 > > │
00:03:18 v #3649 > > │ .rs output:
00:03:18 v #3650 > > │ __assert_eq / actual: "abcdef" / expected: "abcdef"
00:03:18 v #3651 > > │
00:03:18 v #3652 > > │ .ts output:
00:03:18 v #3653 > > │ __assert_eq / actual: abcdef / expected: abcdef
00:03:18 v #3654 > > │
00:03:18 v #3655 > > │ .py output:
00:03:18 v #3656 > > │ __assert_eq / actual: abcdef / expected: abcdef
00:03:18 v #3657 > > │
00:03:18 v #3658 > > │
00:03:18 v #3659 > >
00:03:18 v #3660 > > ── [ 7.66s - stdout ] ──────────────────────────────────────────────────────────
00:03:18 v #3661 > > │ .fsx output:
00:03:18 v #3662 > > │ __assert_eq / actual: "abcdef" / expected: "abcdef"
00:03:18 v #3663 > > │
00:03:18 v #3664 > >
00:03:18 v #3665 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:18 v #3666 > > │ ### builder_append_line
00:03:18 v #3667 > >
00:03:18 v #3668 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:18 v #3669 > > inl builder_append_line (sb : string_builder) : string_builder =
00:03:18 v #3670 > >     backend_switch {
00:03:18 v #3671 > >         Fsharp = fun () =>
00:03:18 v #3672 > >             ($'!sb.AppendLine ()' : string_builder) |> ignore
00:03:18 v #3673 > >             sb
00:03:18 v #3674 > >         Python = fun () =>
00:03:18 v #3675 > >             sb |> builder_append "\n"
00:03:18 v #3676 > >     }
00:03:18 v #3677 > >
00:03:18 v #3678 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:18 v #3679 > > │ ### builder_replace
00:03:18 v #3680 > >
00:03:18 v #3681 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:18 v #3682 > > inl builder_replace (old : string) (new : string) (sb : string_builder) :
00:03:18 v #3683 > > string_builder =
00:03:18 v #3684 > >     backend_switch {
00:03:18 v #3685 > >         Fsharp = fun () =>
00:03:18 v #3686 > >             ($'!sb.Replace (!old, !new)' : string_builder) |> ignore
00:03:18 v #3687 > >             sb
00:03:18 v #3688 > >         Python = fun () =>
00:03:18 v #3689 > >             ($'!sb.getvalue().replace(!old, !new)' : string) |> string_builder
00:03:18 v #3690 > >     }
00:03:19 v #3691 > >
00:03:19 v #3692 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:19 v #3693 > > │ ### builder_insert
00:03:19 v #3694 > >
00:03:19 v #3695 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:19 v #3696 > > inl builder_insert (i : i32) (s : string) (sb : string_builder) : string_builder
00:03:19 v #3697 > > =
00:03:19 v #3698 > >     backend_switch {
00:03:19 v #3699 > >         Fsharp = fun () =>
00:03:19 v #3700 > >             ($'!sb.Insert (!i, !s)' : string_builder) |> ignore
00:03:19 v #3701 > >             sb
00:03:19 v #3702 > >         Python = fun () =>
00:03:19 v #3703 > >             inl sb = sb |> obj_to_string
00:03:19 v #3704 > >             $'"".join([[!sb[[:!i]], !s, !sb[[!i:]]]])' |> string_builder
00:03:19 v #3705 > >     }
00:03:19 v #3706 > >
00:03:19 v #3707 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:19 v #3708 > > │ ### builder_clear
00:03:19 v #3709 > >
00:03:19 v #3710 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:19 v #3711 > > inl builder_clear (sb : string_builder) : string_builder =
00:03:19 v #3712 > >     backend_switch {
00:03:19 v #3713 > >         Fsharp = fun () =>
00:03:19 v #3714 > >             ($'!sb.Clear' () : string_builder) |> ignore
00:03:19 v #3715 > >             sb
00:03:19 v #3716 > >         Python = fun () =>
00:03:19 v #3717 > >             ($'!sb.truncate(0)' : int) |> ignore
00:03:19 v #3718 > >             ($'!sb.seek(0)' : int) |> ignore
00:03:19 v #3719 > >             sb
00:03:19 v #3720 > >     }
00:03:19 v #3721 > >
00:03:19 v #3722 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:19 v #3723 > > │ ### trim
00:03:19 v #3724 > >
00:03:19 v #3725 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:19 v #3726 > > inl trim (input : string) : string =
00:03:19 v #3727 > >     backend_switch {
00:03:19 v #3728 > >         Fsharp = fun () => $'!input.Trim' () : string
00:03:19 v #3729 > >         Python = fun () => $'!input.strip()' : string
00:03:19 v #3730 > >     }
00:03:19 v #3731 > >
00:03:19 v #3732 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:19 v #3733 > > │ ### concat
00:03:19 v #3734 > >
00:03:19 v #3735 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:19 v #3736 > > inl concat (a : string) (b : seq.seq' string) : string =
00:03:19 v #3737 > >     backend_switch {
00:03:19 v #3738 > >         Fsharp = fun () =>
00:03:19 v #3739 > >             inl a =
00:03:19 v #3740 > >                 if a = "\n"
00:03:19 v #3741 > >                 then join a
00:03:19 v #3742 > >                 else a
00:03:19 v #3743 > >             b |> $'String.concat' a : string
00:03:19 v #3744 > >         Python = fun () =>
00:03:19 v #3745 > >             $'!a.join(!b)' : string
00:03:19 v #3746 > >     }
00:03:19 v #3747 > >
00:03:19 v #3748 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:19 v #3749 > > │ ### trim_end
00:03:19 v #3750 > >
00:03:19 v #3751 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:19 v #3752 > > inl trim_end (trim_chars : list char) (input : string) : string =
00:03:19 v #3753 > >     inl trim_chars = trim_chars |> listm'.box
00:03:19 v #3754 > >     backend_switch {
00:03:19 v #3755 > >         Fsharp = fun () =>
00:03:19 v #3756 > >             inl trim_chars = trim_chars |> listm'.to_array'
00:03:19 v #3757 > >             $'!input.TrimEnd !trim_chars ' : string
00:03:19 v #3758 > >         Python = fun () =>
00:03:19 v #3759 > >             inl trim_chars = trim_chars |> listm'.map obj_to_string |>
00:03:19 v #3760 > > seq.of_list' |> concat ""
00:03:19 v #3761 > >             $'!input.rstrip(!trim_chars)' : string
00:03:19 v #3762 > >     }
00:03:19 v #3763 > >
00:03:19 v #3764 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:19 v #3765 > > │ ### trim_start
00:03:19 v #3766 > >
00:03:19 v #3767 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:19 v #3768 > > inl trim_start (trim_chars : list char) (input : string) : string =
00:03:19 v #3769 > >     inl trim_chars = trim_chars |> listm'.box
00:03:19 v #3770 > >     backend_switch {
00:03:19 v #3771 > >         Fsharp = fun () =>
00:03:19 v #3772 > >             inl trim_chars = trim_chars |> listm'.to_array'
00:03:19 v #3773 > >             $'!input.TrimStart !trim_chars ' : string
00:03:19 v #3774 > >         Python = fun () =>
00:03:19 v #3775 > >             inl trim_chars = trim_chars |> listm'.map obj_to_string |>
00:03:19 v #3776 > > seq.of_list' |> concat ""
00:03:19 v #3777 > >             $'!input.lstrip(!trim_chars)' : string
00:03:19 v #3778 > >     }
00:03:20 v #3779 > >
00:03:20 v #3780 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:20 v #3781 > > │ ### length'
00:03:20 v #3782 > >
00:03:20 v #3783 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:20 v #3784 > > inl length' forall dim. (input : string) : dim =
00:03:20 v #3785 > >     backend_switch {
00:03:20 v #3786 > >         Fsharp = fun () => input |> $'String.length' : dim
00:03:20 v #3787 > >         Python = fun () => $'len(!input)' : dim
00:03:20 v #3788 > >     }
00:03:20 v #3789 > >
00:03:20 v #3790 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:20 v #3791 > > //// test
00:03:20 v #3792 > > ///! fsharp
00:03:20 v #3793 > > ///! cuda
00:03:20 v #3794 > >
00:03:20 v #3795 > > "abc"
00:03:20 v #3796 > > |> length'
00:03:20 v #3797 > > |> _assert_eq 3i32
00:03:20 v #3798 > >
00:03:20 v #3799 > > ── [ 593.90ms - return value ] ─────────────────────────────────────────────────
00:03:20 v #3800 > > │ .py output (Cuda):
00:03:20 v #3801 > > │ __assert_eq / actual: 3 / expected: 3
00:03:20 v #3802 > > │
00:03:20 v #3803 > > │
00:03:20 v #3804 > >
00:03:20 v #3805 > > ── [ 594.05ms - stdout ] ───────────────────────────────────────────────────────
00:03:20 v #3806 > > │ .fsx output:
00:03:20 v #3807 > > │ __assert_eq / actual: 3 / expected: 3
00:03:20 v #3808 > > │
00:03:20 v #3809 > >
00:03:20 v #3810 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:20 v #3811 > > │ ### to_string any
00:03:20 v #3812 > >
00:03:20 v #3813 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:20 v #3814 > > instance to_string any =
00:03:20 v #3815 > >     obj_to_string
00:03:20 v #3816 > >
00:03:20 v #3817 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:20 v #3818 > > │ ### (~$)
00:03:20 v #3819 > >
00:03:20 v #3820 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:20 v #3821 > > inl (~$) s =
00:03:20 v #3822 > >     s |> obj_to_string
00:03:21 v #3823 > >
00:03:21 v #3824 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:21 v #3825 > > │ ### replace
00:03:21 v #3826 > >
00:03:21 v #3827 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:21 v #3828 > > inl replace (old_value : string) (new_value : string) (s : string) : string =
00:03:21 v #3829 > >     $'!s.Replace (!old_value, !new_value)'
00:03:21 v #3830 > >
00:03:21 v #3831 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:21 v #3832 > > │ ### split
00:03:21 v #3833 > >
00:03:21 v #3834 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:21 v #3835 > > inl split (separator : string) (str : string) : array_base string =
00:03:21 v #3836 > >     backend_switch {
00:03:21 v #3837 > >         Fsharp = fun () => $'!str.Split !separator ' : array_base string
00:03:21 v #3838 > >         Python = fun () => $'!str.split(!separator)' : array_base string
00:03:21 v #3839 > >     }
00:03:21 v #3840 > >
00:03:21 v #3841 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:21 v #3842 > > │ ### split_string
00:03:21 v #3843 > >
00:03:21 v #3844 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:21 v #3845 > > inl split_string (separator : array_base string) (str : string) : array_base
00:03:21 v #3846 > > string =
00:03:21 v #3847 > >     run_target_args (fun () => str, separator) function
00:03:21 v #3848 > >         | Fsharp (Native) => fun str, separator => $'!str.Split (!separator,
00:03:21 v #3849 > > System.StringSplitOptions.None)'
00:03:21 v #3850 > >         | _ => fun str, separator => str |> split ((a separator : _ int _) |>
00:03:21 v #3851 > > seq.of_array |> concat (join ""))
00:03:21 v #3852 > >
00:03:21 v #3853 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:21 v #3854 > > │ ### join'
00:03:21 v #3855 > >
00:03:21 v #3856 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:21 v #3857 > > inl join' (concat : string) (s : a int string) : string =
00:03:21 v #3858 > >     $'System.String.Join (!concat, !s)'
00:03:21 v #3859 > >
00:03:21 v #3860 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:21 v #3861 > > │ ### encoding
00:03:21 v #3862 > >
00:03:21 v #3863 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:21 v #3864 > > nominal encoding = $'System.Text.Encoding'
00:03:21 v #3865 > >
00:03:21 v #3866 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:21 v #3867 > > │ ### encoding_utf8
00:03:21 v #3868 > >
00:03:21 v #3869 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:21 v #3870 > > inl encoding_utf8 () : encoding =
00:03:21 v #3871 > >     $'`encoding.UTF8'
00:03:22 v #3872 > >
00:03:22 v #3873 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:22 v #3874 > > │ ### utf8_get_bytes
00:03:22 v #3875 > >
00:03:22 v #3876 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:22 v #3877 > > inl utf8_get_bytes (s : string) : a i32 u8 =
00:03:22 v #3878 > >     s |> (encoding_utf8 () |> $'_.GetBytes')
00:03:22 v #3879 > >
00:03:22 v #3880 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:22 v #3881 > > │ ### byte_to_string
00:03:22 v #3882 > >
00:03:22 v #3883 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:22 v #3884 > > inl byte_to_string (format : string) (x : u8) : string =
00:03:22 v #3885 > >     $'!x.ToString' format
00:03:22 v #3886 > >
00:03:22 v #3887 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:22 v #3888 > > │ ## rust
00:03:22 v #3889 > >
00:03:22 v #3890 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:22 v #3891 > > │ ### str
00:03:22 v #3892 > >
00:03:22 v #3893 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:22 v #3894 > > nominal str =
00:03:22 v #3895 > >     `(
00:03:22 v #3896 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:22 v #3897 > > Fable.Core.Emit(\"str\")>]]\ntype Str = class end\n#else\ntype Str =
00:03:22 v #3898 > > string\n#endif\n"
00:03:22 v #3899 > >         $'' : $'Str'
00:03:22 v #3900 > >     )
00:03:22 v #3901 > >
00:03:22 v #3902 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:22 v #3903 > > │ ### chars
00:03:22 v #3904 > >
00:03:22 v #3905 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:22 v #3906 > > inl chars (x : rust.ref str) : rust.mut' (into_iterator char) =
00:03:22 v #3907 > >     !\\(x, $'$"$0.chars()"')
00:03:22 v #3908 > >
00:03:22 v #3909 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:22 v #3910 > > │ ### char_is_alphanumeric
00:03:22 v #3911 > >
00:03:22 v #3912 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:22 v #3913 > > inl char_is_alphanumeric (x : char) : bool =
00:03:22 v #3914 > >     !\\(x, $'$"$0.is_alphanumeric()"')
00:03:22 v #3915 > >
00:03:22 v #3916 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:22 v #3917 > > │ ### byte_slice
00:03:22 v #3918 > >
00:03:22 v #3919 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:22 v #3920 > > inl byte_slice (s : string) : rust.ref (am'.slice u8) =
00:03:22 v #3921 > >     !\($'"b\\\"" + !s + "\\\""')
00:03:23 v #3922 > >
00:03:23 v #3923 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:23 v #3924 > > │ ### display
00:03:23 v #3925 > >
00:03:23 v #3926 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:23 v #3927 > > nominal display t =
00:03:23 v #3928 > >     `(
00:03:23 v #3929 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:23 v #3930 > > Fable.Core.Emit(\"std::fmt::Display<$0>\")>]]\n#endif\ntype std_fmt_Display<'T>
00:03:23 v #3931 > > = class end"
00:03:23 v #3932 > >         $'' : $'std_fmt_Display<`t>'
00:03:23 v #3933 > >     )
00:03:23 v #3934 > >
00:03:23 v #3935 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:23 v #3936 > > │ ### base64_decode_error
00:03:23 v #3937 > >
00:03:23 v #3938 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:23 v #3939 > > nominal base64_decode_error =
00:03:23 v #3940 > >     `(
00:03:23 v #3941 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:23 v #3942 > > Fable.Core.Emit(\"base64::DecodeError\")>]]\n#endif\ntype base64_DecodeError =
00:03:23 v #3943 > > class end"
00:03:23 v #3944 > >         $'' : $'base64_DecodeError'
00:03:23 v #3945 > >     )
00:03:23 v #3946 > >
00:03:23 v #3947 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:23 v #3948 > > │ ### borsh_io_error
00:03:23 v #3949 > >
00:03:23 v #3950 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:23 v #3951 > > nominal borsh_io_error =
00:03:23 v #3952 > >     `(
00:03:23 v #3953 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:23 v #3954 > > Fable.Core.Emit(\"borsh::io::Error\")>]]\n#endif\ntype borsh_io_Error = class
00:03:23 v #3955 > > end"
00:03:23 v #3956 > >         $'' : $'borsh_io_Error'
00:03:23 v #3957 > >     )
00:03:23 v #3958 > >
00:03:23 v #3959 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:23 v #3960 > > │ ### utf8_error
00:03:23 v #3961 > >
00:03:23 v #3962 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:23 v #3963 > > nominal utf8_error =
00:03:23 v #3964 > >     `(
00:03:23 v #3965 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:23 v #3966 > > Fable.Core.Emit(\"std::str::Utf8Error\")>]]\n#endif\ntype std_str_Utf8Error =
00:03:23 v #3967 > > class end"
00:03:23 v #3968 > >         $'' : $'std_str_Utf8Error'
00:03:23 v #3969 > >     )
00:03:23 v #3970 > >
00:03:23 v #3971 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:23 v #3972 > > │ ### from_utf8_error
00:03:23 v #3973 > >
00:03:23 v #3974 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:23 v #3975 > > nominal from_utf8_error =
00:03:23 v #3976 > >     `(
00:03:23 v #3977 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:23 v #3978 > > Fable.Core.Emit(\"std::string::FromUtf8Error\")>]]\n#endif\ntype
00:03:23 v #3979 > > std_string_FromUtf8Error = class end"
00:03:23 v #3980 > >         $'' : $'std_string_FromUtf8Error'
00:03:23 v #3981 > >     )
00:03:23 v #3982 > >
00:03:23 v #3983 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:23 v #3984 > > │ ### json_value
00:03:23 v #3985 > >
00:03:23 v #3986 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:23 v #3987 > > nominal json_value =
00:03:23 v #3988 > >     `(
00:03:23 v #3989 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:23 v #3990 > > Fable.Core.Emit(\"serde_json::Value\")>]]\n#endif\ntype serde_json_Value = class
00:03:23 v #3991 > > end"
00:03:23 v #3992 > >         $'' : $'serde_json_Value'
00:03:23 v #3993 > >     )
00:03:24 v #3994 > >
00:03:24 v #3995 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:24 v #3996 > > │ ### json_error
00:03:24 v #3997 > >
00:03:24 v #3998 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:24 v #3999 > > nominal json_error =
00:03:24 v #4000 > >     `(
00:03:24 v #4001 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:24 v #4002 > > Fable.Core.Emit(\"serde_json::Error\")>]]\n#endif\ntype serde_json_Error = class
00:03:24 v #4003 > > end"
00:03:24 v #4004 > >         $'' : $'serde_json_Error'
00:03:24 v #4005 > >     )
00:03:24 v #4006 > >
00:03:24 v #4007 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:24 v #4008 > > │ ### serde_wasm_bindgen_error
00:03:24 v #4009 > >
00:03:24 v #4010 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:24 v #4011 > > nominal serde_wasm_bindgen_error =
00:03:24 v #4012 > >     `(
00:03:24 v #4013 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:24 v #4014 > > Fable.Core.Emit(\"serde_wasm_bindgen::Error\")>]]\n#endif\ntype
00:03:24 v #4015 > > serde_wasm_bindgen_Error = class end"
00:03:24 v #4016 > >         $'' : $'serde_wasm_bindgen_Error'
00:03:24 v #4017 > >     )
00:03:24 v #4018 > >
00:03:24 v #4019 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:24 v #4020 > > │ ### js_string
00:03:24 v #4021 > >
00:03:24 v #4022 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:24 v #4023 > > nominal js_string =
00:03:24 v #4024 > >     `(
00:03:24 v #4025 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:24 v #4026 > > Fable.Core.Emit(\"js_sys::JsString\")>]]\n#endif\ntype js_sys_JsString = class
00:03:24 v #4027 > > end"
00:03:24 v #4028 > >         $'' : $'js_sys_JsString'
00:03:24 v #4029 > >     )
00:03:24 v #4030 > >
00:03:24 v #4031 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:24 v #4032 > > │ ### os_str
00:03:24 v #4033 > >
00:03:24 v #4034 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:24 v #4035 > > nominal os_str =
00:03:24 v #4036 > >     `(
00:03:24 v #4037 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:24 v #4038 > > Fable.Core.Emit(\"std::ffi::OsStr\")>]]\n#endif\ntype std_ffi_OsStr = class end"
00:03:24 v #4039 > >         $'' : $'std_ffi_OsStr'
00:03:24 v #4040 > >     )
00:03:24 v #4041 > >
00:03:24 v #4042 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:24 v #4043 > > │ ### c_str
00:03:24 v #4044 > >
00:03:24 v #4045 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:24 v #4046 > > nominal c_str =
00:03:24 v #4047 > >     `(
00:03:24 v #4048 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:24 v #4049 > > Fable.Core.Emit(\"std::ffi::CStr\")>]]\n#endif\ntype std_ffi_CStr = class end"
00:03:24 v #4050 > >         $'' : $'std_ffi_CStr'
00:03:24 v #4051 > >     )
00:03:24 v #4052 > >
00:03:24 v #4053 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:24 v #4054 > > │ ### c_string
00:03:24 v #4055 > >
00:03:24 v #4056 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:24 v #4057 > > nominal c_string =
00:03:24 v #4058 > >     `(
00:03:24 v #4059 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:24 v #4060 > > Fable.Core.Emit(\"std::ffi::CString\")>]]\n#endif\ntype std_ffi_CString = class
00:03:24 v #4061 > > end"
00:03:24 v #4062 > >         $'' : $'std_ffi_CString'
00:03:24 v #4063 > >     )
00:03:25 v #4064 > >
00:03:25 v #4065 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:25 v #4066 > > │ ### os_string
00:03:25 v #4067 > >
00:03:25 v #4068 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:25 v #4069 > > nominal os_string =
00:03:25 v #4070 > >     `(
00:03:25 v #4071 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:25 v #4072 > > Fable.Core.Emit(\"std::ffi::OsString\")>]]\n#endif\ntype std_ffi_OsString =
00:03:25 v #4073 > > class end"
00:03:25 v #4074 > >         $'' : $'std_ffi_OsString'
00:03:25 v #4075 > >     )
00:03:25 v #4076 > >
00:03:25 v #4077 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:25 v #4078 > > │ ### raw_string_literal
00:03:25 v #4079 > >
00:03:25 v #4080 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:25 v #4081 > > inl raw_string_literal (s : string) : rust.ref str =
00:03:25 v #4082 > >     !\($'"r#\\"" + !s + "\\"#"')
00:03:25 v #4083 > >
00:03:25 v #4084 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:25 v #4085 > > │ ### raw_string_literal_static
00:03:25 v #4086 > >
00:03:25 v #4087 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:25 v #4088 > > inl raw_string_literal_static (s : string) : rust.static_ref str =
00:03:25 v #4089 > >     !\($'"r#\\"" + !s + "\\"#"')
00:03:25 v #4090 > >
00:03:25 v #4091 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:25 v #4092 > > │ ### (~#)
00:03:25 v #4093 > >
00:03:25 v #4094 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:25 v #4095 > > inl (~#) s =
00:03:25 v #4096 > >     s |> raw_string_literal
00:03:25 v #4097 > >
00:03:25 v #4098 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:25 v #4099 > > │ ### (~##)
00:03:25 v #4100 > >
00:03:25 v #4101 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:25 v #4102 > > inl (~##) s =
00:03:25 v #4103 > >     s |> raw_string_literal_static
00:03:25 v #4104 > >
00:03:25 v #4105 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:25 v #4106 > > │ ### include_str
00:03:25 v #4107 > >
00:03:25 v #4108 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:25 v #4109 > > inl include_str (path : string) : rust.ref str =
00:03:25 v #4110 > >     !\($'"include_str\!(\\\"" + !path + "\\\")"')
00:03:26 v #4111 > >
00:03:26 v #4112 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:26 v #4113 > > │ ### as_str
00:03:26 v #4114 > >
00:03:26 v #4115 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:26 v #4116 > > inl as_str (s : string) : rust.ref str =
00:03:26 v #4117 > >     // !\\(s, $'"fable_library_rust::String_::LrcStr::as_str(&$0)"')
00:03:26 v #4118 > >     run_target_args (fun () => s) function
00:03:26 v #4119 > >         | Rust _ => fun s => !\\(s, $'"&*$0"')
00:03:26 v #4120 > >         | _ => fun s => s |> unbox
00:03:26 v #4121 > >
00:03:26 v #4122 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:26 v #4123 > > │ ### from_iter
00:03:26 v #4124 > >
00:03:26 v #4125 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:26 v #4126 > > inl from_iter forall (t : * -> *). (s : t char) : std_string =
00:03:26 v #4127 > >     !\\(s, $'"String::from_iter($0)"')
00:03:26 v #4128 > >
00:03:26 v #4129 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:26 v #4130 > > │ ### ref_to_std_string
00:03:26 v #4131 > >
00:03:26 v #4132 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:26 v #4133 > > inl ref_to_std_string (str : rust.ref str) : std_string =
00:03:26 v #4134 > >     run_target_args (fun () => str) function
00:03:26 v #4135 > >         | Rust _ => fun str => !\\(str, $'"String::from($0)"')
00:03:26 v #4136 > >         | _ => fun str => str |> unbox
00:03:26 v #4137 > >
00:03:26 v #4138 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:26 v #4139 > > │ ### cow_to_std_string
00:03:26 v #4140 > >
00:03:26 v #4141 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:26 v #4142 > > inl cow_to_std_string (str : rust.cow str) : std_string =
00:03:26 v #4143 > >     !\\(str, $'"String::from($0)"')
00:03:26 v #4144 > >
00:03:26 v #4145 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:26 v #4146 > > │ ### to_std_string
00:03:26 v #4147 > >
00:03:26 v #4148 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:26 v #4149 > > inl to_std_string (s : string) : std_string =
00:03:26 v #4150 > >     s |> as_str |> ref_to_std_string
00:03:26 v #4151 > >
00:03:26 v #4152 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:26 v #4153 > > │ ### as_str_std
00:03:26 v #4154 > >
00:03:26 v #4155 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:26 v #4156 > > inl as_str_std (s : std_string) : rust.ref str =
00:03:26 v #4157 > >     !\\(s, $'"$0.as_str()"')
00:03:27 v #4158 > >
00:03:27 v #4159 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:27 v #4160 > > │ ### into_boxed_str
00:03:27 v #4161 > >
00:03:27 v #4162 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:27 v #4163 > > inl into_boxed_str (s : std_string) : rust.box str =
00:03:27 v #4164 > >     !\\(s, $'"$0.into_boxed_str()"')
00:03:27 v #4165 > >
00:03:27 v #4166 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:27 v #4167 > > │ ### os_string_as_ref
00:03:27 v #4168 > >
00:03:27 v #4169 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:27 v #4170 > > inl os_string_as_ref (s : os_string) : rust.ref os_str =
00:03:27 v #4171 > >     !\\(s, $'"$0.as_ref()"')
00:03:27 v #4172 > >
00:03:27 v #4173 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:27 v #4174 > > │ ### to_os_string
00:03:27 v #4175 > >
00:03:27 v #4176 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:27 v #4177 > > inl to_os_string (s : rust.ref os_str) : os_string =
00:03:27 v #4178 > >     !\\(s, $'"$0.to_os_string()"')
00:03:27 v #4179 > >
00:03:27 v #4180 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:27 v #4181 > > │ ### new_c_string
00:03:27 v #4182 > >
00:03:27 v #4183 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:27 v #4184 > > inl new_c_string (s : std_string) : c_string =
00:03:27 v #4185 > >     !\\(s, $'"std::ffi::CString::new($0).unwrap()"')
00:03:27 v #4186 > >
00:03:27 v #4187 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:27 v #4188 > > │ ### os_to_str
00:03:27 v #4189 > >
00:03:27 v #4190 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:27 v #4191 > > inl os_to_str (s : os_string) : optionm'.option' (rust.ref str) =
00:03:27 v #4192 > >     !\\(s, $'"$0.to_str()"')
00:03:28 v #4193 > >
00:03:28 v #4194 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:28 v #4195 > > │ ### from_os_str_ref
00:03:28 v #4196 > >
00:03:28 v #4197 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:28 v #4198 > > inl from_os_str_ref s =
00:03:28 v #4199 > >     s
00:03:28 v #4200 > >     |> to_os_string
00:03:28 v #4201 > >     |> os_to_str
00:03:28 v #4202 > >     |> optionm'.unwrap
00:03:28 v #4203 > >     |> ref_to_std_string
00:03:28 v #4204 > >     |> from_std_string
00:03:28 v #4205 > >
00:03:28 v #4206 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:28 v #4207 > > │ ### format_custom'
00:03:28 v #4208 > >
00:03:28 v #4209 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:28 v #4210 > > inl format_custom' (f : string) x : std_string =
00:03:28 v #4211 > >     run_target function
00:03:28 v #4212 > >         | Rust _ => fun () =>
00:03:28 v #4213 > >             !\\(x, $'"format\!(\\\"" + !f + "\\\", $0)"')
00:03:28 v #4214 > >         | _ => fun () => null ()
00:03:28 v #4215 > >
00:03:28 v #4216 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:28 v #4217 > > │ ### format_debug'
00:03:28 v #4218 > >
00:03:28 v #4219 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:28 v #4220 > > inl format_debug' x : std_string =
00:03:28 v #4221 > >     run_target function
00:03:28 v #4222 > >         | Rust _ => fun () =>
00:03:28 v #4223 > >             !\\(x, $'"format\!(\\\"{:?}\\\", $0)"')
00:03:28 v #4224 > >         | _ => fun () => null ()
00:03:28 v #4225 > >
00:03:28 v #4226 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:28 v #4227 > > │ ### format'
00:03:28 v #4228 > >
00:03:28 v #4229 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:28 v #4230 > > inl format' x : std_string =
00:03:28 v #4231 > >     run_target_args (fun () => x) function
00:03:28 v #4232 > >         | Rust _ => fun x =>
00:03:28 v #4233 > >             !\\(x, $'"format\!(\\\"{}\\\", $0)"')
00:03:28 v #4234 > >         | _ => fun _ => null ()
00:03:28 v #4235 > >
00:03:28 v #4236 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:28 v #4237 > > │ ### format_hex'
00:03:28 v #4238 > >
00:03:28 v #4239 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:28 v #4240 > > inl format_hex' x : std_string =
00:03:28 v #4241 > >     !\\(x, $'"format\!(\\\"{:02x}\\\", $0)"')
00:03:28 v #4242 > >
00:03:28 v #4243 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:28 v #4244 > > │ ### format''
00:03:28 v #4245 > >
00:03:28 v #4246 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:28 v #4247 > > inl format'' (format : string) : std_string =
00:03:28 v #4248 > >     !\($'@@$"format\!(" + !format + ")"')
00:03:29 v #4249 > >
00:03:29 v #4250 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:29 v #4251 > > │ ### regex
00:03:29 v #4252 > >
00:03:29 v #4253 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:29 v #4254 > > nominal regex =
00:03:29 v #4255 > >     `(
00:03:29 v #4256 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:29 v #4257 > > Fable.Core.Emit(\"regex::Regex\")>]]\n#endif\ntype regex_Regex = class end"
00:03:29 v #4258 > >         $'' : $'regex_Regex'
00:03:29 v #4259 > >     )
00:03:29 v #4260 > >
00:03:29 v #4261 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:29 v #4262 > > │ ### regex_error
00:03:29 v #4263 > >
00:03:29 v #4264 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:29 v #4265 > > nominal regex_error =
00:03:29 v #4266 > >     `(
00:03:29 v #4267 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:29 v #4268 > > Fable.Core.Emit(\"regex::Error\")>]]\n#endif\ntype regex_Error = class end"
00:03:29 v #4269 > >         $'' : $'regex_Error'
00:03:29 v #4270 > >     )
00:03:29 v #4271 > >
00:03:29 v #4272 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:29 v #4273 > > │ ### new_regex
00:03:29 v #4274 > >
00:03:29 v #4275 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:29 v #4276 > > inl new_regex (pattern : string) : resultm.result' regex regex_error =
00:03:29 v #4277 > >     !\\(pattern, $'$"regex::Regex::new(&$0)"')
00:03:29 v #4278 > >
00:03:29 v #4279 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:29 v #4280 > > │ ### captures
00:03:29 v #4281 > >
00:03:29 v #4282 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:29 v #4283 > > nominal regex_captures t =
00:03:29 v #4284 > >     `(
00:03:29 v #4285 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:29 v #4286 > > Fable.Core.Emit(\"regex::Captures<$0>\")>]]\n#endif\ntype regex_Captures<'T> =
00:03:29 v #4287 > > class end"
00:03:29 v #4288 > >         $'' : $'regex_Captures<`t>'
00:03:29 v #4289 > >     )
00:03:29 v #4290 > >
00:03:29 v #4291 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:29 v #4292 > > │ ### regex_capture_matches
00:03:29 v #4293 > >
00:03:29 v #4294 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:29 v #4295 > > nominal regex_capture_matches =
00:03:29 v #4296 > >     `(
00:03:29 v #4297 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:29 v #4298 > > Fable.Core.Emit(\"regex::CaptureMatches\")>]]\n#endif\ntype regex_CaptureMatches
00:03:29 v #4299 > > = class end"
00:03:29 v #4300 > >         $'' : $'regex_CaptureMatches'
00:03:29 v #4301 > >     )
00:03:29 v #4302 > >
00:03:29 v #4303 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:29 v #4304 > > │ ### regex_capture_names
00:03:29 v #4305 > >
00:03:29 v #4306 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:29 v #4307 > > nominal regex_capture_names =
00:03:29 v #4308 > >     `(
00:03:29 v #4309 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:29 v #4310 > > Fable.Core.Emit(\"regex::CaptureNames\")>]]\n#endif\ntype regex_CaptureNames =
00:03:29 v #4311 > > class end"
00:03:29 v #4312 > >         $'' : $'regex_CaptureNames'
00:03:29 v #4313 > >     )
00:03:29 v #4314 > >
00:03:29 v #4315 > > inl regex_capture_names (regex : regex) : regex_capture_names =
00:03:29 v #4316 > >     !\\(regex, $'$"$0.capture_names()"')
00:03:30 v #4317 > >
00:03:30 v #4318 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:30 v #4319 > > │ ### match'
00:03:30 v #4320 > >
00:03:30 v #4321 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:30 v #4322 > > nominal match' =
00:03:30 v #4323 > >     `(
00:03:30 v #4324 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:30 v #4325 > > Fable.Core.Emit(\"regex::Match\")>]]\n#endif\ntype regex_Match = class end"
00:03:30 v #4326 > >         $'' : $'regex_Match'
00:03:30 v #4327 > >     )
00:03:30 v #4328 > >
00:03:30 v #4329 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:30 v #4330 > > │ ### regex_captures_iter
00:03:30 v #4331 > >
00:03:30 v #4332 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:30 v #4333 > > inl regex_captures_iter (s : rust.static_ref (rust.mut' std_string)) (regex :
00:03:30 v #4334 > > regex) : regex_capture_matches =
00:03:30 v #4335 > >     inl regex = regex |> rust.emit
00:03:30 v #4336 > >     !\\(regex, $'$"$0.captures_iter(!s)"')
00:03:30 v #4337 > >
00:03:30 v #4338 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:30 v #4339 > > │ ### regex_captures
00:03:30 v #4340 > >
00:03:30 v #4341 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:30 v #4342 > > let regex_captures (s : string) (regex : regex) : am'.vec (mapm.hash_map string
00:03:30 v #4343 > > string) =
00:03:30 v #4344 > >     // inl s = join s
00:03:30 v #4345 > >     // !\\(regex, $'$"$0.captures_iter(&*!s).map(|caps|
00:03:30 v #4346 > > $0.capture_names().map(|x| x.and_then(|n| Some((n,
00:03:30 v #4347 > > caps.name(n)?.as_str())))).flatten().collect()).collect()"')
00:03:30 v #4348 > >
00:03:30 v #4349 > >     inl s = s |> to_std_string
00:03:30 v #4350 > >     fun () =>
00:03:30 v #4351 > >         inl matches =
00:03:30 v #4352 > >             inl s = s |> rust.new_box |> rust.box_leak
00:03:30 v #4353 > >             regex |> regex_captures_iter s
00:03:30 v #4354 > >
00:03:30 v #4355 > >         (!\($'"true; let _regex_captures : Vec<_> = !matches.map(|x| { //"') :
00:03:30 v #4356 > > bool) |> ignore
00:03:30 v #4357 > >
00:03:30 v #4358 > >         inl fn (match' : rust.static_ref (rust.mut' (regex_captures
00:03:30 v #4359 > > rust.static_lifetime))) : mapm.hash_map string string =
00:03:30 v #4360 > >
00:03:30 v #4361 > >             inl names = regex |> regex_capture_names
00:03:30 v #4362 > >
00:03:30 v #4363 > >             (!\($'"true; let _regex_captures : std::collections::HashMap<_, _> =
00:03:30 v #4364 > > !names.map(|x| { //"') : bool) |> ignore
00:03:30 v #4365 > >
00:03:30 v #4366 > >             inl fn (n : string) : pair string string =
00:03:30 v #4367 > >                 inl n' = n |> rust.clone
00:03:30 v #4368 > >
00:03:30 v #4369 > >                 new_pair n' !\\(n, $'$"!match'.name(&$0).map(|x|
00:03:30 v #4370 > > x.as_str()).unwrap_or(\\\"\\\").to_string().into()"')
00:03:30 v #4371 > >
00:03:30 v #4372 > >             (!\\(fn !\($'"x.unwrap_or(\\\"\\\").to_string().into()"'), $'"true;
00:03:30 v #4373 > > $0 }).map(|x| std::sync::Arc::try_unwrap(x).unwrap_or_else(|x|
00:03:30 v #4374 > > (*x).clone())).collect()"') : bool) |> ignore
00:03:30 v #4375 > >
00:03:30 v #4376 > >             !\($'"_regex_captures"')
00:03:30 v #4377 > >
00:03:30 v #4378 > >         inl x =
00:03:30 v #4379 > >             !\($'$"x"')
00:03:30 v #4380 > >             |> rust.new_box
00:03:30 v #4381 > >             |> rust.box_leak
00:03:30 v #4382 > >
00:03:30 v #4383 > >         (!\\(fn x, $'"true; $0 }).collect::<Vec<_>>()"') : bool) |> ignore
00:03:30 v #4384 > >
00:03:30 v #4385 > >         !\($'"_regex_captures"')
00:03:30 v #4386 > >
00:03:30 v #4387 > >     |> rust.capture_move
00:03:30 v #4388 > >
00:03:30 v #4389 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:30 v #4390 > > //// test
00:03:30 v #4391 > > ///! rust -d regex
00:03:30 v #4392 > >
00:03:30 v #4393 > > "fable-library-ts\\.(?<a>[[\\d.]]+)$"
00:03:30 v #4394 > > |> new_regex
00:03:30 v #4395 > > |> resultm.unwrap'
00:03:30 v #4396 > > |> regex_captures "fable_modules/fable-library-ts.4.17.0"
00:03:30 v #4397 > > |> am'.vec_map (mapm.to_vec >> am'.vec_sort_by_key id)
00:03:30 v #4398 > > |> sm'.format_debug
00:03:30 v #4399 > > |> _assert_eq (
00:03:30 v #4400 > >     ;[[
00:03:30 v #4401 > >         ;[[ "", ""; "a", "4.17.0" ]]
00:03:30 v #4402 > >         |> am'.to_vec
00:03:30 v #4403 > >     ]]
00:03:30 v #4404 > >     |> am'.to_vec
00:03:30 v #4405 > >     |> sm'.format_debug
00:03:30 v #4406 > > )
00:03:41 v #4407 > >
00:03:41 v #4408 > > ── [ 10.82s - return value ] ───────────────────────────────────────────────────
00:03:41 v #4409 > > │ __assert_eq / actual: "[[("", ""), ("a", "4.17.0")]]"
00:03:41 v #4410 > > expected: "[[("", ""), ("a", "4.17.0")]]"
00:03:41 v #4411 > > │
00:03:41 v #4412 > >
00:03:41 v #4413 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:41 v #4414 > > │ ### replace_regex'
00:03:41 v #4415 > >
00:03:41 v #4416 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:41 v #4417 > > inl replace_regex' (pattern : string) (replacement : a i32 string) (s : string)
00:03:41 v #4418 > > : string =
00:03:41 v #4419 > >     run_target_args (fun () => s, pattern, replacement) function
00:03:41 v #4420 > >         | Rust (Native) => fun s, pattern, replacement =>
00:03:41 v #4421 > >             inl regex = pattern |> new_regex |> resultm.unwrap'
00:03:41 v #4422 > >             !\\((regex, #s, replacement), $'$"$0.replace_all($1, &*$2)"')
00:03:41 v #4423 > >             |> cow_to_std_string
00:03:41 v #4424 > >             |> from_std_string
00:03:41 v #4425 > >         | _ => fun _ => null ()
00:03:41 v #4426 > >
00:03:41 v #4427 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:41 v #4428 > > │ ### serialize
00:03:41 v #4429 > >
00:03:41 v #4430 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:41 v #4431 > > inl serialize forall t. (x : t) : resultm.result' std_string json_error =
00:03:41 v #4432 > >     !\($'"serde_json::to_string(&!x)"')
00:03:41 v #4433 > >
00:03:41 v #4434 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:41 v #4435 > > │ ### deserialize
00:03:41 v #4436 > >
00:03:41 v #4437 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:41 v #4438 > > inl deserialize forall t. (json : string) : resultm.result' t std_string =
00:03:41 v #4439 > >     inl json = join json
00:03:41 v #4440 > >     inl json = json |> as_str
00:03:41 v #4441 > >     !\\(json, $'"serde_json::from_str(&$0)"')
00:03:41 v #4442 > >     |> resultm.map_error' fun (x : json_error) => x |> format'
00:03:42 v #4443 > >
00:03:42 v #4444 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:42 v #4445 > > │ ### borsh_serialize
00:03:42 v #4446 > >
00:03:42 v #4447 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:42 v #4448 > > inl borsh_serialize forall t. (data : t) : am'.vec u8 =
00:03:42 v #4449 > >     (!\($'"true; let mut data = Vec::new()"') : bool) |> ignore
00:03:42 v #4450 > >     (!\\(data, $'"true; borsh::BorshSerialize::serialize(&$0, &mut
00:03:42 v #4451 > > data).unwrap()"') : bool) |> ignore
00:03:42 v #4452 > >     !\($'"data"')
00:03:42 v #4453 > >
00:03:42 v #4454 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:42 v #4455 > > │ ### borsh_deserialize
00:03:42 v #4456 > >
00:03:42 v #4457 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:42 v #4458 > > inl borsh_deserialize forall t. (data : array_base u8) : resultm.result' t
00:03:42 v #4459 > > std_string =
00:03:42 v #4460 > >     inl data = data |> am'.as_slice
00:03:42 v #4461 > >     (!\($'"true; let mut !data = !data"') : bool) |> ignore
00:03:42 v #4462 > >     inl result = !\($'"borsh::BorshDeserialize::deserialize(&mut !data)"')
00:03:42 v #4463 > >     result
00:03:42 v #4464 > >     |> resultm.map_error' fun (x : borsh_io_error) => x |> format'
00:03:42 v #4465 > >
00:03:42 v #4466 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:42 v #4467 > > │ ### deserialize_vec
00:03:42 v #4468 > >
00:03:42 v #4469 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:42 v #4470 > > inl deserialize_vec (value : json_value) : resultm.result' (am'.vec u8)
00:03:42 v #4471 > > std_string =
00:03:42 v #4472 > >     inl value = join value
00:03:42 v #4473 > >     !\($'"serde_json::from_value(!value)"')
00:03:42 v #4474 > >     |> resultm.map_error' fun (x : json_error) => x |> format'
00:03:42 v #4475 > >
00:03:42 v #4476 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:42 v #4477 > > │ ### encode_uri_component
00:03:42 v #4478 > >
00:03:42 v #4479 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:42 v #4480 > > inl encode_uri_component (s : std_string) : js_string =
00:03:42 v #4481 > >     !\($'"js_sys::encode_uri_component(&!s)"')
00:03:42 v #4482 > >
00:03:42 v #4483 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:42 v #4484 > > │ ### strip_prefix
00:03:42 v #4485 > >
00:03:42 v #4486 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:42 v #4487 > > inl strip_prefix (prefix : char) (s : std_string) : optionm'.option' (rust.ref
00:03:42 v #4488 > > str) =
00:03:42 v #4489 > >     inl s = join s
00:03:42 v #4490 > >     !\($'"!s.strip_prefix(!prefix)"')
00:03:42 v #4491 > >
00:03:42 v #4492 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:42 v #4493 > > │ ### str_from_utf8
00:03:42 v #4494 > >
00:03:42 v #4495 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:42 v #4496 > > inl str_from_utf8 (bytes : rust.ref (am'.slice u8)) : resultm.result' (rust.ref
00:03:42 v #4497 > > str) utf8_error =
00:03:42 v #4498 > >     !\\(bytes, $'"std::str::from_utf8($0)"')
00:03:43 v #4499 > >
00:03:43 v #4500 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:43 v #4501 > > │ ### string_from_utf8
00:03:43 v #4502 > >
00:03:43 v #4503 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:43 v #4504 > > inl string_from_utf8 (bytes : am'.vec u8) : resultm.result' std_string
00:03:43 v #4505 > > from_utf8_error =
00:03:43 v #4506 > >     inl bytes = join bytes
00:03:43 v #4507 > >     !\\(bytes, $'"std::string::String::from_utf8($0)"')
00:03:43 v #4508 > >
00:03:43 v #4509 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:43 v #4510 > > │ ### base64_decode
00:03:43 v #4511 > >
00:03:43 v #4512 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:43 v #4513 > > inl base64_decode (s : std_string) : result std_string std_string =
00:03:43 v #4514 > >     fun () =>
00:03:43 v #4515 > >         inl s = join s
00:03:43 v #4516 > >         inl bytes : resultm.result' (am'.vec u8) base64_decode_error =
00:03:43 v #4517 > >
00:03:43 v #4518 > > !\($'"base64::Engine::decode(&base64::engine::general_purpose::STANDARD, !s)"')
00:03:43 v #4519 > >         bytes
00:03:43 v #4520 > >         |> resultm.map_error' format'
00:03:43 v #4521 > >         |> resultm.try'
00:03:43 v #4522 > >         |> string_from_utf8
00:03:43 v #4523 > >         |> resultm.map_error' format'
00:03:43 v #4524 > >     |> fun x =>
00:03:43 v #4525 > >         join x ()
00:03:43 v #4526 > >         |> resultm.unbox
00:03:43 v #4527 > >
00:03:43 v #4528 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:43 v #4529 > > │ ### encoding'
00:03:43 v #4530 > >
00:03:43 v #4531 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:43 v #4532 > > nominal encoding' =
00:03:43 v #4533 > >     `(
00:03:43 v #4534 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:43 v #4535 > > Fable.Core.Emit(\"encoding_rs::Encoding\")>]]\n#endif\ntype encoding_rs_Encoding
00:03:43 v #4536 > > = class end"
00:03:43 v #4537 > >         $'' : $'encoding_rs_Encoding'
00:03:43 v #4538 > >     )
00:03:43 v #4539 > >
00:03:43 v #4540 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:43 v #4541 > > │ ### encoding_utf8'
00:03:43 v #4542 > >
00:03:43 v #4543 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:43 v #4544 > > inl encoding_utf8' () : rust.ref encoding' =
00:03:43 v #4545 > >     !\($'"encoding_rs::UTF_8"')
00:03:44 v #4546 > >
00:03:44 v #4547 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:44 v #4548 > > │ ### encoding_1252
00:03:44 v #4549 > >
00:03:44 v #4550 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:44 v #4551 > > inl encoding_1252' () : rust.ref encoding' =
00:03:44 v #4552 > >     !\($'"encoding_rs::WINDOWS_1252"')
00:03:44 v #4553 > >
00:03:44 v #4554 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:44 v #4555 > > │ ### encoding_encode
00:03:44 v #4556 > >
00:03:44 v #4557 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:44 v #4558 > > inl encoding_encode' (encoding : rust.ref encoding') (text : string) : rust.cow
00:03:44 v #4559 > > (am'.slice u8) =
00:03:44 v #4560 > >     !\\((encoding, text), $'"$0.encode(&*$1).0"')
00:03:44 v #4561 > >
00:03:44 v #4562 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:44 v #4563 > > │ ### utf8_decode
00:03:44 v #4564 > >
00:03:44 v #4565 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:44 v #4566 > > inl utf8_decode (data : am'.vec u8) : resultm.result' std_string (rust.cow str)
00:03:44 v #4567 > > =
00:03:44 v #4568 > >     !\($'$"encoding::Encoding::decode(encoding::all::UTF_8, &!data,
00:03:44 v #4569 > > encoding::DecoderTrap::Replace)"')
00:03:44 v #4570 > >
00:03:44 v #4571 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:44 v #4572 > > │ ### windows
00:03:44 v #4573 > >
00:03:44 v #4574 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:44 v #4575 > > nominal windows t =
00:03:44 v #4576 > >     `(
00:03:44 v #4577 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:44 v #4578 > > Fable.Core.Emit(\"std::slice::Windows<$0>\")>]]\n#endif\ntype
00:03:44 v #4579 > > std_slice_Windows<'T> = class end"
00:03:44 v #4580 > >         $'' : $'std_slice_Windows<`t>'
00:03:44 v #4581 > >     )
00:03:44 v #4582 > >
00:03:44 v #4583 > > inl windows (len : unativeint) (source : am'.vec u8) : windows u8 =
00:03:44 v #4584 > >     inl source = source |> rust.new_box |> rust.box_leak
00:03:44 v #4585 > >     // inl source' = source |> rust.clone
00:03:44 v #4586 > >     inl result = !\\(len, $'"<[[_]]>::windows(!source, $0)"')
00:03:44 v #4587 > >     // source |> rust.drop
00:03:44 v #4588 > >     result
00:03:44 v #4589 > >
00:03:44 v #4590 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:44 v #4591 > > │ ### any
00:03:44 v #4592 > >
00:03:44 v #4593 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:44 v #4594 > > inl any forall t. (fn : string -> bool) (source : windows t) : bool =
00:03:44 v #4595 > >     (!\($'"true; let mut !source = !source"') : bool) |> ignore
00:03:44 v #4596 > >     inl fn' x =
00:03:44 v #4597 > >         x
00:03:44 v #4598 > >         |> str_from_utf8
00:03:44 v #4599 > >         |> resultm.unwrap_or' #""
00:03:44 v #4600 > >         |> ref_to_std_string
00:03:44 v #4601 > >         |> from_std_string
00:03:44 v #4602 > >         |> fn
00:03:44 v #4603 > >     !\\(fn', $'"!source.any(move |x| $0(x))"')
00:03:44 v #4604 > >
00:03:44 v #4605 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:44 v #4606 > > │ ### slice_contains
00:03:44 v #4607 > >
00:03:44 v #4608 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:44 v #4609 > > inl slice_contains (text : string) (source : am'.vec u8) : bool =
00:03:44 v #4610 > >     fun () =>
00:03:44 v #4611 > >         inl source = join source
00:03:44 v #4612 > >         source
00:03:44 v #4613 > >         |> windows (text |> length |> (fun x => x : i32) |> convert)
00:03:44 v #4614 > >         |> any ((=.) text)
00:03:44 v #4615 > >     |> fun x => join x ()
00:03:45 v #4616 > >
00:03:45 v #4617 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:45 v #4618 > > │ ### as_bytes
00:03:45 v #4619 > >
00:03:45 v #4620 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:45 v #4621 > > inl as_bytes (text : string) : rust.ref (am'.slice u8) =
00:03:45 v #4622 > >     inl text = join text
00:03:45 v #4623 > >     !\($'"!text.as_bytes()"')
00:03:45 v #4624 > >
00:03:45 v #4625 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:45 v #4626 > > │ ### into_bytes
00:03:45 v #4627 > >
00:03:45 v #4628 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:45 v #4629 > > inl into_bytes (x : std_string) : am'.vec u8 =
00:03:45 v #4630 > >     !\\(x, $'$"$0.into_bytes()"')
00:03:45 v #4631 > >
00:03:45 v #4632 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:45 v #4633 > > │ ## python
00:03:45 v #4634 > >
00:03:45 v #4635 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:45 v #4636 > > │ ### encode_utf8
00:03:45 v #4637 > >
00:03:45 v #4638 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:45 v #4639 > > inl encode_utf8 (s : string) : string =
00:03:45 v #4640 > >     inl encoding = "utf-8"
00:03:45 v #4641 > >     backend_switch {
00:03:45 v #4642 > >         Fsharp = fun () =>
00:03:45 v #4643 > >             open python_operators
00:03:45 v #4644 > >             !\\((s, encoding), $'"$0.encode($1)"') : string
00:03:45 v #4645 > >         Python = fun () =>
00:03:45 v #4646 > >             $'!s.encode(!encoding)' : string
00:03:45 v #4647 > >     }
00:03:45 v #4648 > >
00:03:45 v #4649 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:45 v #4650 > > │ ## sm'
00:03:45 v #4651 > >
00:03:45 v #4652 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:45 v #4653 > > │ ### contains
00:03:45 v #4654 > >
00:03:45 v #4655 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:45 v #4656 > > inl contains (value : string) (s : string) : bool =
00:03:45 v #4657 > >     backend_switch {
00:03:45 v #4658 > >         Fsharp = fun () => $'!s.Contains !value ' : bool
00:03:45 v #4659 > >         Python = fun () => $'!value in !s ' : bool
00:03:45 v #4660 > >     }
00:03:45 v #4661 > >
00:03:45 v #4662 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:45 v #4663 > > │ ### to_string result t u
00:03:45 v #4664 > >
00:03:45 v #4665 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:45 v #4666 > > instance to_string result t u = fun x =>
00:03:45 v #4667 > >     real
00:03:45 v #4668 > >         open rust
00:03:45 v #4669 > >         typecase (t * u) with
00:03:45 v #4670 > >         | string * string =>
00:03:45 v #4671 > >             match x with
00:03:45 v #4672 > >             | Ok x => x
00:03:45 v #4673 > >             | Error x => $'"sm\'.to_string result / Error: " + !x + ""' : string
00:03:45 v #4674 > >         | std_string * std_string =>
00:03:45 v #4675 > >             match x with
00:03:45 v #4676 > >             | Ok x => from_std_string x
00:03:45 v #4677 > >             | Error x => $'"sm\'.to_string result / Error: " + string !x + ""' :
00:03:45 v #4678 > > string
00:03:45 v #4679 > >         | _ => obj_to_string `u x
00:03:46 v #4680 > >
00:03:46 v #4681 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:46 v #4682 > > │ ### format_exception
00:03:46 v #4683 > >
00:03:46 v #4684 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:46 v #4685 > > inl format_exception (ex : exn) : string =
00:03:46 v #4686 > >     run_target function
00:03:46 v #4687 > >         | Fsharp (Native) => fun () => $'$"{!ex.GetType ()}: {!ex.Message}"'
00:03:46 v #4688 > >         | _ => fun () => ex |> format_debug
00:03:46 v #4689 > >
00:03:46 v #4690 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:46 v #4691 > > //// test
00:03:46 v #4692 > > ///! fsharp
00:03:46 v #4693 > > ///! cuda
00:03:46 v #4694 > > ///! rust
00:03:46 v #4695 > > ///! typescript
00:03:46 v #4696 > > ///! python
00:03:46 v #4697 > >
00:03:46 v #4698 > > fun () => failwith "test"
00:03:46 v #4699 > > |> _throws
00:03:46 v #4700 > > |> optionm.value
00:03:46 v #4701 > > |> sm'.format_exception
00:03:46 v #4702 > > |> _assert_eq (run_target function
00:03:46 v #4703 > >     | Fsharp _ => fun () => join "System.Exception: test"
00:03:46 v #4704 > >     | Cuda _ => fun () => "test"
00:03:46 v #4705 > >     | Rust _ => fun () => "Exception { message: \"test\" }"
00:03:46 v #4706 > >     | TypeScript _ => fun () => "Error: test"
00:03:46 v #4707 > >     | Python _ => fun () => join "test"
00:03:46 v #4708 > >     | _ => fun () => null ()
00:03:46 v #4709 > > )
00:03:54 v #4710 > >
00:03:54 v #4711 > > ── [ 8.55s - return value ] ────────────────────────────────────────────────────
00:03:54 v #4712 > > │ .py output (Cuda):
00:03:54 v #4713 > > │ __assert_eq / actual: test / expected: test
00:03:54 v #4714 > > │
00:03:54 v #4715 > > │ .rs output:
00:03:54 v #4716 > > │ __assert_eq / actual: "Exception { message: "test" }"
00:03:54 v #4717 > > expected: "Exception { message: "test" }"
00:03:54 v #4718 > > │
00:03:54 v #4719 > > │ .ts output:
00:03:54 v #4720 > > │ __assert_eq / actual: Error: test / expected: Error: test
00:03:54 v #4721 > > │
00:03:54 v #4722 > > │ .py output:
00:03:54 v #4723 > > │ __assert_eq / actual: test / expected: test
00:03:54 v #4724 > > │
00:03:54 v #4725 > > │
00:03:54 v #4726 > >
00:03:54 v #4727 > > ── [ 8.55s - stdout ] ──────────────────────────────────────────────────────────
00:03:54 v #4728 > > │ .fsx output:
00:03:54 v #4729 > > │ __assert_eq / actual: "System.Exception: test" / expected:
00:03:54 v #4730 > > "System.Exception: test"
00:03:54 v #4731 > > │
00:03:54 v #4732 > >
00:03:54 v #4733 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:54 v #4734 > > │ ### range
00:03:54 v #4735 > >
00:03:54 v #4736 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:54 v #4737 > > inl range forall t. (start : am'.range t) (end : am'.range t) s =
00:03:54 v #4738 > >     inl start, end =
00:03:54 v #4739 > >         inl len () =
00:03:54 v #4740 > >             s |> length'
00:03:54 v #4741 > >         match start, end with
00:03:54 v #4742 > >         | Start start, End fn => start, len |> fn
00:03:54 v #4743 > >         | End start_fn, End end_fn => start_fn len, end_fn len
00:03:54 v #4744 > >     s |> slice (start |> i32) ((end |> i32) - 1)
00:03:55 v #4745 > >
00:03:55 v #4746 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:55 v #4747 > > //// test
00:03:55 v #4748 > > ///! fsharp
00:03:55 v #4749 > > ///! cuda
00:03:55 v #4750 > >
00:03:55 v #4751 > > "abcde"
00:03:55 v #4752 > > |> range (am'.Start 1i32) (am'.End eval)
00:03:55 v #4753 > > |> _assert_eq "bcde"
00:03:55 v #4754 > >
00:03:55 v #4755 > > "abcde"
00:03:55 v #4756 > > |> range (am'.End fun x => x () - 4i32) (am'.End fun x => x () - 1)
00:03:55 v #4757 > > |> _assert_eq "bcd"
00:03:55 v #4758 > >
00:03:55 v #4759 > > ── [ 587.66ms - return value ] ─────────────────────────────────────────────────
00:03:55 v #4760 > > │
00:03:55 v #4761 > > │ .py output (Cuda):
00:03:55 v #4762 > > │ __assert_eq / actual: bcde / expected: bcde
00:03:55 v #4763 > > │ __assert_eq / actual: bcd / expected: bcd
00:03:55 v #4764 > > │
00:03:55 v #4765 > > │
00:03:55 v #4766 > >
00:03:55 v #4767 > > ── [ 587.85ms - stdout ] ───────────────────────────────────────────────────────
00:03:55 v #4768 > > │ .fsx output:
00:03:55 v #4769 > > │ __assert_eq / actual: "bcde" / expected: "bcde"
00:03:55 v #4770 > > │ __assert_eq / actual: "bcd" / expected: "bcd"
00:03:55 v #4771 > > │
00:03:55 v #4772 > >
00:03:55 v #4773 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:55 v #4774 > > │ ### concat_list
00:03:55 v #4775 > >
00:03:55 v #4776 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:55 v #4777 > > inl concat_list s list =
00:03:55 v #4778 > >     list
00:03:55 v #4779 > >     |> listm'.box
00:03:55 v #4780 > >     |> seq.of_list'
00:03:55 v #4781 > >     |> concat s
00:03:55 v #4782 > >
00:03:55 v #4783 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:55 v #4784 > > │ ### ellipsis_end
00:03:55 v #4785 > >
00:03:55 v #4786 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:55 v #4787 > > let ellipsis_end (max : i64) (s : string) =
00:03:55 v #4788 > >     inl len = sm.length s
00:03:55 v #4789 > >     if len <= max
00:03:55 v #4790 > >     then s
00:03:55 v #4791 > >     else
00:03:55 v #4792 > >         inl half = f64 max / 2
00:03:55 v #4793 > >         inl start_half = half |> math.ceil |> i64
00:03:55 v #4794 > >         inl end_half = half |> math.floor |> i64
00:03:55 v #4795 > >         inl start = s |> slice 0 (start_half - 1)
00:03:55 v #4796 > >         inl end = s |> slice (len - end_half) (len - 1)
00:03:55 v #4797 > >         (a ;[[ start; "..."; end ]] : _ i32 _)
00:03:55 v #4798 > >         |> seq.of_array
00:03:55 v #4799 > >         |> concat ""
00:03:56 v #4800 > >
00:03:56 v #4801 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:56 v #4802 > > //// test
00:03:56 v #4803 > >
00:03:56 v #4804 > > "12345"
00:03:56 v #4805 > > |> ellipsis_end 2
00:03:56 v #4806 > > |> _assert_eq "1...5"
00:03:56 v #4807 > >
00:03:56 v #4808 > > "12345"
00:03:56 v #4809 > > |> ellipsis_end 3
00:03:56 v #4810 > > |> _assert_eq "12...5"
00:03:56 v #4811 > >
00:03:56 v #4812 > > "1234567"
00:03:56 v #4813 > > |> ellipsis_end 4
00:03:56 v #4814 > > |> _assert_eq "12...67"
00:03:56 v #4815 > >
00:03:56 v #4816 > > ── [ 322.93ms - stdout ] ───────────────────────────────────────────────────────
00:03:56 v #4817 > > │ __assert_eq / actual: "1...5" / expected: "1...5"
00:03:56 v #4818 > > │ __assert_eq / actual: "12...5" / expected: "12...5"
00:03:56 v #4819 > > │ __assert_eq / actual: "12...67" / expected: "12...67"
00:03:56 v #4820 > > │
00:03:56 v #4821 > >
00:03:56 v #4822 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:56 v #4823 > > │ ### format_ellipsis
00:03:56 v #4824 > >
00:03:56 v #4825 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:56 v #4826 > > inl format_ellipsis s =
00:03:56 v #4827 > >     s
00:03:56 v #4828 > >     |> format_debug
00:03:56 v #4829 > >     |> ellipsis_end 400
00:03:56 v #4830 > >
00:03:56 v #4831 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:56 v #4832 > > │ ### replace_regex
00:03:56 v #4833 > >
00:03:56 v #4834 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:56 v #4835 > > let replace_regex (pattern : string) (replacement : string) (s : string) :
00:03:56 v #4836 > > string =
00:03:56 v #4837 > >     run_target_args (fun () => s, pattern, replacement) function
00:03:56 v #4838 > >         | Fsharp (Native) => fun s, pattern, replacement =>
00:03:56 v #4839 > >             $'System.Text.RegularExpressions.Regex.Replace (!s, !pattern,
00:03:56 v #4840 > > !replacement)'
00:03:56 v #4841 > >         | Rust (Native) => fun s, pattern, replacement =>
00:03:56 v #4842 > >             inl regex = pattern |> new_regex |> resultm.unwrap'
00:03:56 v #4843 > >             inl s = join s
00:03:56 v #4844 > >             !\\((regex, s, replacement), $'$"$0.replace_all(&*$1, &*$2)"')
00:03:56 v #4845 > >             |> cow_to_std_string
00:03:56 v #4846 > >             |> from_std_string
00:03:56 v #4847 > >         | _ => fun _ => null ()
00:03:56 v #4848 > >
00:03:56 v #4849 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:56 v #4850 > > //// test
00:03:56 v #4851 > > ///! fsharp
00:03:56 v #4852 > > ///! rust -d regex
00:03:56 v #4853 > >
00:03:56 v #4854 > > " 123"
00:03:56 v #4855 > > |> replace_regex "\\s\\w2" ""
00:03:56 v #4856 > > |> _assert_eq "3"
00:04:02 v #4857 > >
00:04:02 v #4858 > > ── [ 5.63s - return value ] ────────────────────────────────────────────────────
00:04:02 v #4859 > > │ .rs output (rust -d regex):
00:04:02 v #4860 > > │ __assert_eq / actual: "3" / expected: "3"
00:04:02 v #4861 > > │
00:04:02 v #4862 > > │
00:04:02 v #4863 > >
00:04:02 v #4864 > > ── [ 5.63s - stdout ] ──────────────────────────────────────────────────────────
00:04:02 v #4865 > > │ .fsx output:
00:04:02 v #4866 > > │ __assert_eq / actual: "3" / expected: "3"
00:04:02 v #4867 > > │
00:04:02 v #4868 > >
00:04:02 v #4869 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:02 v #4870 > > //// test
00:04:02 v #4871 > > ///! rust -d regex
00:04:02 v #4872 > >
00:04:02 v #4873 > > "    let main args =\n        ()\n"
00:04:02 v #4874 > > |> replace_regex $'@@"(?P<a> *)(?P<b>let\\s+main\\s+.*?\\s*=)"'
00:04:02 v #4875 > > "$a[[<EntryPoint>]]\n$a$b"
00:04:02 v #4876 > > |> _assert_eq "    [[<EntryPoint>]]\n    let main args =\n        ()\n"
00:04:08 v #4877 > >
00:04:08 v #4878 > > ── [ 5.57s - return value ] ────────────────────────────────────────────────────
00:04:08 v #4879 > > │ __assert_eq / actual: "    [<EntryPoint>]
00:04:08 v #4880 > > │     let main args =
00:04:08 v #4881 > > │         ()
00:04:08 v #4882 > > │ " / expected: "    [<EntryPoint>]
00:04:08 v #4883 > > │     let main args =
00:04:08 v #4884 > > │         ()
00:04:08 v #4885 > > │ "
00:04:08 v #4886 > > │
00:04:08 v #4887 > >
00:04:08 v #4888 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:08 v #4889 > > │ ## main
00:04:08 v #4890 > >
00:04:08 v #4891 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:08 v #4892 > > inl main () =
00:04:08 v #4893 > >     $'let contains x = !contains x' : ()
00:04:08 v #4894 > >     $'let ends_with x = !ends_with x' : ()
00:04:08 v #4895 > >     $'let pad_left x = !pad_left x' : ()
00:04:08 v #4896 > >     $'let pad_right x = !pad_right x' : ()
00:04:08 v #4897 > >     $'let replace x = !replace x' : ()
00:04:08 v #4898 > >     $'let replace_regex x = !replace_regex x' : ()
00:04:08 v #4899 > >     inl slice (a : i32) (b : i32) c = slice a b c
00:04:08 v #4900 > >     $'let slice x = !slice x' : ()
00:04:08 v #4901 > >     $'let split x = !split x' : ()
00:04:08 v #4902 > >     $'let split_string x = !split_string x' : ()
00:04:08 v #4903 > >     $'let starts_with x = !starts_with x' : ()
00:04:08 v #4904 > >     $'let substring x = !substring x' : ()
00:04:08 v #4905 > >     $'let to_lower x = !to_lower x' : ()
00:04:08 v #4906 > >     $'let to_upper x = !to_upper x' : ()
00:04:08 v #4907 > >     $'let trim x = !trim x' : ()
00:04:08 v #4908 > >     inl trim_end x = (a x : _ int _) |> am'.to_list' |> listm'.unbox |> trim_end
00:04:08 v #4909 > >     $'let trim_end x = !trim_end x' : ()
00:04:08 v #4910 > >     inl trim_start x = (a x : _ int _) |> am'.to_list' |> listm'.unbox |>
00:04:08 v #4911 > > trim_start
00:04:08 v #4912 > >     $'let trim_start x = !trim_start x' : ()
00:04:08 v #4913 > >     $'let ellipsis x = !ellipsis x' : ()
00:04:08 v #4914 > >     $'let ellipsis_end x = !ellipsis_end x' : ()
00:04:08 v #4915 > >     $'let format_exception x = !format_exception x' : ()
00:04:08 v #4916 > >     $'let concat_array x = !concat_array x' : ()
00:04:08 v #4917 > >     inl concat a (b : seq.seq' string) = concat a b
00:04:08 v #4918 > >     $'let concat x = !concat x' : ()
00:04:08 v #4919 > >     $'let join\' x = !join' x' : ()
00:04:08 v #4920 > >     $'let to_char_array x = !to_char_array x' : ()
00:04:08 v #4921 > >
00:04:08 v #4922 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:08 v #4923 > > │ ## rust
00:04:08 v #4924 > >
00:04:08 v #4925 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:08 v #4926 > > │ ### to_string std_string
00:04:08 v #4927 > >
00:04:08 v #4928 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:08 v #4929 > > open rust
00:04:08 v #4930 > > instance to_string std_string = from_std_string
00:04:08 v #4931 > 00:02:05 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 129979 }
00:04:08 v #4932 > 00:02:05 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/sm'.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/sm'.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:04:09 v #4933 > 00:02:05 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/sm'.dib.ipynb to html
00:04:09 v #4934 > 00:02:05 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:04:09 v #4935 > 00:02:05 v #7 !   validate(nb)
00:04:10 v #4936 > 00:02:06 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:04:10 v #4937 > 00:02:06 v #9 !   return _pygments_highlight(
00:04:11 v #4938 > 00:02:07 v #10 ! [NbConvertApp] Writing 655419 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/sm'.dib.html
00:04:11 v #4939 > 00:02:07 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 890 }
00:04:11 v #4940 > 00:02:07 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 890 }
00:04:11 v #4941 > 00:02:07 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/sm''.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/sm''.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:04:11 v #4942 > 00:02:08 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:04:11 v #4943 > 00:02:08 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:04:11 v #4944 > 00:02:08 d #16 spiral.run / dib / { exit_code = 0; result_length = 130928 }
00:04:11 d #4945 runtime.execute_with_options_async / { exit_code = 0; output_length = 139886 }
00:04:11 d #4 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path sm'.dib --retries 3
00:04:11 d #4946 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path rust/rust.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path rust/rust.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:04:11 v #4947 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "rust/rust.dib", "--retries", "3"])) }
00:04:11 v #4948 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/rust/rust.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/rust/rust.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/rust/rust.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/rust/rust.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:04:13 v #4949 > >
00:04:13 v #4950 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:13 v #4951 > > │ # rust
00:04:15 v #4952 > >
00:04:15 v #4953 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:15 v #4954 > > //// test
00:04:15 v #4955 > >
00:04:15 v #4956 > > open testing
00:04:16 v #4957 > >
00:04:16 v #4958 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:16 v #4959 > > │ ## rust
00:04:16 v #4960 > >
00:04:16 v #4961 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:16 v #4962 > > │ ### any_base
00:04:16 v #4963 > >
00:04:16 v #4964 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:16 v #4965 > > type any_base = any
00:04:16 v #4966 > >
00:04:16 v #4967 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:16 v #4968 > > │ ### any
00:04:16 v #4969 > >
00:04:16 v #4970 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:16 v #4971 > > nominal any =
00:04:16 v #4972 > >     `(
00:04:16 v #4973 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:04:16 v #4974 > > Fable.Core.Emit(\"core::any::Any\")>]]\ntype core_any_Any = class
00:04:16 v #4975 > > end\n#else\ntype core_any_Any = obj\n#endif\n"
00:04:16 v #4976 > >         $'' : $'core_any_Any'
00:04:16 v #4977 > >     )
00:04:16 v #4978 > >
00:04:16 v #4979 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:16 v #4980 > > │ ### try
00:04:16 v #4981 > >
00:04:16 v #4982 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:16 v #4983 > > nominal try t =
00:04:16 v #4984 > >     `(
00:04:16 v #4985 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:04:16 v #4986 > > Fable.Core.Emit(\"_\")>]]\n#endif\ntype core_ops_Try<'T> = class end"
00:04:16 v #4987 > >         $'' : $'core_ops_Try<`t>'
00:04:16 v #4988 > >     )
00:04:16 v #4989 > >
00:04:16 v #4990 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:16 v #4991 > > │ ### cow
00:04:16 v #4992 > >
00:04:16 v #4993 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:16 v #4994 > > nominal cow t =
00:04:16 v #4995 > >     `(
00:04:16 v #4996 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:04:16 v #4997 > > Fable.Core.Emit(\"std::borrow::Cow<$0>\")>]]\n#endif\ntype std_borrow_Cow<'T> =
00:04:16 v #4998 > > class end"
00:04:16 v #4999 > >         $'' : $'std_borrow_Cow<`t>'
00:04:16 v #5000 > >     )
00:04:16 v #5001 > >
00:04:16 v #5002 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:16 v #5003 > > │ ### ref_cell
00:04:16 v #5004 > >
00:04:16 v #5005 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:16 v #5006 > > nominal ref_cell t =
00:04:16 v #5007 > >     `(
00:04:16 v #5008 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:04:16 v #5009 > > Fable.Core.Emit(\"std::cell::RefCell<$0>\")>]]\n#endif\ntype
00:04:16 v #5010 > > std_cell_RefCell<'T> = class end"
00:04:16 v #5011 > >         $'' : $'std_cell_RefCell<`t>'
00:04:16 v #5012 > >     )
00:04:17 v #5013 > >
00:04:17 v #5014 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:17 v #5015 > > │ ### cell_ref
00:04:17 v #5016 > >
00:04:17 v #5017 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:17 v #5018 > > nominal cell_ref t =
00:04:17 v #5019 > >     `(
00:04:17 v #5020 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:04:17 v #5021 > > Fable.Core.Emit(\"std::cell::Ref<$0>\")>]]\n#endif\ntype std_cell_Ref<'T> =
00:04:17 v #5022 > > class end"
00:04:17 v #5023 > >         $'' : $'std_cell_Ref<`t>'
00:04:17 v #5024 > >     )
00:04:17 v #5025 > >
00:04:17 v #5026 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:17 v #5027 > > │ ### rc
00:04:17 v #5028 > >
00:04:17 v #5029 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:17 v #5030 > > nominal rc t =
00:04:17 v #5031 > >     `(
00:04:17 v #5032 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:04:17 v #5033 > > Fable.Core.Emit(\"std::rc::Rc<$0>\")>]]\n#endif\ntype std_rc_Rc<'T> = class end"
00:04:17 v #5034 > >         $'' : $'std_rc_Rc<`t>'
00:04:17 v #5035 > >     )
00:04:17 v #5036 > >
00:04:17 v #5037 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:17 v #5038 > > │ ### lifetime_ref
00:04:17 v #5039 > >
00:04:17 v #5040 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:17 v #5041 > > nominal lifetime_ref (t : * -> *) u =
00:04:17 v #5042 > >     `(
00:04:17 v #5043 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:04:17 v #5044 > > Fable.Core.Emit(\"$0\")>]]\n#endif\ntype LifetimeRef<'T> = class end"
00:04:17 v #5045 > >         $'' : $'LifetimeRef<`(t u)>'
00:04:17 v #5046 > >     )
00:04:17 v #5047 > >
00:04:17 v #5048 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:17 v #5049 > > │ ### lifetime_join
00:04:17 v #5050 > >
00:04:17 v #5051 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:17 v #5052 > > nominal lifetime_join t u =
00:04:17 v #5053 > >     `(
00:04:17 v #5054 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; Fable.Core.Emit(\"$0 +
00:04:17 v #5055 > > $1\")>]]\n#endif\ntype LifetimeJoin<'T, 'U> = class end"
00:04:17 v #5056 > >         $'' : $'LifetimeJoin<`t, `u>'
00:04:17 v #5057 > >     )
00:04:17 v #5058 > >
00:04:17 v #5059 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:17 v #5060 > > │ ### lifetime
00:04:17 v #5061 > >
00:04:17 v #5062 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:17 v #5063 > > nominal lifetime t u =
00:04:17 v #5064 > >     `(
00:04:17 v #5065 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; Fable.Core.Emit(\"$0
00:04:17 v #5066 > > $1\")>]]\n#endif\ntype Lifetime<'T, 'U> = class end"
00:04:17 v #5067 > >         $'' : $'Lifetime<`t, `u>'
00:04:17 v #5068 > >     )
00:04:17 v #5069 > >
00:04:17 v #5070 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:17 v #5071 > > │ ### static_lifetime
00:04:17 v #5072 > >
00:04:17 v #5073 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:17 v #5074 > > nominal static_lifetime =
00:04:17 v #5075 > >     `(
00:04:17 v #5076 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:04:17 v #5077 > > Fable.Core.Emit(\"'static\")>]]\n#endif\ntype StaticLifetime = class end"
00:04:17 v #5078 > >         $'' : $'StaticLifetime'
00:04:17 v #5079 > >     )
00:04:18 v #5080 > >
00:04:18 v #5081 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:18 v #5082 > > │ ### ref
00:04:18 v #5083 > >
00:04:18 v #5084 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:18 v #5085 > > nominal ref t =
00:04:18 v #5086 > >     `(
00:04:18 v #5087 > >         backend_switch `(()) `({}) {
00:04:18 v #5088 > >             Fsharp =
00:04:18 v #5089 > >                 (fun () =>
00:04:18 v #5090 > >                     global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:04:18 v #5091 > > Fable.Core.Emit(\"&$0\")>]]\ntype Ref<'T> = class end\n#else\ntype Ref<'T> =
00:04:18 v #5092 > > 'T\n#endif\n"
00:04:18 v #5093 > >                 ) : () -> ()
00:04:18 v #5094 > >         }
00:04:18 v #5095 > >         $'' : $'Ref<`t>'
00:04:18 v #5096 > >     )
00:04:18 v #5097 > >
00:04:18 v #5098 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:18 v #5099 > > │ ### static_ref
00:04:18 v #5100 > >
00:04:18 v #5101 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:18 v #5102 > > nominal static_ref t = ref (lifetime static_lifetime t)
00:04:18 v #5103 > >
00:04:18 v #5104 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:18 v #5105 > > │ ### weak_rc
00:04:18 v #5106 > >
00:04:18 v #5107 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:18 v #5108 > > nominal weak_rc t =
00:04:18 v #5109 > >     `(
00:04:18 v #5110 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:04:18 v #5111 > > Fable.Core.Emit(\"std::rc::Weak<$0>\")>]]\n#endif\ntype std_rc_Weak<'T> = class
00:04:18 v #5112 > > end"
00:04:18 v #5113 > >         $'' : $'std_rc_Weak<`t>'
00:04:18 v #5114 > >     )
00:04:18 v #5115 > >
00:04:18 v #5116 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:18 v #5117 > > │ ### box
00:04:18 v #5118 > >
00:04:18 v #5119 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:18 v #5120 > > nominal box t =
00:04:18 v #5121 > >     `(
00:04:18 v #5122 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:04:18 v #5123 > > Fable.Core.Emit(\"Box<$0>\")>]]\n#endif\ntype Box<'T> = class end"
00:04:18 v #5124 > >         $'' : $'Box<`t>'
00:04:18 v #5125 > >     )
00:04:18 v #5126 > >
00:04:18 v #5127 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:18 v #5128 > > │ ### mut_cell
00:04:18 v #5129 > >
00:04:18 v #5130 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:18 v #5131 > > nominal mut_cell t =
00:04:18 v #5132 > >     `(
00:04:18 v #5133 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:04:18 v #5134 > > Fable.Core.Emit(\"MutCell<$0>\")>]]\n#endif\ntype MutCell<'T> = class end"
00:04:18 v #5135 > >         $'' : $'MutCell<`t>'
00:04:18 v #5136 > >     )
00:04:18 v #5137 > >
00:04:18 v #5138 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:18 v #5139 > > │ ### pin
00:04:18 v #5140 > >
00:04:18 v #5141 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:18 v #5142 > > nominal pin t =
00:04:18 v #5143 > >     `(
00:04:18 v #5144 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:04:18 v #5145 > > Fable.Core.Emit(\"std::pin::Pin<$0>\")>]]\n#endif\ntype std_pin_Pin<'T> = class
00:04:18 v #5146 > > end"
00:04:18 v #5147 > >         $'' : $'std_pin_Pin<`t>'
00:04:18 v #5148 > >     )
00:04:19 v #5149 > >
00:04:19 v #5150 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:19 v #5151 > > │ ### dyn'
00:04:19 v #5152 > >
00:04:19 v #5153 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:19 v #5154 > > nominal dyn' t =
00:04:19 v #5155 > >     `(
00:04:19 v #5156 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; Fable.Core.Emit(\"dyn
00:04:19 v #5157 > > $0\")>]]\n#endif\ntype Dyn<'T> = class end"
00:04:19 v #5158 > >         $'' : $'Dyn<`t>'
00:04:19 v #5159 > >     )
00:04:19 v #5160 > >
00:04:19 v #5161 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:19 v #5162 > > │ ### fn'
00:04:19 v #5163 > >
00:04:19 v #5164 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:19 v #5165 > > nominal fn' t =
00:04:19 v #5166 > >     `(
00:04:19 v #5167 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; Fable.Core.Emit(\"Fn()
00:04:19 v #5168 > > -> $0\")>]]\n#endif\ntype Fn<'T> = class end"
00:04:19 v #5169 > >         $'' : $'Fn<`t>'
00:04:19 v #5170 > >     )
00:04:19 v #5171 > >
00:04:19 v #5172 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:19 v #5173 > > │ ### action_fn
00:04:19 v #5174 > >
00:04:19 v #5175 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:19 v #5176 > > nominal action_fn t =
00:04:19 v #5177 > >     `(
00:04:19 v #5178 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:04:19 v #5179 > > Fable.Core.Emit(\"Fn($0)\")>]]\n#endif\ntype ActionFn<'T> = class end"
00:04:19 v #5180 > >         $'' : $'ActionFn<`t>'
00:04:19 v #5181 > >     )
00:04:19 v #5182 > >
00:04:19 v #5183 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:19 v #5184 > > │ ### action_fn2
00:04:19 v #5185 > >
00:04:19 v #5186 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:19 v #5187 > > nominal action_fn2 t u =
00:04:19 v #5188 > >     `(
00:04:19 v #5189 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:04:19 v #5190 > > Fable.Core.Emit(\"Fn($0, $1)\")>]]\n#endif\ntype ActionFn2<'T, 'U> = class end"
00:04:19 v #5191 > >         $'' : $'ActionFn2<`t, `u>'
00:04:19 v #5192 > >     )
00:04:19 v #5193 > >
00:04:19 v #5194 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:19 v #5195 > > │ ### fn_once
00:04:19 v #5196 > >
00:04:19 v #5197 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:19 v #5198 > > nominal fn_once t =
00:04:19 v #5199 > >     `(
00:04:19 v #5200 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:04:19 v #5201 > > Fable.Core.Emit(\"FnOnce() -> $0\")>]]\n#endif\ntype FnOnce<'T> = class end"
00:04:19 v #5202 > >         $'' : $'FnOnce<`t>'
00:04:19 v #5203 > >     )
00:04:19 v #5204 > >
00:04:19 v #5205 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:19 v #5206 > > │ ### fn_unit
00:04:19 v #5207 > >
00:04:19 v #5208 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:19 v #5209 > > nominal fn_unit =
00:04:19 v #5210 > >     `(
00:04:19 v #5211 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:04:19 v #5212 > > Fable.Core.Emit(\"Fn()\")>]]\n#endif\ntype FnUnit = class end"
00:04:19 v #5213 > >         $'' : $'FnUnit'
00:04:19 v #5214 > >     )
00:04:19 v #5215 > >
00:04:19 v #5216 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:19 v #5217 > > │ ### func0
00:04:19 v #5218 > >
00:04:19 v #5219 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:19 v #5220 > > nominal func0 t =
00:04:19 v #5221 > >     `(
00:04:19 v #5222 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:04:19 v #5223 > > Fable.Core.Emit(\"Func0<$0>\")>]]\n#endif\ntype Func0<'T> = class end"
00:04:19 v #5224 > >         $'' : $'Func0<`t>'
00:04:19 v #5225 > >     )
00:04:20 v #5226 > >
00:04:20 v #5227 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:20 v #5228 > > │ ### func1
00:04:20 v #5229 > >
00:04:20 v #5230 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:20 v #5231 > > nominal func1 t u =
00:04:20 v #5232 > >     `(
00:04:20 v #5233 > >         typecase t with
00:04:20 v #5234 > >         | () => `func0 `u
00:04:20 v #5235 > >         | _ =>
00:04:20 v #5236 > >             global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:04:20 v #5237 > > Fable.Core.Emit(\"Func1<$0, $1>\")>]]\n#endif\ntype Func0<'T, 'U> = class end"
00:04:20 v #5238 > >             $'' : $'Func0<`t, `u>'
00:04:20 v #5239 > >     )
00:04:20 v #5240 > >
00:04:20 v #5241 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:20 v #5242 > > │ ### impl
00:04:20 v #5243 > >
00:04:20 v #5244 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:20 v #5245 > > nominal impl t =
00:04:20 v #5246 > >     `(
00:04:20 v #5247 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; Fable.Core.Emit(\"impl
00:04:20 v #5248 > > $0\")>]]\n#endif\ntype Impl<'T> = class end"
00:04:20 v #5249 > >         $'' : $'Impl<`t>'
00:04:20 v #5250 > >     )
00:04:20 v #5251 > >
00:04:20 v #5252 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:20 v #5253 > > │ ### mut'
00:04:20 v #5254 > >
00:04:20 v #5255 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:20 v #5256 > > nominal mut' t =
00:04:20 v #5257 > >     `(
00:04:20 v #5258 > >         backend_switch `(()) `({}) {
00:04:20 v #5259 > >             Fsharp =
00:04:20 v #5260 > >                 (fun () =>
00:04:20 v #5261 > >                     global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:04:20 v #5262 > > Fable.Core.Emit(\"mut $0\")>]]\n#endif\ntype Mut<'T> = class end"
00:04:20 v #5263 > >                 ) : () -> ()
00:04:20 v #5264 > >         }
00:04:20 v #5265 > >         $'' : $'Mut<`t>'
00:04:20 v #5266 > >     )
00:04:20 v #5267 > >
00:04:20 v #5268 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:20 v #5269 > > │ ### ref_mut
00:04:20 v #5270 > >
00:04:20 v #5271 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:20 v #5272 > > nominal ref_mut t =
00:04:20 v #5273 > >     `(
00:04:20 v #5274 > >         backend_switch `(()) `({}) {
00:04:20 v #5275 > >             Fsharp =
00:04:20 v #5276 > >                 (fun () =>
00:04:20 v #5277 > >                     global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:04:20 v #5278 > > Fable.Core.Emit(\"std::cell::RefMut<$0>\")>]]\n#endif\ntype std_cell_RefMut<'T>
00:04:20 v #5279 > > = class end"
00:04:20 v #5280 > >                 ) : () -> ()
00:04:20 v #5281 > >         }
00:04:20 v #5282 > >         $'' : $'std_cell_RefMut<`t>'
00:04:20 v #5283 > >     )
00:04:20 v #5284 > >
00:04:20 v #5285 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:20 v #5286 > > │ ### send
00:04:20 v #5287 > >
00:04:20 v #5288 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:20 v #5289 > > nominal send t =
00:04:20 v #5290 > >     `(
00:04:20 v #5291 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:04:20 v #5292 > > Fable.Core.Emit(\"Send\")>]]\n#endif\ntype Send<'T> = class end"
00:04:20 v #5293 > >         $'' : lifetime_join t $'Send<`t>'
00:04:20 v #5294 > >     )
00:04:20 v #5295 > >
00:04:20 v #5296 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:20 v #5297 > > │ ### emit_expr
00:04:20 v #5298 > >
00:04:20 v #5299 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:20 v #5300 > > inl emit_expr forall a t. (args : a) (code : string) : t =
00:04:20 v #5301 > >     $'Fable.Core.RustInterop.emitRustExpr !args !code '
00:04:21 v #5302 > >
00:04:21 v #5303 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:21 v #5304 > > │ ### (~!\\)
00:04:21 v #5305 > >
00:04:21 v #5306 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:21 v #5307 > > inl (~!\) forall t. (code : string) : t =
00:04:21 v #5308 > >     emit_expr () code
00:04:21 v #5309 > >
00:04:21 v #5310 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:21 v #5311 > > │ ### (~!\\\\)
00:04:21 v #5312 > >
00:04:21 v #5313 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:21 v #5314 > > inl (~!\\) forall t u. ((args : t), (code : string)) : u =
00:04:21 v #5315 > >     emit_expr args code
00:04:21 v #5316 > >
00:04:21 v #5317 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:21 v #5318 > > │ ### ptr
00:04:21 v #5319 > >
00:04:21 v #5320 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:21 v #5321 > > nominal ptr t =
00:04:21 v #5322 > >     `(
00:04:21 v #5323 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:04:21 v #5324 > > Fable.Core.Emit(\"*const $0\")>]]\n#endif\ntype Ptr<'T> = class end"
00:04:21 v #5325 > >         $'' : $'Ptr<`t>'
00:04:21 v #5326 > >     )
00:04:21 v #5327 > >
00:04:21 v #5328 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:21 v #5329 > > │ ### ptr_read
00:04:21 v #5330 > >
00:04:21 v #5331 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:21 v #5332 > > inl ptr_read forall t. (x : ptr t) : t =
00:04:21 v #5333 > >     !\\(x, $'"std::ptr::read($0)"')
00:04:21 v #5334 > >
00:04:21 v #5335 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:21 v #5336 > > │ ### u128
00:04:21 v #5337 > >
00:04:21 v #5338 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:21 v #5339 > > nominal u128 =
00:04:21 v #5340 > >     `(
00:04:21 v #5341 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:04:21 v #5342 > > Fable.Core.Emit(\"u128\")>]]\n#endif\ntype u128 = class end"
00:04:21 v #5343 > >         $'' : $'u128'
00:04:21 v #5344 > >     )
00:04:21 v #5345 > >
00:04:21 v #5346 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:21 v #5347 > > inl u128 forall t. (x : t) : u128 =
00:04:21 v #5348 > >     !\\(x, $'"$0 as u128"')
00:04:22 v #5349 > >
00:04:22 v #5350 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:22 v #5351 > > │ ### f64
00:04:22 v #5352 > >
00:04:22 v #5353 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:22 v #5354 > > inl f64 forall t. (x : t) : f64 =
00:04:22 v #5355 > >     !\\(x, $'"$0 as f64"')
00:04:22 v #5356 > >
00:04:22 v #5357 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:22 v #5358 > > │ ### unwrap_0
00:04:22 v #5359 > >
00:04:22 v #5360 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:22 v #5361 > > inl unwrap_0 forall (t : * -> *) u. (x : t u) : u =
00:04:22 v #5362 > >     !\\(x, $'"$0.0"')
00:04:22 v #5363 > >
00:04:22 v #5364 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:22 v #5365 > > │ ### unwrap_0_ref
00:04:22 v #5366 > >
00:04:22 v #5367 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:22 v #5368 > > inl unwrap_0_ref forall (t : * -> *) u. (x : ref (t u)) : ref u =
00:04:22 v #5369 > >     !\\(x, $'"&$0.0"')
00:04:22 v #5370 > >
00:04:22 v #5371 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:22 v #5372 > > │ ### len
00:04:22 v #5373 > >
00:04:22 v #5374 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:22 v #5375 > > inl len forall t u {uint; int}. (x : t) : u =
00:04:22 v #5376 > >     !\($'$"!x.len()"')
00:04:22 v #5377 > >
00:04:22 v #5378 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:22 v #5379 > > │ ### len'
00:04:22 v #5380 > >
00:04:22 v #5381 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:22 v #5382 > > inl len' forall t u {uint; int}. (x : t) : u =
00:04:22 v #5383 > >     !\\(x, $'$"$0.len()"')
00:04:22 v #5384 > >
00:04:22 v #5385 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:22 v #5386 > > │ ### emit
00:04:22 v #5387 > >
00:04:22 v #5388 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:22 v #5389 > > inl emit forall t. (x : t) : t =
00:04:22 v #5390 > >     !\\(x, $'"$0"')
00:04:22 v #5391 > >
00:04:22 v #5392 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:22 v #5393 > > │ ### emit'
00:04:22 v #5394 > >
00:04:22 v #5395 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:22 v #5396 > > inl emit' forall t. (x : t) : t =
00:04:22 v #5397 > >     (!\\(x, $'$"true; let !x = $0"') : bool) |> ignore
00:04:22 v #5398 > >     x
00:04:23 v #5399 > >
00:04:23 v #5400 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:23 v #5401 > > │ ### clone
00:04:23 v #5402 > >
00:04:23 v #5403 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:23 v #5404 > > inl clone forall t. (x : t) : t =
00:04:23 v #5405 > >     !\\(x, $'"$0.clone()"')
00:04:23 v #5406 > >
00:04:23 v #5407 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:23 v #5408 > > │ ### dbg
00:04:23 v #5409 > >
00:04:23 v #5410 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:23 v #5411 > > inl dbg forall t. (x : t) : t =
00:04:23 v #5412 > >     !\\(x, $'"dbg\!($0)"')
00:04:23 v #5413 > >
00:04:23 v #5414 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:23 v #5415 > > │ ### new_box
00:04:23 v #5416 > >
00:04:23 v #5417 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:23 v #5418 > > inl new_box forall t. (x : t) : box t =
00:04:23 v #5419 > >     !\\(x, $'"Box::new($0)"')
00:04:23 v #5420 > >
00:04:23 v #5421 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:23 v #5422 > > │ ### new_rc
00:04:23 v #5423 > >
00:04:23 v #5424 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:23 v #5425 > > inl new_rc forall t. (x : t) : rc t =
00:04:23 v #5426 > >     !\\(x, $'"std::rc::Rc::new($0)"')
00:04:23 v #5427 > >
00:04:23 v #5428 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:23 v #5429 > > │ ### rc_clone
00:04:23 v #5430 > >
00:04:23 v #5431 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:23 v #5432 > > inl rc_clone forall t. (x : rc t) : rc t =
00:04:23 v #5433 > >     !\\(x, $'"std::rc::Rc::clone(&$0)"')
00:04:23 v #5434 > >
00:04:23 v #5435 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:23 v #5436 > > │ ### rc_unwrap_or_clone
00:04:23 v #5437 > >
00:04:23 v #5438 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:23 v #5439 > > inl rc_unwrap_or_clone forall t. (x : rc t) : t =
00:04:23 v #5440 > >     !\\(x, $'"std::rc::Rc::unwrap_or_clone($0)"')
00:04:24 v #5441 > >
00:04:24 v #5442 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:24 v #5443 > > │ ### rc_downgrade
00:04:24 v #5444 > >
00:04:24 v #5445 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:24 v #5446 > > inl rc_downgrade forall t. (x : rc t) : weak_rc t =
00:04:24 v #5447 > >     !\\(x, $'"std::rc::Rc::downgrade(&$0)"')
00:04:24 v #5448 > >
00:04:24 v #5449 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:24 v #5450 > > │ ### new_ref_cell
00:04:24 v #5451 > >
00:04:24 v #5452 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:24 v #5453 > > inl new_ref_cell forall t. (x : t) : ref_cell t =
00:04:24 v #5454 > >     !\($'"std::cell::RefCell::new(!x)"')
00:04:24 v #5455 > >
00:04:24 v #5456 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:24 v #5457 > > │ ### ref_cell_borrow
00:04:24 v #5458 > >
00:04:24 v #5459 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:24 v #5460 > > inl ref_cell_borrow forall t. (x : rc (ref_cell t)) : cell_ref t =
00:04:24 v #5461 > >     !\\(x, $'"std::cell::RefCell::borrow(&std::rc::Rc::clone(&$0))"')
00:04:24 v #5462 > >
00:04:24 v #5463 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:24 v #5464 > > │ ### ref_cell_borrow_mut
00:04:24 v #5465 > >
00:04:24 v #5466 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:24 v #5467 > > inl ref_cell_borrow_mut forall t. (x : rc (ref_cell t)) : mut' t =
00:04:24 v #5468 > >     !\\(x, $'"std::cell::RefCell::borrow_mut(&std::rc::Rc::clone(&$0))"')
00:04:24 v #5469 > >
00:04:24 v #5470 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:24 v #5471 > > │ ### ref_leak
00:04:24 v #5472 > >
00:04:24 v #5473 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:24 v #5474 > > inl ref_leak forall t. (x : cell_ref t) : ref t =
00:04:24 v #5475 > >     !\\(x, $'"std::cell::Ref::leak($0)"')
00:04:24 v #5476 > >
00:04:24 v #5477 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:24 v #5478 > > │ ### to_mut
00:04:24 v #5479 > >
00:04:24 v #5480 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:24 v #5481 > > inl to_mut forall t. (x : t) : () =
00:04:24 v #5482 > >     (!\($'"true; // 1"') : bool) |> ignore
00:04:24 v #5483 > >     !\($'"let mut !x = !x"') : ()
00:04:24 v #5484 > >     // (!\($'"true; !x"') : bool) |> ignore
00:04:24 v #5485 > >     // !\($'"!x"')
00:04:24 v #5486 > >     // inl result = !\($'"!x"') : mut' t
00:04:24 v #5487 > >     // !\($'"!result"')
00:04:24 v #5488 > >     // inl result = !\($'"*/ // a"') : mut' t
00:04:24 v #5489 > >     // inl result = !\($'"!x"') : mut' t
00:04:24 v #5490 > >     // result |> fun x => $'!x |> unbox // b'
00:04:25 v #5491 > >
00:04:25 v #5492 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:25 v #5493 > > │ ### to_ref
00:04:25 v #5494 > >
00:04:25 v #5495 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:25 v #5496 > > inl to_ref forall t. (x : t) : ref t =
00:04:25 v #5497 > >     !\\(x, $'"&$0"')
00:04:25 v #5498 > >
00:04:25 v #5499 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:25 v #5500 > > │ ### to_ref_mut
00:04:25 v #5501 > >
00:04:25 v #5502 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:25 v #5503 > > inl to_ref_mut forall t. (x : t) : ref (mut' t) =
00:04:25 v #5504 > >     x |> to_mut
00:04:25 v #5505 > >     !\\(x, $'"&mut $0"')
00:04:25 v #5506 > >
00:04:25 v #5507 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:25 v #5508 > > │ ### to_ref_mut'
00:04:25 v #5509 > >
00:04:25 v #5510 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:25 v #5511 > > inl to_ref_mut' forall t. (x : ref_mut (ref (mut' t))) : ref (mut' t) =
00:04:25 v #5512 > >     x |> to_mut
00:04:25 v #5513 > >     !\\(x, $'"&mut $0"')
00:04:25 v #5514 > >
00:04:25 v #5515 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:25 v #5516 > > │ ### ref_cell_borrow_mut'
00:04:25 v #5517 > >
00:04:25 v #5518 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:25 v #5519 > > inl ref_cell_borrow_mut' forall t. (x : rc (ref_cell (ref (mut' t)))) : ref
00:04:25 v #5520 > > (mut' t) =
00:04:25 v #5521 > >     inl x = x |> rc_clone
00:04:25 v #5522 > >     inl x : ref_mut (ref (mut' t)) = !\\(x,
00:04:25 v #5523 > > $'"std::cell::RefCell::borrow_mut(&$0)"')
00:04:25 v #5524 > >     x |> to_ref_mut'
00:04:25 v #5525 > >
00:04:25 v #5526 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:25 v #5527 > > │ ### ref_map
00:04:25 v #5528 > >
00:04:25 v #5529 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:25 v #5530 > > inl ref_map forall t u. (fn : t -> u) (x : ref t) : ref u =
00:04:25 v #5531 > >     !\($'"!fn(!x)"')
00:04:25 v #5532 > >
00:04:25 v #5533 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:25 v #5534 > > │ ### ref_eval
00:04:25 v #5535 > >
00:04:25 v #5536 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:25 v #5537 > > inl ref_eval forall t u. (fn : t -> u) (ref : ref t) : u =
00:04:25 v #5538 > >     !\\(fn, $'"$0(!ref.clone())"')
00:04:26 v #5539 > >
00:04:26 v #5540 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:26 v #5541 > > │ ### cow_as_ref
00:04:26 v #5542 > >
00:04:26 v #5543 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:26 v #5544 > > inl cow_as_ref forall t. (s : cow t) : ref t =
00:04:26 v #5545 > >     !\\(s, $'"$0.as_ref()"')
00:04:26 v #5546 > >
00:04:26 v #5547 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:26 v #5548 > > │ ### from_mut
00:04:26 v #5549 > >
00:04:26 v #5550 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:26 v #5551 > > inl from_mut forall t. (x : mut' t) : t =
00:04:26 v #5552 > >     !\\(x, $'"$0"')
00:04:26 v #5553 > >
00:04:26 v #5554 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:26 v #5555 > > │ ### box_fn
00:04:26 v #5556 > >
00:04:26 v #5557 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:26 v #5558 > > inl box_fn forall t. (x : () -> ()) : box t =
00:04:26 v #5559 > >     inl x = join x
00:04:26 v #5560 > >     !\($'"Box::new(move || !x())"')
00:04:26 v #5561 > >
00:04:26 v #5562 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:26 v #5563 > > │ ### box_pin
00:04:26 v #5564 > >
00:04:26 v #5565 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:26 v #5566 > > inl box_pin forall t. (x : t) : pin (box t) =
00:04:26 v #5567 > >     !\\(x, $'"Box::pin($0)"')
00:04:26 v #5568 > >
00:04:26 v #5569 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:26 v #5570 > > │ ### deref
00:04:26 v #5571 > >
00:04:26 v #5572 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:26 v #5573 > > inl deref forall t. (ref : ref t) : t =
00:04:26 v #5574 > >     !\\(ref, $'"*$0"')
00:04:26 v #5575 > >
00:04:26 v #5576 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:26 v #5577 > > │ ### deref_mut
00:04:26 v #5578 > >
00:04:26 v #5579 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:26 v #5580 > > inl deref_mut forall t. (x : ref (mut' t)) : t =
00:04:26 v #5581 > >     !\\(x, $'"*$0"')
00:04:27 v #5582 > >
00:04:27 v #5583 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:27 v #5584 > > │ ### clone_deref
00:04:27 v #5585 > >
00:04:27 v #5586 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:27 v #5587 > > inl clone_deref forall t. (ref : ref t) : t =
00:04:27 v #5588 > >     !\\(ref, $'"$0.clone()"')
00:04:27 v #5589 > >
00:04:27 v #5590 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:27 v #5591 > > │ ### from_ref
00:04:27 v #5592 > >
00:04:27 v #5593 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:27 v #5594 > > inl from_ref forall t. (ref : ref t) : t =
00:04:27 v #5595 > >     !\($'"!ref"')
00:04:27 v #5596 > >
00:04:27 v #5597 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:27 v #5598 > > │ ### from_ref_mut
00:04:27 v #5599 > >
00:04:27 v #5600 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:27 v #5601 > > inl from_ref_mut forall t. (ref : ref (mut' t)) : t =
00:04:27 v #5602 > >     !\($'"!ref"')
00:04:27 v #5603 > >
00:04:27 v #5604 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:27 v #5605 > > │ ### reref
00:04:27 v #5606 > >
00:04:27 v #5607 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:27 v #5608 > > inl reref forall t (u : * -> *). (x : ref (u t)) : ref t =
00:04:27 v #5609 > >     !\($'$"&*!x"')
00:04:27 v #5610 > >
00:04:27 v #5611 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:27 v #5612 > > │ ### into
00:04:27 v #5613 > >
00:04:27 v #5614 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:27 v #5615 > > inl into forall t u. (x : t) : u =
00:04:27 v #5616 > >     !\($'"!x.into()"')
00:04:27 v #5617 > >
00:04:27 v #5618 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:27 v #5619 > > │ ### ops_deref
00:04:27 v #5620 > >
00:04:27 v #5621 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:27 v #5622 > > inl ops_deref forall t. (ref : t) : t =
00:04:27 v #5623 > >     !\\(ref, $'"core::ops::Deref::deref(&$0)"')
00:04:28 v #5624 > >
00:04:28 v #5625 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:28 v #5626 > > │ ### func0_eval
00:04:28 v #5627 > >
00:04:28 v #5628 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:28 v #5629 > > inl func0_eval forall t. (x : func0 t) : t =
00:04:28 v #5630 > >     !\\(x, $'"$0()"')
00:04:28 v #5631 > >
00:04:28 v #5632 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:28 v #5633 > > │ ### func0_move
00:04:28 v #5634 > >
00:04:28 v #5635 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:28 v #5636 > > inl func0_move forall t. (fn : func0 t) : t =
00:04:28 v #5637 > >     inl fn = join fn
00:04:28 v #5638 > >     !\($'"(move || !fn())()"')
00:04:28 v #5639 > >
00:04:28 v #5640 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:28 v #5641 > > │ ### func1_move
00:04:28 v #5642 > >
00:04:28 v #5643 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:28 v #5644 > > inl func1_move forall t u. (x : t) (fn : func1 t u) : u =
00:04:28 v #5645 > >     inl fn = join fn
00:04:28 v #5646 > >     inl is_unit : bool =
00:04:28 v #5647 > >         real
00:04:28 v #5648 > >             typecase t with
00:04:28 v #5649 > >             | () => true
00:04:28 v #5650 > >             | _ => false
00:04:28 v #5651 > >     inl result =
00:04:28 v #5652 > >         if is_unit
00:04:28 v #5653 > >         then !\($'"(move || !fn())()"') : u
00:04:28 v #5654 > >         else
00:04:28 v #5655 > >             $'let func1_move_x = !x //' : ()
00:04:28 v #5656 > >             inl func1_move_x : infer = $'func1_move_x'
00:04:28 v #5657 > >             !\\(func1_move_x, $'"(move |x| !fn(x))($0)"') : u
00:04:28 v #5658 > >     result
00:04:28 v #5659 > >
00:04:28 v #5660 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:28 v #5661 > > │ ### func0_from
00:04:28 v #5662 > >
00:04:28 v #5663 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:28 v #5664 > > inl func0_from forall t. (fn : () -> t) : func0 t =
00:04:28 v #5665 > >     inl result' : unit = $'()'
00:04:28 v #5666 > >     (!\($'$"true; let _func0_from_!result' = Func0::from(move || {{ //"') :
00:04:28 v #5667 > > bool) |> ignore
00:04:28 v #5668 > >     inl is_unit : bool =
00:04:28 v #5669 > >         real
00:04:28 v #5670 > >             typecase t with
00:04:28 v #5671 > >             | () => true
00:04:28 v #5672 > >             | _ => false
00:04:28 v #5673 > >     inl result =
00:04:28 v #5674 > >         if is_unit |> not
00:04:28 v #5675 > >         then fn ()
00:04:28 v #5676 > >         else
00:04:28 v #5677 > >             (fn >> ignore) ()
00:04:28 v #5678 > >             // (!\($'$"true; // rust.func0_from"') : bool) |> ignore
00:04:28 v #5679 > >             $'// rust.func0_from / is_unit'
00:04:28 v #5680 > >     if is_unit
00:04:28 v #5681 > >     then (!\($'$"true; /*"') : bool) |> ignore
00:04:28 v #5682 > >     else (!\\(result, $'$"true; $0 /*"') : bool) |> ignore
00:04:28 v #5683 > >     (!\($'$"*/ }}); //"') : bool) |> ignore
00:04:28 v #5684 > >     !\($'$"_func0_from_!result'"')
00:04:28 v #5685 > >
00:04:28 v #5686 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:28 v #5687 > > │ ### func1_from
00:04:28 v #5688 > >
00:04:28 v #5689 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:28 v #5690 > > inl func1_from forall t u. (fn : t -> u) : func1 t u =
00:04:28 v #5691 > >     inl result' : unit = $'()'
00:04:28 v #5692 > >     inl is_unit : bool =
00:04:28 v #5693 > >         real
00:04:28 v #5694 > >             typecase u with
00:04:28 v #5695 > >             | () => true
00:04:28 v #5696 > >             | _ => false
00:04:28 v #5697 > >     inl is_unit' : bool =
00:04:28 v #5698 > >         real
00:04:28 v #5699 > >             typecase t with
00:04:28 v #5700 > >             | () => true
00:04:28 v #5701 > >             | _ => false
00:04:28 v #5702 > >     if is_unit
00:04:28 v #5703 > >     then (!\($'$"true; let _func1_from_!result' = Func0::from(move || {{ //"') :
00:04:28 v #5704 > > bool) |> ignore
00:04:28 v #5705 > >     else (!\($'$"true; let _func1_from_!result' = Func1::from(move |value| {{
00:04:28 v #5706 > > //"') : bool) |> ignore
00:04:28 v #5707 > >
00:04:28 v #5708 > >     inl result =
00:04:28 v #5709 > >         if is_unit'
00:04:28 v #5710 > >         then !\($'$"()"')
00:04:28 v #5711 > >         else !\($'$"value"')
00:04:28 v #5712 > >         |> fn
00:04:28 v #5713 > >
00:04:28 v #5714 > >     if is_unit
00:04:28 v #5715 > >     then (!\($'$"true; /*"') : bool) |> ignore
00:04:28 v #5716 > >     else
00:04:28 v #5717 > >         $'let func1_from_result = !result //' : ()
00:04:28 v #5718 > >         inl func1_from_result : infer = $'func1_from_result'
00:04:28 v #5719 > >         (!\\(func1_from_result, $'$"true; $0 /*"') : bool) |> ignore
00:04:28 v #5720 > >     (!\($'$"*/ }}); //"') : bool) |> ignore
00:04:28 v #5721 > >     !\($'$"_func1_from_!result'"')
00:04:28 v #5722 > >
00:04:28 v #5723 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:28 v #5724 > > │ ### new_func0
00:04:28 v #5725 > >
00:04:28 v #5726 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:28 v #5727 > > inl new_func0 forall t. (fn : () -> t) : func0 t =
00:04:28 v #5728 > >     !\\(fn, $'"Func0::new(|| $0())"')
00:04:29 v #5729 > >
00:04:29 v #5730 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:29 v #5731 > > │ ### move
00:04:29 v #5732 > >
00:04:29 v #5733 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:29 v #5734 > > inl move forall t. (fn : () -> t) : func0 t =
00:04:29 v #5735 > >     !\\(fn, $'"Func0::new(move || $0())"')
00:04:29 v #5736 > >
00:04:29 v #5737 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:29 v #5738 > > │ ### to_static_ref_unbox
00:04:29 v #5739 > >
00:04:29 v #5740 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:29 v #5741 > > inl to_static_ref_unbox forall t. (x : ref t) : static_ref t =
00:04:29 v #5742 > >     x |> unbox
00:04:29 v #5743 > >
00:04:29 v #5744 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:29 v #5745 > > │ ### from_static_ref_unbox
00:04:29 v #5746 > >
00:04:29 v #5747 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:29 v #5748 > > inl from_static_ref_unbox forall t. (x : static_ref t) : ref t =
00:04:29 v #5749 > >     x |> unbox
00:04:29 v #5750 > >
00:04:29 v #5751 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:29 v #5752 > > │ ### box_leak
00:04:29 v #5753 > >
00:04:29 v #5754 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:29 v #5755 > > inl box_leak forall t. (x : box t) : static_ref (mut' t) =
00:04:29 v #5756 > >     !\\(x, $'"Box::leak($0)"')
00:04:29 v #5757 > >
00:04:29 v #5758 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:29 v #5759 > > │ ### drop
00:04:29 v #5760 > >
00:04:29 v #5761 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:29 v #5762 > > inl drop forall t. (x : t) : () =
00:04:29 v #5763 > >     (!\\(x, $'"true; drop($0)"') : bool) |> ignore
00:04:29 v #5764 > >
00:04:29 v #5765 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:29 v #5766 > > │ ### break
00:04:29 v #5767 > >
00:04:29 v #5768 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:29 v #5769 > > inl break () : () =
00:04:29 v #5770 > >     (!\($'"true; break"') : bool) |> ignore
00:04:30 v #5771 > >
00:04:30 v #5772 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:30 v #5773 > > │ ### fix_closure'
00:04:30 v #5774 > >
00:04:30 v #5775 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:30 v #5776 > > inl fix_closure' forall t. (depth : u8 * u8) (x : t) : string =
00:04:30 v #5777 > >     inl rec loop text (acc : string) n : string =
00:04:30 v #5778 > >         if n <= 0
00:04:30 v #5779 > >         then acc
00:04:30 v #5780 > >         else loop text (acc +. text) (n - 1)
00:04:30 v #5781 > >     inl a = depth |> fst |> loop "}" ""
00:04:30 v #5782 > >     inl b = depth |> snd |> loop "{" ""
00:04:30 v #5783 > >     inl is_unit : bool =
00:04:30 v #5784 > >         real
00:04:30 v #5785 > >             typecase t with
00:04:30 v #5786 > >             | () => true
00:04:30 v #5787 > >             | _ => false
00:04:30 v #5788 > >     $'let x = !x //' : ()
00:04:30 v #5789 > >     inl x : infer = $'x'
00:04:30 v #5790 > >     inl result' : unit = $'()'
00:04:30 v #5791 > >     run_target_args (fun () => x) function
00:04:30 v #5792 > >         | Rust _ => fun x =>
00:04:30 v #5793 > >             if is_unit
00:04:30 v #5794 > >             then false
00:04:30 v #5795 > >             else
00:04:30 v #5796 > >                 (!\\(x, $'$"true; let _fix_closure_!result' = $0"') : bool) |>
00:04:30 v #5797 > > ignore
00:04:30 v #5798 > >                 true
00:04:30 v #5799 > >         | _ => fun x' => false
00:04:30 v #5800 > >     |> ignore
00:04:30 v #5801 > >     $'$"true; _fix_closure_!result' " + !a + "); " + !b + "
00:04:30 v #5802 > > rust.fix_closure\'"'
00:04:30 v #5803 > >
00:04:30 v #5804 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:30 v #5805 > > //// test
00:04:30 v #5806 > > //// print_code
00:04:30 v #5807 > >
00:04:30 v #5808 > > fix_closure' (3, 2) 0i32
00:04:30 v #5809 > > |> _assert_eq "true; _fix_closure_v9 }}}); {{ // rust.fix_closure'"
00:04:30 v #5810 > >
00:04:30 v #5811 > > ── [ 708.88ms - stdout ] ───────────────────────────────────────────────────────
00:04:30 v #5812 > > │ let rec method1 (v0 : bool) : bool =
00:04:30 v #5813 > > │     v0
00:04:30 v #5814 > > │ and closure0 (v0 : string) () : unit =
00:04:30 v #5815 > > │     let v1 : (string -> unit) = System.Console.WriteLine
00:04:30 v #5816 > > │     v1 v0
00:04:30 v #5817 > > │ and method0 () : unit =
00:04:30 v #5818 > > │     let v0 : string = ""
00:04:30 v #5819 > > │     let v1 : string = "}"
00:04:30 v #5820 > > │     let v2 : string = v0 + v1
00:04:30 v #5821 > > │     let v3 : string = v2 + v1
00:04:30 v #5822 > > │     let v4 : string = v3 + v1
00:04:30 v #5823 > > │     let v5 : string = "{"
00:04:30 v #5824 > > │     let v6 : string = v0 + v5
00:04:30 v #5825 > > │     let v7 : string = v6 + v5
00:04:30 v #5826 > > │     let x = 0
00:04:30 v #5827 > > │     let v8 : _ = x
00:04:30 v #5828 > > │     let v9 : unit = ()
00:04:30 v #5829 > > │     (* run_target_args'
00:04:30 v #5830 > > │     let v10 : unit = ()
00:04:30 v #5831 > > │     run_target_args' *)
00:04:30 v #5832 > > │
00:04:30 v #5833 > > │ #if FABLE_COMPILER || WASM || CONTRACT
00:04:30 v #5834 > > │
00:04:30 v #5835 > > │ #if FABLE_COMPILER_RUST && !WASM && !CONTRACT
00:04:30 v #5836 > > │     let v11 : string = $"true; let _fix_closure_v9 = $0"
00:04:30 v #5837 > > │     let v12 : bool = Fable.Core.RustInterop.emitRustExpr v8
00:04:30 v #5838 > > v11
00:04:30 v #5839 > > │     let _run_target_args'_v10 = true
00:04:30 v #5840 > > │     #endif
00:04:30 v #5841 > > │ #if FABLE_COMPILER_RUST && WASM
00:04:30 v #5842 > > │     let v13 : string = $"true; let _fix_closure_v9 = $0"
00:04:30 v #5843 > > │     let v14 : bool = Fable.Core.RustInterop.emitRustExpr v8
00:04:30 v #5844 > > v13
00:04:30 v #5845 > > │     let _run_target_args'_v10 = true
00:04:30 v #5846 > > │     #endif
00:04:30 v #5847 > > │ #if FABLE_COMPILER_RUST && CONTRACT
00:04:30 v #5848 > > │     let v15 : string = $"true; let _fix_closure_v9 = $0"
00:04:30 v #5849 > > │     let v16 : bool = Fable.Core.RustInterop.emitRustExpr v8
00:04:30 v #5850 > > v15
00:04:30 v #5851 > > │     let _run_target_args'_v10 = true
00:04:30 v #5852 > > │     #endif
00:04:30 v #5853 > > │ #if FABLE_COMPILER_TYPESCRIPT
00:04:30 v #5854 > > │     let _run_target_args'_v10 = false
00:04:30 v #5855 > > │     #endif
00:04:30 v #5856 > > │ #if FABLE_COMPILER_PYTHON
00:04:30 v #5857 > > │     let _run_target_args'_v10 = false
00:04:30 v #5858 > > │     #endif
00:04:30 v #5859 > > │ #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT &&
00:04:30 v #5860 > > !FABLE_COMPILER_PYTHON
00:04:30 v #5861 > > │     let _run_target_args'_v10 = false
00:04:30 v #5862 > > │     #endif
00:04:30 v #5863 > > │ #else
00:04:30 v #5864 > > │     let _run_target_args'_v10 = false
00:04:30 v #5865 > > │     #endif
00:04:30 v #5866 > > │     let v17 : bool = _run_target_args'_v10
00:04:30 v #5867 > > │     let v19 : string = $"true; _fix_closure_v9 " + v4 + "); "
00:04:30 v #5868 > > + v7 + " // rust.fix_closure'"
00:04:30 v #5869 > > │     let v20 : bool = v19 = "true; _fix_closure_v9 }}}); {{
00:04:30 v #5870 > > rust.fix_closure'"
00:04:30 v #5871 > > │     let v22 : bool =
00:04:30 v #5872 > > │         if v20 then
00:04:30 v #5873 > > │             true
00:04:30 v #5874 > > │         else
00:04:30 v #5875 > > │             method1(v20)
00:04:30 v #5876 > > │     let v23 : string = "__assert_eq"
00:04:30 v #5877 > > │     let v24 : string = "true; _fix_closure_v9 }}}); {{
00:04:30 v #5878 > > rust.fix_closure'"
00:04:30 v #5879 > > │     let v25 : string = $"{v23} / actual: %A{v19} / expected:
00:04:30 v #5880 > > %A{v24}"
00:04:30 v #5881 > > │     let v28 : unit = ()
00:04:30 v #5882 > > │     let v29 : (unit -> unit) = closure0(v25)
00:04:30 v #5883 > > │     let v30 : unit = (fun () -> v29 (); v28) ()
00:04:30 v #5884 > > │     let v32 : bool = v22 = false
00:04:30 v #5885 > > │     if v32 then
00:04:30 v #5886 > > │         failwith<unit> v25
00:04:30 v #5887 > > │ method0()
00:04:30 v #5888 > > │
00:04:30 v #5889 > > │ __assert_eq / actual: "true; _fix_closure_v9 }}}); {{
00:04:30 v #5890 > > rust.fix_closure'" / expected: "true; _fix_closure_v9 }}}); {{
00:04:30 v #5891 > > rust.fix_closure'"
00:04:30 v #5892 > > │
00:04:30 v #5893 > >
00:04:30 v #5894 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:30 v #5895 > > //// test
00:04:30 v #5896 > > //// print_code
00:04:30 v #5897 > >
00:04:30 v #5898 > > fix_closure' (0, 0) ()
00:04:30 v #5899 > > |> _assert_eq "true; _fix_closure_v1 );  // rust.fix_closure'"
00:04:31 v #5900 > >
00:04:31 v #5901 > > ── [ 181.15ms - stdout ] ───────────────────────────────────────────────────────
00:04:31 v #5902 > > │ let rec method1 (v0 : bool) : bool =
00:04:31 v #5903 > > │     v0
00:04:31 v #5904 > > │ and closure0 (v0 : string) () : unit =
00:04:31 v #5905 > > │     let v1 : (string -> unit) = System.Console.WriteLine
00:04:31 v #5906 > > │     v1 v0
00:04:31 v #5907 > > │ and method0 () : unit =
00:04:31 v #5908 > > │     let x = ()
00:04:31 v #5909 > > │     let v0 : _ = x
00:04:31 v #5910 > > │     let v1 : unit = ()
00:04:31 v #5911 > > │     (* run_target_args'
00:04:31 v #5912 > > │     let v2 : unit = ()
00:04:31 v #5913 > > │     run_target_args' *)
00:04:31 v #5914 > > │
00:04:31 v #5915 > > │ #if FABLE_COMPILER || WASM || CONTRACT
00:04:31 v #5916 > > │
00:04:31 v #5917 > > │ #if FABLE_COMPILER_RUST && !WASM && !CONTRACT
00:04:31 v #5918 > > │     let _run_target_args'_v2 = false
00:04:31 v #5919 > > │     #endif
00:04:31 v #5920 > > │ #if FABLE_COMPILER_RUST && WASM
00:04:31 v #5921 > > │     let _run_target_args'_v2 = false
00:04:31 v #5922 > > │     #endif
00:04:31 v #5923 > > │ #if FABLE_COMPILER_RUST && CONTRACT
00:04:31 v #5924 > > │     let _run_target_args'_v2 = false
00:04:31 v #5925 > > │     #endif
00:04:31 v #5926 > > │ #if FABLE_COMPILER_TYPESCRIPT
00:04:31 v #5927 > > │     let _run_target_args'_v2 = false
00:04:31 v #5928 > > │     #endif
00:04:31 v #5929 > > │ #if FABLE_COMPILER_PYTHON
00:04:31 v #5930 > > │     let _run_target_args'_v2 = false
00:04:31 v #5931 > > │     #endif
00:04:31 v #5932 > > │ #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT &&
00:04:31 v #5933 > > !FABLE_COMPILER_PYTHON
00:04:31 v #5934 > > │     let _run_target_args'_v2 = false
00:04:31 v #5935 > > │     #endif
00:04:31 v #5936 > > │ #else
00:04:31 v #5937 > > │     let _run_target_args'_v2 = false
00:04:31 v #5938 > > │     #endif
00:04:31 v #5939 > > │     let v3 : bool = _run_target_args'_v2
00:04:31 v #5940 > > │     let v5 : string = ""
00:04:31 v #5941 > > │     let v6 : string = $"true; _fix_closure_v1 " + v5 + "); "
00:04:31 v #5942 > > + v5 + " // rust.fix_closure'"
00:04:31 v #5943 > > │     let v7 : bool = v6 = "true; _fix_closure_v1 );
00:04:31 v #5944 > > rust.fix_closure'"
00:04:31 v #5945 > > │     let v9 : bool =
00:04:31 v #5946 > > │         if v7 then
00:04:31 v #5947 > > │             true
00:04:31 v #5948 > > │         else
00:04:31 v #5949 > > │             method1(v7)
00:04:31 v #5950 > > │     let v10 : string = "__assert_eq"
00:04:31 v #5951 > > │     let v11 : string = "true; _fix_closure_v1 );
00:04:31 v #5952 > > rust.fix_closure'"
00:04:31 v #5953 > > │     let v12 : string = $"{v10} / actual: %A{v6} / expected:
00:04:31 v #5954 > > %A{v11}"
00:04:31 v #5955 > > │     let v15 : unit = ()
00:04:31 v #5956 > > │     let v16 : (unit -> unit) = closure0(v12)
00:04:31 v #5957 > > │     let v17 : unit = (fun () -> v16 (); v15) ()
00:04:31 v #5958 > > │     let v19 : bool = v9 = false
00:04:31 v #5959 > > │     if v19 then
00:04:31 v #5960 > > │         failwith<unit> v12
00:04:31 v #5961 > > │ method0()
00:04:31 v #5962 > > │
00:04:31 v #5963 > > │ __assert_eq / actual: "true; _fix_closure_v1 );
00:04:31 v #5964 > > rust.fix_closure'" / expected: "true; _fix_closure_v1 );  // rust.fix_closure'"
00:04:31 v #5965 > > │
00:04:31 v #5966 > >
00:04:31 v #5967 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:31 v #5968 > > │ ### fix_closure
00:04:31 v #5969 > >
00:04:31 v #5970 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:31 v #5971 > > inl fix_closure depth x =
00:04:31 v #5972 > >     inl code = fix_closure' depth x
00:04:31 v #5973 > >     (!\code : bool) |> ignore
00:04:31 v #5974 > >
00:04:31 v #5975 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:31 v #5976 > > │ ### loop
00:04:31 v #5977 > >
00:04:31 v #5978 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:31 v #5979 > > inl loop (depth : i32) (fn : () -> ()) : () =
00:04:31 v #5980 > >     (!\($'"true; loop { // rust.loop"') : bool) |> ignore
00:04:31 v #5981 > >     fn ()
00:04:31 v #5982 > >
00:04:31 v #5983 > >     listm.init depth id
00:04:31 v #5984 > >     |> listm.iter fun n =>
00:04:31 v #5985 > >         (!\($'"true; } // rust.loop"') : bool) |> ignore
00:04:31 v #5986 > >
00:04:31 v #5987 > >     (!\($'"true; } // rust.loop"') : bool) |> ignore
00:04:31 v #5988 > >
00:04:31 v #5989 > >     listm.init depth id
00:04:31 v #5990 > >     |> listm.iter fun n =>
00:04:31 v #5991 > >         (!\($'"true; { // rust.loop"') : bool) |> ignore
00:04:31 v #5992 > >
00:04:31 v #5993 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:31 v #5994 > > │ ### capture
00:04:31 v #5995 > >
00:04:31 v #5996 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:31 v #5997 > > inl capture forall t. (fn : () -> t) : t =
00:04:31 v #5998 > >     (!\($'"true; let _capture = (|| { //"') : bool) |> ignore
00:04:31 v #5999 > >     (!\\(fn (), $'"true; $0 })()"') : bool) |> ignore
00:04:31 v #6000 > >     !\($'"_capture"')
00:04:31 v #6001 > >
00:04:31 v #6002 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:31 v #6003 > > │ ### capture_move
00:04:31 v #6004 > >
00:04:31 v #6005 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:31 v #6006 > > inl capture_move forall t. (fn : () -> t) : t =
00:04:31 v #6007 > >     (!\($'"true; let _capture_move = (move || { //"') : bool) |> ignore
00:04:31 v #6008 > >     (!\\(fn (), $'"true; $0 })()"') : bool) |> ignore
00:04:31 v #6009 > >     !\($'"_capture_move"')
00:04:31 v #6010 > >
00:04:31 v #6011 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:31 v #6012 > > │ ### type_emit
00:04:31 v #6013 > >
00:04:31 v #6014 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:31 v #6015 > > nominal type_emit t =
00:04:31 v #6016 > >     `(
00:04:31 v #6017 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; Fable.Core.Emit(\"*/ $0
00:04:31 v #6018 > > /*\")>]]\n#endif\ntype TypeEmit<'T> = class end"
00:04:31 v #6019 > >         $'' : $'TypeEmit<`t>'
00:04:31 v #6020 > >     )
00:04:31 v #6021 > >
00:04:31 v #6022 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:31 v #6023 > > │ ### partial_eq_wrapper
00:04:31 v #6024 > >
00:04:31 v #6025 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:31 v #6026 > > nominal partial_eq_wrapper t =
00:04:31 v #6027 > >     `(
00:04:31 v #6028 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:04:31 v #6029 > > Fable.Core.Emit(\"PartialEqWrapper<$0>\")>]]\n#endif\ntype PartialEqWrapper<'T>
00:04:31 v #6030 > > = class end"
00:04:31 v #6031 > >         $'' : $'PartialEqWrapper<`t>'
00:04:31 v #6032 > >     )
00:04:32 v #6033 > >
00:04:32 v #6034 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:32 v #6035 > > │ ### new_partial_eq_wrapper
00:04:32 v #6036 > >
00:04:32 v #6037 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:32 v #6038 > > inl new_partial_eq_wrapper forall t.
00:04:32 v #6039 > >     (eq_fn : ref (partial_eq_wrapper t) -> ref (partial_eq_wrapper t) -> bool)
00:04:32 v #6040 > >     (x : t)
00:04:32 v #6041 > >     : partial_eq_wrapper t
00:04:32 v #6042 > >     =
00:04:32 v #6043 > >     inl struct () =
00:04:32 v #6044 > >         !\($'"} //"') : ()
00:04:32 v #6045 > >
00:04:32 v #6046 > >         !\($'"#[[derive( //"') : ()
00:04:32 v #6047 > >         !\($'"  Debug, //"') : ()
00:04:32 v #6048 > >         !\($'"  Clone, //"') : ()
00:04:32 v #6049 > >         !\($'")]] //"') : ()
00:04:32 v #6050 > >         !\($'"pub struct PartialEqWrapper<T>(T); /*"') : ()
00:04:32 v #6051 > >
00:04:32 v #6052 > >         !\($'"*/ impl PartialEq for PartialEqWrapper< /*"') : ()
00:04:32 v #6053 > >         (null () : type_emit t) |> ignore
00:04:32 v #6054 > >         !\($'"*/ > { //"') : ()
00:04:32 v #6055 > >
00:04:32 v #6056 > >         !\($'"fn eq(&self, other: &Self) -> bool { //"') : ()
00:04:32 v #6057 > >
00:04:32 v #6058 > >         inl self : ref (partial_eq_wrapper t) = !\($'$"self"')
00:04:32 v #6059 > >         inl other : ref (partial_eq_wrapper t) = !\($'$"other"')
00:04:32 v #6060 > >
00:04:32 v #6061 > >         self
00:04:32 v #6062 > >         |> eq_fn other
00:04:32 v #6063 > >         |> fun x => !\($'$"!x //"')
00:04:32 v #6064 > >
00:04:32 v #6065 > >         !\($'"} } } fn _main() { { { //"') : ()
00:04:32 v #6066 > >
00:04:32 v #6067 > >     $'let _!struct = true' : ()
00:04:32 v #6068 > >
00:04:32 v #6069 > >     !\\(x, $'"PartialEqWrapper($0)"')
00:04:32 v #6070 > >
00:04:32 v #6071 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:32 v #6072 > > │ ### clone_wrapper
00:04:32 v #6073 > >
00:04:32 v #6074 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:32 v #6075 > > nominal clone_wrapper t =
00:04:32 v #6076 > >     `(
00:04:32 v #6077 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:04:32 v #6078 > > Fable.Core.Emit(\"CloneWrapper<$0>\")>]]\n#endif\ntype CloneWrapper<'T> = class
00:04:32 v #6079 > > end"
00:04:32 v #6080 > >         $'' : $'CloneWrapper<`t>'
00:04:32 v #6081 > >     )
00:04:32 v #6082 > >
00:04:32 v #6083 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:32 v #6084 > > │ ### new_clone_wrapper
00:04:32 v #6085 > >
00:04:32 v #6086 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:32 v #6087 > > inl new_clone_wrapper forall t.
00:04:32 v #6088 > >     (clone_fn : ref (clone_wrapper t) -> ref (clone_wrapper t))
00:04:32 v #6089 > >     (x : t)
00:04:32 v #6090 > >     : clone_wrapper t
00:04:32 v #6091 > >     =
00:04:32 v #6092 > >     inl struct () =
00:04:32 v #6093 > >         !\($'"} //"') : ()
00:04:32 v #6094 > >
00:04:32 v #6095 > >         !\($'"#[[derive( //"') : ()
00:04:32 v #6096 > >         !\($'"  Debug, //"') : ()
00:04:32 v #6097 > >         !\($'")]] //"') : ()
00:04:32 v #6098 > >         !\($'"pub struct CloneWrapper<T>(T); /*"') : ()
00:04:32 v #6099 > >
00:04:32 v #6100 > >         !\($'"*/ impl Clone for CloneWrapper< /*"') : ()
00:04:32 v #6101 > >         (null () : type_emit t) |> ignore
00:04:32 v #6102 > >         !\($'"*/ > { //"') : ()
00:04:32 v #6103 > >
00:04:32 v #6104 > >         !\($'"fn clone(&self) -> Self { //"') : ()
00:04:32 v #6105 > >
00:04:32 v #6106 > >         inl self : ref (clone_wrapper t) = !\($'$"self"')
00:04:32 v #6107 > >
00:04:32 v #6108 > >         self
00:04:32 v #6109 > >         |> clone_fn
00:04:32 v #6110 > >         |> fun x => !\($'$"!x.clone() //"')
00:04:32 v #6111 > >
00:04:32 v #6112 > >         !\($'"} } } fn _main() { { { //"') : ()
00:04:32 v #6113 > >
00:04:32 v #6114 > >     $'let _!struct = true' : ()
00:04:32 v #6115 > >
00:04:32 v #6116 > >     !\\(x, $'"CloneWrapper($0)"')
00:04:32 v #6117 > >
00:04:32 v #6118 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:32 v #6119 > > │ ### concat
00:04:32 v #6120 > >
00:04:32 v #6121 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:32 v #6122 > > inl concat forall (t : * -> *) u. (x : t (t u)) : t u =
00:04:32 v #6123 > >     !\($'$"!x.concat()"')
00:04:32 v #6124 > 00:00:21 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 47518 }
00:04:32 v #6125 > 00:00:21 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/rust/rust.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/rust/rust.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:04:33 v #6126 > 00:00:21 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/rust/rust.dib.ipynb to html
00:04:33 v #6127 > 00:00:21 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:04:33 v #6128 > 00:00:21 v #7 !   validate(nb)
00:04:34 v #6129 > 00:00:22 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:04:34 v #6130 > 00:00:22 v #9 !   return _pygments_highlight(
00:04:34 v #6131 > 00:00:23 v #10 ! [NbConvertApp] Writing 469292 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/rust/rust.dib.html
00:04:34 v #6132 > 00:00:23 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 902 }
00:04:34 v #6133 > 00:00:23 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 902 }
00:04:34 v #6134 > 00:00:23 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/rust/rust.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/rust/rust.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:04:35 v #6135 > 00:00:23 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:04:35 v #6136 > 00:00:23 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:04:35 v #6137 > 00:00:23 d #16 spiral.run / dib / { exit_code = 0; result_length = 48479 }
00:04:35 d #6138 runtime.execute_with_options_async / { exit_code = 0; output_length = 53511 }
00:04:35 d #5 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path rust/rust.dib --retries 3
00:04:35 d #6139 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path rust/testing.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path rust/testing.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:04:35 v #6140 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "rust/testing.dib", "--retries", "3"])) }
00:04:35 v #6141 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/rust/testing.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/rust/testing.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/rust/testing.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/rust/testing.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:04:36 v #6142 > >
00:04:36 v #6143 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:36 v #6144 > > │ # rust/testing
00:04:39 v #6145 > >
00:04:39 v #6146 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:39 v #6147 > > open rust.rust_operators
00:04:39 v #6148 > >
00:04:39 v #6149 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:39 v #6150 > > //// test
00:04:39 v #6151 > >
00:04:39 v #6152 > > open testing
00:04:39 v #6153 > >
00:04:39 v #6154 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:39 v #6155 > > │ ### run_tests'
00:04:39 v #6156 > >
00:04:39 v #6157 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:39 v #6158 > > inl run_tests' tests =
00:04:39 v #6159 > >     (!\($'"true; () //"') : bool) |> ignore
00:04:39 v #6160 > >
00:04:39 v #6161 > >     inl fields = reflection.get_record_fields tests
00:04:39 v #6162 > >
00:04:39 v #6163 > >     fields
00:04:39 v #6164 > >     |> listm.iter fun name, (fn : string -> ()) =>
00:04:39 v #6165 > >         !\($'"} /* /*"')
00:04:39 v #6166 > >         (!\($'$"*/ #[[test]] fn " + !name + "() { //"') : bool) |> ignore
00:04:39 v #6167 > >         fn name
00:04:39 v #6168 > >
00:04:39 v #6169 > >     fields
00:04:39 v #6170 > >     |> listm.iter fun _ =>
00:04:39 v #6171 > >         !\($'"{ //"') : ()
00:04:40 v #6172 > >
00:04:40 v #6173 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:40 v #6174 > > //// test
00:04:40 v #6175 > >
00:04:40 v #6176 > > inl run test =
00:04:40 v #6177 > >     if env.get_environment_variable "TEST" = "1"
00:04:40 v #6178 > >     then ()
00:04:40 v #6179 > >     else
00:04:40 v #6180 > >         runtime.execution_options fun x => { x with
00:04:40 v #6181 > >             command = "cargo test -- --show-output"
00:04:40 v #6182 > >             working_directory = file_system.get_source_directory () |> Some |>
00:04:40 v #6183 > > optionm'.box
00:04:40 v #6184 > >             environment_variables = ;[[ "TEST", "1" ]]
00:04:40 v #6185 > >         }
00:04:40 v #6186 > >         |> runtime.execute_with_options
00:04:40 v #6187 > >         |> fun exit_code, result =>
00:04:40 v #6188 > >             exit_code |> _assert_eq 0i32
00:04:40 v #6189 > >             result |> _assert sm'.contains "test result: ok. 1 passed; 0 failed;
00:04:40 v #6190 > > 0 ignored;"
00:04:40 v #6191 > >
00:04:40 v #6192 > >     $'let tests () = !test ()' : ()
00:04:40 v #6193 > >
00:04:40 v #6194 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:40 v #6195 > > //// test
00:04:40 v #6196 > > ///! rust -d encoding_rs encoding_rs_io
00:04:40 v #6197 > >
00:04:40 v #6198 > > fun () =>
00:04:40 v #6199 > >     run_tests' {
00:04:40 v #6200 > >         a = _assert_eq "a"
00:04:40 v #6201 > >     }
00:04:40 v #6202 > > |> run
00:04:59 v #6203 > >
00:04:59 v #6204 > > ── [ 18.88s - return value ] ───────────────────────────────────────────────────
00:04:59 v #6205 > > │ 00:00:00 d #1 runtime.execute_with_options / {
00:04:59 v #6206 > > file_name = cargo; arguments = ["test", "--", "--show-output"]; options = {
00:04:59 v #6207 > > command = cargo test -- --show-output; cancellation_token = None;
00:04:59 v #6208 > > environment_variables = Array(MutCell([("TEST", "1")])); on_line = None; stdin =
00:04:59 v #6209 > > None; trace = true; working_directory = Some(
00:04:59 v #6210 > > │
00:04:59 v #6211 > > "/home/runner/work/polyglot/polyglot/target/spiral/spiral/packages/Rust/16569da8
00:04:59 v #6212 > > e38a89b3246fc4914659e16979a5939f476142fd50a575c46b528f3c",
00:04:59 v #6213 > > │ ) } }
00:04:59 v #6214 > > │ 00:00:00 v #2 !    Compiling
00:04:59 v #6215 > > spiral_16569da8e38a89b3246fc4914659e16979a5939f476142fd50a575c46b528f3c v0.0.1
00:04:59 v #6216 > > (/home/runner/work/polyglot/polyglot/target/spiral/spiral/packages/Rust/16569da8
00:04:59 v #6217 > > e38a89b3246fc4914659e16979a5939f476142fd50a575c46b528f3c)
00:04:59 v #6218 > > │ 00:00:00 v #3 !     Finished `test` profile
00:04:59 v #6219 > > [unoptimized + debuginfo] target(s) in 0.47s
00:04:59 v #6220 > > │ 00:00:00 v #4 !      Running unittests spiral.rs
00:04:59 v #6221 > > (/home/runner/work/polyglot/polyglot/target/spiral/spiral/target/debug/deps/spir
00:04:59 v #6222 > > al_16569da8e38a89b3246fc4914659e16979a5939f476142fd50a575c46b528f3c-c4f09a1a0d4e
00:04:59 v #6223 > > 1868)
00:04:59 v #6224 > > │ 00:00:00 v #5 >
00:04:59 v #6225 > > │ 00:00:00 v #6 > running 1 test
00:04:59 v #6226 > > │ 00:00:00 v #7 > test module_6ff740fe::Spiral::a ... ok
00:04:59 v #6227 > > │ 00:00:00 v #8 >
00:04:59 v #6228 > > │ 00:00:00 v #9 > successes:
00:04:59 v #6229 > > │ 00:00:00 v #10 >
00:04:59 v #6230 > > │ 00:00:00 v #11 > ---- module_6ff740fe::Spiral::a stdout
00:04:59 v #6231 > > ----
00:04:59 v #6232 > > │ 00:00:00 v #12 > __assert_eq / actual: "a" / expected:
00:04:59 v #6233 > > "a"
00:04:59 v #6234 > > │ 00:00:00 v #13 >
00:04:59 v #6235 > > │ 00:00:00 v #14 >
00:04:59 v #6236 > > │ 00:00:00 v #15 > successes:
00:04:59 v #6237 > > │ 00:00:00 v #16 >     module_6ff740fe::Spiral::a
00:04:59 v #6238 > > │ 00:00:00 v #17 >
00:04:59 v #6239 > > │ 00:00:00 v #18 > test result: ok. 1 passed; 0 failed; 0
00:04:59 v #6240 > > ignored; 0 measured; 0 filtered out; finished in 0.00s
00:04:59 v #6241 > > │ 00:00:00 v #19 >
00:04:59 v #6242 > > │ 00:00:00 v #20 runtime.execute_with_options / result
00:04:59 v #6243 > > { exit_code = 0; std_trace_length = 864 }
00:04:59 v #6244 > > │ __assert_eq / actual: 0 / expected: 0
00:04:59 v #6245 > > │ __assert / actual: "test result: ok. 1 passed; 0 failed; 0
00:04:59 v #6246 > > ignored;" / expected: "   Compiling
00:04:59 v #6247 > > spiral_16569da8e38a89b3246fc4914659e16979a5939f476142fd50a575c46b528f3c v0.0.1
00:04:59 v #6248 > > (/home/runner/work/polyglot/polyglot/target/spiral/spiral/packages/Rust/16569da8
00:04:59 v #6249 > > e38a89b3246fc4914659e16979a5939f476142fd50a575c46b528f3c)
00:04:59 v #6250 > > │     Finished `test` profile [unoptimized +
00:04:59 v #6251 > > debuginfo] target(s) in 0.47s
00:04:59 v #6252 > > │      Running unittests spiral.rs
00:04:59 v #6253 > > (/home/runner/work/polyglot/polyglot/target/spiral/spiral/target/debug/deps/spir
00:04:59 v #6254 > > al_16569da8e38a89b3246fc4914659e16979a5939f476142fd50a575c46b528f3c-c4f09a1a0d4e
00:04:59 v #6255 > > 1868)
00:04:59 v #6256 > > │
00:04:59 v #6257 > > │ running 1 test
00:04:59 v #6258 > > │ test module_6ff740fe::Spiral::a ... ok
00:04:59 v #6259 > > │
00:04:59 v #6260 > > │ successes:
00:04:59 v #6261 > > │
00:04:59 v #6262 > > │ ---- module_6ff740fe::Spiral::a stdout ----
00:04:59 v #6263 > > │ __assert_eq / actual: "a" / expected: "a"
00:04:59 v #6264 > > │
00:04:59 v #6265 > > │
00:04:59 v #6266 > > │ successes:
00:04:59 v #6267 > > │     module_6ff740fe::Spiral::a
00:04:59 v #6268 > > │
00:04:59 v #6269 > > │ test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0
00:04:59 v #6270 > > filtered out; finished in 0.00s
00:04:59 v #6271 > > │ "
00:04:59 v #6272 > > │
00:04:59 v #6273 > >
00:04:59 v #6274 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:59 v #6275 > > │ ### run_tests
00:04:59 v #6276 > >
00:04:59 v #6277 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:59 v #6278 > > inl run_tests tests : () =
00:04:59 v #6279 > >     real
00:04:59 v #6280 > >         inl tests =
00:04:59 v #6281 > >             real_core.record_map
00:04:59 v #6282 > >                 fun { key value } =>
00:04:59 v #6283 > >                     (fun _ => value ()) : string -> ()
00:04:59 v #6284 > >                 tests
00:04:59 v #6285 > >         run_tests' `(`tests) tests
00:04:59 v #6286 > >
00:04:59 v #6287 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:59 v #6288 > > //// test
00:04:59 v #6289 > > ///! rust -d encoding_rs encoding_rs_io
00:04:59 v #6290 > >
00:04:59 v #6291 > > fun () =>
00:04:59 v #6292 > >     run_tests {
00:04:59 v #6293 > >         a = fun () => "a" |> _assert_eq "a"
00:04:59 v #6294 > >     }
00:04:59 v #6295 > > |> run
00:05:07 v #6296 > >
00:05:07 v #6297 > > ── [ 8.36s - return value ] ────────────────────────────────────────────────────
00:05:07 v #6298 > > │ 00:00:00 d #1 runtime.execute_with_options / {
00:05:07 v #6299 > > file_name = cargo; arguments = ["test", "--", "--show-output"]; options = {
00:05:07 v #6300 > > command = cargo test -- --show-output; cancellation_token = None;
00:05:07 v #6301 > > environment_variables = Array(MutCell([("TEST", "1")])); on_line = None; stdin =
00:05:07 v #6302 > > None; trace = true; working_directory = Some(
00:05:07 v #6303 > > │
00:05:07 v #6304 > > "/home/runner/work/polyglot/polyglot/target/spiral/spiral/packages/Rust/16569da8
00:05:07 v #6305 > > e38a89b3246fc4914659e16979a5939f476142fd50a575c46b528f3c",
00:05:07 v #6306 > > │ ) } }
00:05:07 v #6307 > > │ 00:00:00 v #2 !    Compiling
00:05:07 v #6308 > > spiral_16569da8e38a89b3246fc4914659e16979a5939f476142fd50a575c46b528f3c v0.0.1
00:05:07 v #6309 > > (/home/runner/work/polyglot/polyglot/target/spiral/spiral/packages/Rust/16569da8
00:05:07 v #6310 > > e38a89b3246fc4914659e16979a5939f476142fd50a575c46b528f3c)
00:05:07 v #6311 > > │ 00:00:00 v #3 !     Finished `test` profile
00:05:07 v #6312 > > [unoptimized + debuginfo] target(s) in 0.46s
00:05:07 v #6313 > > │ 00:00:00 v #4 !      Running unittests spiral.rs
00:05:07 v #6314 > > (/home/runner/work/polyglot/polyglot/target/spiral/spiral/target/debug/deps/spir
00:05:07 v #6315 > > al_16569da8e38a89b3246fc4914659e16979a5939f476142fd50a575c46b528f3c-c4f09a1a0d4e
00:05:07 v #6316 > > 1868)
00:05:07 v #6317 > > │ 00:00:00 v #5 >
00:05:07 v #6318 > > │ 00:00:00 v #6 > running 1 test
00:05:07 v #6319 > > │ 00:00:00 v #7 > test module_6ff740fe::Spiral::a ... ok
00:05:07 v #6320 > > │ 00:00:00 v #8 >
00:05:07 v #6321 > > │ 00:00:00 v #9 > successes:
00:05:07 v #6322 > > │ 00:00:00 v #10 >
00:05:07 v #6323 > > │ 00:00:00 v #11 > ---- module_6ff740fe::Spiral::a stdout
00:05:07 v #6324 > > ----
00:05:07 v #6325 > > │ 00:00:00 v #12 > __assert_eq / actual: "a" / expected:
00:05:07 v #6326 > > "a"
00:05:07 v #6327 > > │ 00:00:00 v #13 >
00:05:07 v #6328 > > │ 00:00:00 v #14 >
00:05:07 v #6329 > > │ 00:00:00 v #15 > successes:
00:05:07 v #6330 > > │ 00:00:00 v #16 >     module_6ff740fe::Spiral::a
00:05:07 v #6331 > > │ 00:00:00 v #17 >
00:05:07 v #6332 > > │ 00:00:00 v #18 > test result: ok. 1 passed; 0 failed; 0
00:05:07 v #6333 > > ignored; 0 measured; 0 filtered out; finished in 0.00s
00:05:07 v #6334 > > │ 00:00:00 v #19 >
00:05:07 v #6335 > > │ 00:00:00 v #20 runtime.execute_with_options / result
00:05:07 v #6336 > > { exit_code = 0; std_trace_length = 864 }
00:05:07 v #6337 > > │ __assert_eq / actual: 0 / expected: 0
00:05:07 v #6338 > > │ __assert / actual: "test result: ok. 1 passed; 0 failed; 0
00:05:07 v #6339 > > ignored;" / expected: "   Compiling
00:05:07 v #6340 > > spiral_16569da8e38a89b3246fc4914659e16979a5939f476142fd50a575c46b528f3c v0.0.1
00:05:07 v #6341 > > (/home/runner/work/polyglot/polyglot/target/spiral/spiral/packages/Rust/16569da8
00:05:07 v #6342 > > e38a89b3246fc4914659e16979a5939f476142fd50a575c46b528f3c)
00:05:07 v #6343 > > │     Finished `test` profile [unoptimized +
00:05:07 v #6344 > > debuginfo] target(s) in 0.46s
00:05:07 v #6345 > > │      Running unittests spiral.rs
00:05:07 v #6346 > > (/home/runner/work/polyglot/polyglot/target/spiral/spiral/target/debug/deps/spir
00:05:07 v #6347 > > al_16569da8e38a89b3246fc4914659e16979a5939f476142fd50a575c46b528f3c-c4f09a1a0d4e
00:05:07 v #6348 > > 1868)
00:05:07 v #6349 > > │
00:05:07 v #6350 > > │ running 1 test
00:05:07 v #6351 > > │ test module_6ff740fe::Spiral::a ... ok
00:05:07 v #6352 > > │
00:05:07 v #6353 > > │ successes:
00:05:07 v #6354 > > │
00:05:07 v #6355 > > │ ---- module_6ff740fe::Spiral::a stdout ----
00:05:07 v #6356 > > │ __assert_eq / actual: "a" / expected: "a"
00:05:07 v #6357 > > │
00:05:07 v #6358 > > │
00:05:07 v #6359 > > │ successes:
00:05:07 v #6360 > > │     module_6ff740fe::Spiral::a
00:05:07 v #6361 > > │
00:05:07 v #6362 > > │ test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0
00:05:07 v #6363 > > filtered out; finished in 0.00s
00:05:07 v #6364 > > │ "
00:05:07 v #6365 > > │
00:05:07 v #6366 > >
00:05:07 v #6367 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:07 v #6368 > > │ ### run_tests_log
00:05:07 v #6369 > >
00:05:07 v #6370 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:07 v #6371 > > inl run_tests_log tests : () =
00:05:07 v #6372 > >     real
00:05:07 v #6373 > >         inl tests =
00:05:07 v #6374 > >             real_core.record_map
00:05:07 v #6375 > >                 fun { key value } =>
00:05:07 v #6376 > >                     (fun _ => value false) : () -> ()
00:05:07 v #6377 > >                 tests
00:05:07 v #6378 > >         run_tests `(`tests) tests
00:05:07 v #6379 > >
00:05:07 v #6380 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:07 v #6381 > > //// test
00:05:07 v #6382 > > ///! rust -d encoding_rs encoding_rs_io
00:05:07 v #6383 > >
00:05:07 v #6384 > > fun () =>
00:05:07 v #6385 > >     run_tests_log {
00:05:07 v #6386 > >         a = _assert_eq false
00:05:07 v #6387 > >     }
00:05:07 v #6388 > > |> run
00:05:25 v #6389 > >
00:05:25 v #6390 > > ── [ 17.16s - return value ] ───────────────────────────────────────────────────
00:05:25 v #6391 > > │ 00:00:00 d #1 runtime.execute_with_options / {
00:05:25 v #6392 > > file_name = cargo; arguments = ["test", "--", "--show-output"]; options = {
00:05:25 v #6393 > > command = cargo test -- --show-output; cancellation_token = None;
00:05:25 v #6394 > > environment_variables = Array(MutCell([("TEST", "1")])); on_line = None; stdin =
00:05:25 v #6395 > > None; trace = true; working_directory = Some(
00:05:25 v #6396 > > │
00:05:25 v #6397 > > "/home/runner/work/polyglot/polyglot/target/spiral/spiral/packages/Rust/27efa208
00:05:25 v #6398 > > 70f99a1e568cf8cf1d071fb5f704808c300b209de92a95a2ba5d07ac",
00:05:25 v #6399 > > │ ) } }
00:05:25 v #6400 > > │ 00:00:00 v #2 !    Compiling
00:05:25 v #6401 > > spiral_27efa20870f99a1e568cf8cf1d071fb5f704808c300b209de92a95a2ba5d07ac v0.0.1
00:05:25 v #6402 > > (/home/runner/work/polyglot/polyglot/target/spiral/spiral/packages/Rust/27efa208
00:05:25 v #6403 > > 70f99a1e568cf8cf1d071fb5f704808c300b209de92a95a2ba5d07ac)
00:05:25 v #6404 > > │ 00:00:00 v #3 !     Finished `test` profile
00:05:25 v #6405 > > [unoptimized + debuginfo] target(s) in 0.46s
00:05:25 v #6406 > > │ 00:00:00 v #4 !      Running unittests spiral.rs
00:05:25 v #6407 > > (/home/runner/work/polyglot/polyglot/target/spiral/spiral/target/debug/deps/spir
00:05:25 v #6408 > > al_27efa20870f99a1e568cf8cf1d071fb5f704808c300b209de92a95a2ba5d07ac-50abd749c948
00:05:25 v #6409 > > 4556)
00:05:25 v #6410 > > │ 00:00:00 v #5 >
00:05:25 v #6411 > > │ 00:00:00 v #6 > running 1 test
00:05:25 v #6412 > > │ 00:00:00 v #7 > test module_6ff740fe::Spiral::a ... ok
00:05:25 v #6413 > > │ 00:00:00 v #8 >
00:05:25 v #6414 > > │ 00:00:00 v #9 > successes:
00:05:25 v #6415 > > │ 00:00:00 v #10 >
00:05:25 v #6416 > > │ 00:00:00 v #11 > ---- module_6ff740fe::Spiral::a stdout
00:05:25 v #6417 > > ----
00:05:25 v #6418 > > │ 00:00:00 v #12 > __assert_eq / actual: false
00:05:25 v #6419 > > expected: false
00:05:25 v #6420 > > │ 00:00:00 v #13 >
00:05:25 v #6421 > > │ 00:00:00 v #14 >
00:05:25 v #6422 > > │ 00:00:00 v #15 > successes:
00:05:25 v #6423 > > │ 00:00:00 v #16 >     module_6ff740fe::Spiral::a
00:05:25 v #6424 > > │ 00:00:00 v #17 >
00:05:25 v #6425 > > │ 00:00:00 v #18 > test result: ok. 1 passed; 0 failed; 0
00:05:25 v #6426 > > ignored; 0 measured; 0 filtered out; finished in 0.00s
00:05:25 v #6427 > > │ 00:00:00 v #19 >
00:05:25 v #6428 > > │ 00:00:00 v #20 runtime.execute_with_options / result
00:05:25 v #6429 > > { exit_code = 0; std_trace_length = 868 }
00:05:25 v #6430 > > │ __assert_eq / actual: 0 / expected: 0
00:05:25 v #6431 > > │ __assert / actual: "test result: ok. 1 passed; 0 failed; 0
00:05:25 v #6432 > > ignored;" / expected: "   Compiling
00:05:25 v #6433 > > spiral_27efa20870f99a1e568cf8cf1d071fb5f704808c300b209de92a95a2ba5d07ac v0.0.1
00:05:25 v #6434 > > (/home/runner/work/polyglot/polyglot/target/spiral/spiral/packages/Rust/27efa208
00:05:25 v #6435 > > 70f99a1e568cf8cf1d071fb5f704808c300b209de92a95a2ba5d07ac)
00:05:25 v #6436 > > │     Finished `test` profile [unoptimized +
00:05:25 v #6437 > > debuginfo] target(s) in 0.46s
00:05:25 v #6438 > > │      Running unittests spiral.rs
00:05:25 v #6439 > > (/home/runner/work/polyglot/polyglot/target/spiral/spiral/target/debug/deps/spir
00:05:25 v #6440 > > al_27efa20870f99a1e568cf8cf1d071fb5f704808c300b209de92a95a2ba5d07ac-50abd749c948
00:05:25 v #6441 > > 4556)
00:05:25 v #6442 > > │
00:05:25 v #6443 > > │ running 1 test
00:05:25 v #6444 > > │ test module_6ff740fe::Spiral::a ... ok
00:05:25 v #6445 > > │
00:05:25 v #6446 > > │ successes:
00:05:25 v #6447 > > │
00:05:25 v #6448 > > │ ---- module_6ff740fe::Spiral::a stdout ----
00:05:25 v #6449 > > │ __assert_eq / actual: false / expected: false
00:05:25 v #6450 > > │
00:05:25 v #6451 > > │
00:05:25 v #6452 > > │ successes:
00:05:25 v #6453 > > │     module_6ff740fe::Spiral::a
00:05:25 v #6454 > > │
00:05:25 v #6455 > > │ test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0
00:05:25 v #6456 > > filtered out; finished in 0.00s
00:05:25 v #6457 > > │ "
00:05:25 v #6458 > > │
00:05:25 v #6459 > 00:00:49 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 15172 }
00:05:25 v #6460 > 00:00:49 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/rust/testing.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/rust/testing.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:05:25 v #6461 > 00:00:50 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/rust/testing.dib.ipynb to html
00:05:25 v #6462 > 00:00:50 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:05:25 v #6463 > 00:00:50 v #7 !   validate(nb)
00:05:26 v #6464 > 00:00:51 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:05:26 v #6465 > 00:00:51 v #9 !   return _pygments_highlight(
00:05:26 v #6466 > 00:00:51 v #10 ! [NbConvertApp] Writing 298303 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/rust/testing.dib.html
00:05:26 v #6467 > 00:00:51 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 908 }
00:05:26 v #6468 > 00:00:51 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 908 }
00:05:26 v #6469 > 00:00:51 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/rust/testing.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/rust/testing.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:05:26 v #6470 > 00:00:51 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:05:26 v #6471 > 00:00:51 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:05:26 v #6472 > 00:00:51 d #16 spiral.run / dib / { exit_code = 0; result_length = 16139 }
00:05:26 d #6473 runtime.execute_with_options_async / { exit_code = 0; output_length = 19482 }
00:05:26 d #6 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path rust/testing.dib --retries 3
00:05:26 d #6474 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path rust/near.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path rust/near.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:05:26 v #6475 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "rust/near.dib", "--retries", "3"])) }
00:05:26 v #6476 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/rust/near.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/rust/near.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/rust/near.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/rust/near.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:05:27 v #6477 > >
00:05:27 v #6478 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:27 v #6479 > > │ # near
00:05:30 v #6480 > >
00:05:30 v #6481 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:30 v #6482 > > open rust
00:05:30 v #6483 > > open rust.rust_operators
00:05:31 v #6484 > >
00:05:31 v #6485 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:31 v #6486 > > //// test
00:05:31 v #6487 > >
00:05:31 v #6488 > > open testing
00:05:31 v #6489 > >
00:05:31 v #6490 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:31 v #6491 > > │ ## near
00:05:31 v #6492 > >
00:05:31 v #6493 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:31 v #6494 > > │ ### vector
00:05:31 v #6495 > >
00:05:31 v #6496 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:31 v #6497 > > nominal vector t =
00:05:31 v #6498 > >     `(
00:05:31 v #6499 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:05:31 v #6500 > > Fable.Core.Emit(\"near_sdk::store::vec::Vector<$0>\")>]]\n#endif\ntype
00:05:31 v #6501 > > near_sdk_store_vec_Vector<'T> = class end"
00:05:31 v #6502 > >         $'' : $'near_sdk_store_vec_Vector<`t>'
00:05:31 v #6503 > >     )
00:05:31 v #6504 > >
00:05:31 v #6505 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:31 v #6506 > > │ ### lookup_map
00:05:31 v #6507 > >
00:05:31 v #6508 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:31 v #6509 > > nominal lookup_map k v =
00:05:31 v #6510 > >     `(
00:05:31 v #6511 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:05:31 v #6512 > > Fable.Core.Emit(\"near_sdk::store::LookupMap<$0, $1>\")>]]\n#endif\ntype
00:05:31 v #6513 > > near_sdk_store_LookupMap<'K, 'V> = class end"
00:05:31 v #6514 > >         $'' : $'near_sdk_store_LookupMap<`k, `v>'
00:05:31 v #6515 > >     )
00:05:31 v #6516 > >
00:05:31 v #6517 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:31 v #6518 > > │ ### iterable_set
00:05:31 v #6519 > >
00:05:31 v #6520 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:31 v #6521 > > nominal iterable_set t =
00:05:31 v #6522 > >     `(
00:05:31 v #6523 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:05:31 v #6524 > > Fable.Core.Emit(\"near_sdk::store::IterableSet<$0>\")>]]\n#endif\ntype
00:05:31 v #6525 > > near_sdk_store_IterableSet<'T> = class end"
00:05:31 v #6526 > >         $'' : $'near_sdk_store_IterableSet<`t>'
00:05:31 v #6527 > >     )
00:05:31 v #6528 > >
00:05:31 v #6529 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:31 v #6530 > > │ ### account_id
00:05:31 v #6531 > >
00:05:31 v #6532 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:31 v #6533 > > nominal account_id =
00:05:31 v #6534 > >     `(
00:05:31 v #6535 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:05:31 v #6536 > > Fable.Core.Emit(\"near_sdk::AccountId\")>]]\n#endif\ntype near_sdk_AccountId =
00:05:31 v #6537 > > class end"
00:05:31 v #6538 > >         $'' : $'near_sdk_AccountId'
00:05:31 v #6539 > >     )
00:05:31 v #6540 > >
00:05:31 v #6541 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:31 v #6542 > > │ ### new_lookup_map
00:05:31 v #6543 > >
00:05:31 v #6544 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:31 v #6545 > > inl new_lookup_map prefix =
00:05:31 v #6546 > >     !\($'"near_sdk::store::LookupMap::new(!prefix)"')
00:05:32 v #6547 > >
00:05:32 v #6548 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:32 v #6549 > > │ ### new_iterable_set
00:05:32 v #6550 > >
00:05:32 v #6551 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:32 v #6552 > > inl new_iterable_set prefix =
00:05:32 v #6553 > >     !\($'"near_sdk::store::IterableSet::new(!prefix)"')
00:05:32 v #6554 > >
00:05:32 v #6555 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:32 v #6556 > > │ ### new_vector
00:05:32 v #6557 > >
00:05:32 v #6558 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:32 v #6559 > > inl new_vector prefix =
00:05:32 v #6560 > >     !\\(prefix, $'"near_sdk::store::vec::Vector::new($0)"')
00:05:32 v #6561 > >
00:05:32 v #6562 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:32 v #6563 > > │ ### vector_extend
00:05:32 v #6564 > >
00:05:32 v #6565 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:32 v #6566 > > inl vector_extend forall t. (vec : am'.vec t) (vector : rust.ref (rust.mut'
00:05:32 v #6567 > > (vector t))) : () =
00:05:32 v #6568 > >     (!\\(vec, $'"true; !vector.extend($0); //"') : bool) |> ignore
00:05:32 v #6569 > >
00:05:32 v #6570 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:32 v #6571 > > │ ### vector_to_vec
00:05:32 v #6572 > >
00:05:32 v #6573 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:32 v #6574 > > inl vector_to_vec forall (t : * -> *) u. (vector : t (vector u)) : am'.vec u =
00:05:32 v #6575 > >     !\($'$"!vector.iter().map(|x| *x).collect::<Vec<_>>()"')
00:05:32 v #6576 > >
00:05:32 v #6577 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:32 v #6578 > > │ ### keccak512
00:05:32 v #6579 > >
00:05:32 v #6580 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:32 v #6581 > > inl keccak512 (entropy : am'.vec u8) : am'.vec u8 =
00:05:32 v #6582 > >     !\\(entropy, $'$"near_sdk::env::keccak512(&$0)"')
00:05:32 v #6583 > >
00:05:32 v #6584 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:32 v #6585 > > │ ### log
00:05:32 v #6586 > >
00:05:32 v #6587 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:32 v #6588 > > inl log text : () =
00:05:32 v #6589 > >     (!\\(text, $'$"true; near_sdk::log\!(\\\"{{}}\\\", $0)"') : bool) |> ignore
00:05:32 v #6590 > >
00:05:32 v #6591 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:32 v #6592 > > │ ### panic_str
00:05:32 v #6593 > >
00:05:32 v #6594 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:32 v #6595 > > inl panic_str (text : string) : () =
00:05:32 v #6596 > >     (!\\(text, $'$"true; near_sdk::env::panic_str(&*$0); //"') : bool) |> ignore
00:05:33 v #6597 > >
00:05:33 v #6598 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:33 v #6599 > > │ ### lookup_get
00:05:33 v #6600 > >
00:05:33 v #6601 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:33 v #6602 > > inl lookup_get forall k v.
00:05:33 v #6603 > >     (key : k)
00:05:33 v #6604 > >     (map : rust.ref (rust.mut' (lookup_map k v)))
00:05:33 v #6605 > >     : optionm'.option' (rust.ref v)
00:05:33 v #6606 > >     =
00:05:33 v #6607 > >     !\\(key, $'$"!map.get(&$0)"')
00:05:33 v #6608 > >
00:05:33 v #6609 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:33 v #6610 > > │ ### lookup_insert
00:05:33 v #6611 > >
00:05:33 v #6612 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:33 v #6613 > > inl lookup_insert forall k v.
00:05:33 v #6614 > >     (key : k)
00:05:33 v #6615 > >     (value : v)
00:05:33 v #6616 > >     (map : rust.ref (rust.mut' (lookup_map k v)))
00:05:33 v #6617 > >     : ()
00:05:33 v #6618 > >     =
00:05:33 v #6619 > >     (!\\((key, value), $'$"true; !map.insert(&$0, $1); //"') : bool) |> ignore
00:05:33 v #6620 > >
00:05:33 v #6621 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:33 v #6622 > > │ ### iterable_set_insert
00:05:33 v #6623 > >
00:05:33 v #6624 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:33 v #6625 > > inl iterable_set_insert forall t.
00:05:33 v #6626 > >     (x : t)
00:05:33 v #6627 > >     (set : rust.ref (rust.mut' (iterable_set t)))
00:05:33 v #6628 > >     : bool
00:05:33 v #6629 > >     =
00:05:33 v #6630 > >     !\\(x, $'$"!set.insert($0)"')
00:05:33 v #6631 > >
00:05:33 v #6632 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:33 v #6633 > > │ ### iterable_set_remove
00:05:33 v #6634 > >
00:05:33 v #6635 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:33 v #6636 > > inl iterable_set_remove forall t.
00:05:33 v #6637 > >     (x : rust.ref t)
00:05:33 v #6638 > >     (set : rust.ref (rust.mut' (iterable_set t)))
00:05:33 v #6639 > >     : bool
00:05:33 v #6640 > >     =
00:05:33 v #6641 > >     !\\(x, $'$"!set.remove($0)"')
00:05:33 v #6642 > >
00:05:33 v #6643 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:33 v #6644 > > │ ### iterable_set_contains
00:05:33 v #6645 > >
00:05:33 v #6646 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:33 v #6647 > > inl iterable_set_contains forall t.
00:05:33 v #6648 > >     (x : rust.ref t)
00:05:33 v #6649 > >     (set : rust.ref (rust.mut' (iterable_set t)))
00:05:33 v #6650 > >     : bool
00:05:33 v #6651 > >     =
00:05:33 v #6652 > >     !\\(x, $'$"!set.contains($0)"')
00:05:33 v #6653 > >
00:05:33 v #6654 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:33 v #6655 > > │ ### near_token
00:05:33 v #6656 > >
00:05:33 v #6657 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:33 v #6658 > > nominal near_token =
00:05:33 v #6659 > >     `(
00:05:33 v #6660 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:05:33 v #6661 > > Fable.Core.Emit(\"near_token::NearToken\")>]]\n#endif\ntype near_token_NearToken
00:05:33 v #6662 > > = class end"
00:05:33 v #6663 > >         $'' : $'near_token_NearToken'
00:05:33 v #6664 > >     )
00:05:34 v #6665 > >
00:05:34 v #6666 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:34 v #6667 > > │ ### near_token_sdk
00:05:34 v #6668 > >
00:05:34 v #6669 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:34 v #6670 > > nominal near_token_sdk =
00:05:34 v #6671 > >     `(
00:05:34 v #6672 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:05:34 v #6673 > > Fable.Core.Emit(\"near_sdk::NearToken\")>]]\n#endif\ntype near_sdk_NearToken =
00:05:34 v #6674 > > class end"
00:05:34 v #6675 > >         $'' : $'near_sdk_NearToken'
00:05:34 v #6676 > >     )
00:05:34 v #6677 > >
00:05:34 v #6678 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:34 v #6679 > > │ ### random_seed
00:05:34 v #6680 > >
00:05:34 v #6681 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:34 v #6682 > > inl random_seed () : am'.vec u8 =
00:05:34 v #6683 > >     !\($'$"near_sdk::env::random_seed()"')
00:05:34 v #6684 > >
00:05:34 v #6685 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:34 v #6686 > > │ ### block_timestamp
00:05:34 v #6687 > >
00:05:34 v #6688 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:34 v #6689 > > inl block_timestamp () : u64 =
00:05:34 v #6690 > >     !\($'$"near_sdk::env::block_timestamp()"')
00:05:34 v #6691 > >
00:05:34 v #6692 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:34 v #6693 > > │ ### block_height
00:05:34 v #6694 > >
00:05:34 v #6695 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:34 v #6696 > > inl block_height () : u64 =
00:05:34 v #6697 > >     !\($'$"near_sdk::env::block_height()"')
00:05:34 v #6698 > >
00:05:34 v #6699 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:34 v #6700 > > │ ### epoch_height
00:05:34 v #6701 > >
00:05:34 v #6702 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:34 v #6703 > > inl epoch_height () : u64 =
00:05:34 v #6704 > >     !\($'$"near_sdk::env::epoch_height()"')
00:05:34 v #6705 > >
00:05:34 v #6706 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:34 v #6707 > > │ ### account_balance
00:05:34 v #6708 > >
00:05:34 v #6709 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:34 v #6710 > > inl account_balance () : near_token =
00:05:34 v #6711 > >     !\($'$"near_sdk::env::account_balance()"')
00:05:35 v #6712 > >
00:05:35 v #6713 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:35 v #6714 > > │ ### predecessor_account_id
00:05:35 v #6715 > >
00:05:35 v #6716 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:35 v #6717 > > inl predecessor_account_id () : account_id =
00:05:35 v #6718 > >     !\($'$"near_sdk::env::predecessor_account_id()"')
00:05:35 v #6719 > >
00:05:35 v #6720 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:35 v #6721 > > │ ### signer_account_id
00:05:35 v #6722 > >
00:05:35 v #6723 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:35 v #6724 > > inl signer_account_id () : account_id =
00:05:35 v #6725 > >     !\($'$"near_sdk::env::signer_account_id()"')
00:05:35 v #6726 > >
00:05:35 v #6727 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:35 v #6728 > > │ ### as_yoctonear
00:05:35 v #6729 > >
00:05:35 v #6730 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:35 v #6731 > > inl as_yoctonear forall t. (gas : t) : rust.u128 =
00:05:35 v #6732 > >     !\\(gas, $'"$0.as_yoctonear()"')
00:05:35 v #6733 > >
00:05:35 v #6734 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:35 v #6735 > > │ ### near_price_in_usd
00:05:35 v #6736 > >
00:05:35 v #6737 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:35 v #6738 > > inl near_price_in_usd () =
00:05:35 v #6739 > >     6.68f64
00:05:35 v #6740 > >
00:05:35 v #6741 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:35 v #6742 > > │ ### gas_to_usd
00:05:35 v #6743 > >
00:05:35 v #6744 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:35 v #6745 > > inl gas_to_usd (gas : u64) =
00:05:35 v #6746 > >     (gas |> f64) / 10_000_000_000_000_000 * near_price_in_usd ()
00:05:35 v #6747 > >
00:05:35 v #6748 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:35 v #6749 > > │ ### tokens_to_usd
00:05:35 v #6750 > >
00:05:35 v #6751 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:35 v #6752 > > inl tokens_to_usd (tokens : rust.u128) =
00:05:35 v #6753 > >     (tokens |> rust.f64) / 1_000_000_000_000_000_000_000_000 * near_price_in_usd
00:05:35 v #6754 > > ()
00:05:36 v #6755 > 00:00:09 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 11694 }
00:05:36 v #6756 > 00:00:09 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/rust/near.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/rust/near.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:05:36 v #6757 > 00:00:10 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/rust/near.dib.ipynb to html
00:05:36 v #6758 > 00:00:10 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:05:36 v #6759 > 00:00:10 v #7 !   validate(nb)
00:05:37 v #6760 > 00:00:10 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:05:37 v #6761 > 00:00:10 v #9 !   return _pygments_highlight(
00:05:37 v #6762 > 00:00:10 v #10 ! [NbConvertApp] Writing 322964 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/rust/near.dib.html
00:05:37 v #6763 > 00:00:10 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 902 }
00:05:37 v #6764 > 00:00:10 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 902 }
00:05:37 v #6765 > 00:00:10 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/rust/near.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/rust/near.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:05:37 v #6766 > 00:00:11 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:05:37 v #6767 > 00:00:11 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:05:37 v #6768 > 00:00:11 d #16 spiral.run / dib / { exit_code = 0; result_length = 12655 }
00:05:37 d #6769 runtime.execute_with_options_async / { exit_code = 0; output_length = 15893 }
00:05:37 d #7 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path rust/near.dib --retries 3
00:05:37 d #6770 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path rust/near_workspaces.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path rust/near_workspaces.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:05:37 v #6771 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "rust/near_workspaces.dib", "--retries", "3"])) }
00:05:37 v #6772 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/rust/near_workspaces.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/rust/near_workspaces.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/rust/near_workspaces.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/rust/near_workspaces.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:05:39 v #6773 > >
00:05:39 v #6774 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:39 v #6775 > > │ # near_workspaces
00:05:41 v #6776 > >
00:05:41 v #6777 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:41 v #6778 > > open rust
00:05:41 v #6779 > > open rust.rust_operators
00:05:42 v #6780 > >
00:05:42 v #6781 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:42 v #6782 > > //// test
00:05:42 v #6783 > >
00:05:42 v #6784 > > open testing
00:05:42 v #6785 > >
00:05:42 v #6786 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:42 v #6787 > > │ ## near
00:05:42 v #6788 > >
00:05:42 v #6789 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:42 v #6790 > > │ ### near_token_workspaces
00:05:42 v #6791 > >
00:05:42 v #6792 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:42 v #6793 > > nominal near_token_workspaces =
00:05:42 v #6794 > >     `(
00:05:42 v #6795 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:05:42 v #6796 > > Fable.Core.Emit(\"near_workspaces::types::NearToken\")>]]\n#endif\ntype
00:05:42 v #6797 > > near_workspaces_types_NearToken = class end"
00:05:42 v #6798 > >         $'' : $'near_workspaces_types_NearToken'
00:05:42 v #6799 > >     )
00:05:42 v #6800 > >
00:05:42 v #6801 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:42 v #6802 > > │ ### gas
00:05:42 v #6803 > >
00:05:42 v #6804 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:42 v #6805 > > nominal gas =
00:05:42 v #6806 > >     `(
00:05:42 v #6807 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:05:42 v #6808 > > Fable.Core.Emit(\"near_workspaces::types::Gas\")>]]\n#endif\ntype
00:05:42 v #6809 > > near_workspaces_types_Gas = class end"
00:05:42 v #6810 > >         $'' : $'near_workspaces_types_Gas'
00:05:42 v #6811 > >     )
00:05:42 v #6812 > >
00:05:42 v #6813 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:42 v #6814 > > │ ### near_workspaces_error
00:05:42 v #6815 > >
00:05:42 v #6816 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:42 v #6817 > > nominal near_workspaces_error =
00:05:42 v #6818 > >     `(
00:05:42 v #6819 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:05:42 v #6820 > > Fable.Core.Emit(\"near_workspaces::error::Error\")>]]\n#endif\ntype
00:05:42 v #6821 > > near_workspaces_error_Error = class end"
00:05:42 v #6822 > >         $'' : $'near_workspaces_error_Error'
00:05:42 v #6823 > >     )
00:05:42 v #6824 > >
00:05:42 v #6825 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:42 v #6826 > > │ ### sandbox
00:05:42 v #6827 > >
00:05:42 v #6828 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:42 v #6829 > > nominal sandbox =
00:05:42 v #6830 > >     `(
00:05:42 v #6831 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:05:42 v #6832 > > Fable.Core.Emit(\"near_workspaces::network::Sandbox\")>]]\n#endif\ntype
00:05:42 v #6833 > > near_workspaces_network_Sandbox = class end"
00:05:42 v #6834 > >         $'' : $'near_workspaces_network_Sandbox'
00:05:42 v #6835 > >     )
00:05:43 v #6836 > >
00:05:43 v #6837 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:43 v #6838 > > │ ### worker
00:05:43 v #6839 > >
00:05:43 v #6840 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:43 v #6841 > > nominal worker t =
00:05:43 v #6842 > >     `(
00:05:43 v #6843 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:05:43 v #6844 > > Fable.Core.Emit(\"near_workspaces::Worker<$0>\")>]]\n#endif\ntype
00:05:43 v #6845 > > near_workspaces_Worker<'T> = class end"
00:05:43 v #6846 > >         $'' : $'near_workspaces_Worker<`t>'
00:05:43 v #6847 > >     )
00:05:43 v #6848 > >
00:05:43 v #6849 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:43 v #6850 > > │ ### contract
00:05:43 v #6851 > >
00:05:43 v #6852 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:43 v #6853 > > nominal contract =
00:05:43 v #6854 > >     `(
00:05:43 v #6855 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:05:43 v #6856 > > Fable.Core.Emit(\"near_workspaces::Contract\")>]]\n#endif\ntype
00:05:43 v #6857 > > near_workspaces_Contract = class end"
00:05:43 v #6858 > >         $'' : $'near_workspaces_Contract'
00:05:43 v #6859 > >     )
00:05:43 v #6860 > >
00:05:43 v #6861 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:43 v #6862 > > │ ### call_transaction
00:05:43 v #6863 > >
00:05:43 v #6864 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:43 v #6865 > > nominal call_transaction =
00:05:43 v #6866 > >     `(
00:05:43 v #6867 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:05:43 v #6868 > > Fable.Core.Emit(\"near_workspaces::operations::CallTransaction\")>]]\n#endif\nty
00:05:43 v #6869 > > pe near_workspaces_operations_CallTransaction = class end"
00:05:43 v #6870 > >         $'' : $'near_workspaces_operations_CallTransaction'
00:05:43 v #6871 > >     )
00:05:43 v #6872 > >
00:05:43 v #6873 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:43 v #6874 > > │ ### execution_final_result
00:05:43 v #6875 > >
00:05:43 v #6876 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:43 v #6877 > > nominal execution_final_result =
00:05:43 v #6878 > >     `(
00:05:43 v #6879 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:05:43 v #6880 > > Fable.Core.Emit(\"near_workspaces::result::ExecutionFinalResult\")>]]\n#endif\nt
00:05:43 v #6881 > > ype near_workspaces_result_ExecutionFinalResult = class end"
00:05:43 v #6882 > >         $'' : $'near_workspaces_result_ExecutionFinalResult'
00:05:43 v #6883 > >     )
00:05:43 v #6884 > >
00:05:43 v #6885 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:43 v #6886 > > │ ### execution_result
00:05:43 v #6887 > >
00:05:43 v #6888 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:43 v #6889 > > nominal execution_result t =
00:05:43 v #6890 > >     `(
00:05:43 v #6891 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:05:43 v #6892 > > Fable.Core.Emit(\"near_workspaces::result::ExecutionResult<$0>\")>]]\n#endif\nty
00:05:43 v #6893 > > pe near_workspaces_result_ExecutionResult<'T> = class end"
00:05:43 v #6894 > >         $'' : $'near_workspaces_result_ExecutionResult<`t>'
00:05:43 v #6895 > >     )
00:05:43 v #6896 > >
00:05:43 v #6897 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:43 v #6898 > > │ ### execution_success
00:05:43 v #6899 > >
00:05:43 v #6900 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:43 v #6901 > > nominal execution_success =
00:05:43 v #6902 > >     `(
00:05:43 v #6903 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:05:43 v #6904 > > Fable.Core.Emit(\"near_workspaces::result::ExecutionSuccess\")>]]\n#endif\ntype
00:05:43 v #6905 > > near_workspaces_result_ExecutionSuccess = class end"
00:05:43 v #6906 > >         $'' : $'near_workspaces_result_ExecutionSuccess'
00:05:43 v #6907 > >     )
00:05:43 v #6908 > >
00:05:43 v #6909 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:43 v #6910 > > │ ### execution_failure
00:05:43 v #6911 > >
00:05:43 v #6912 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:43 v #6913 > > nominal execution_failure =
00:05:43 v #6914 > >     `(
00:05:43 v #6915 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:05:43 v #6916 > > Fable.Core.Emit(\"near_workspaces::result::ExecutionFailure\")>]]\n#endif\ntype
00:05:43 v #6917 > > near_workspaces_result_ExecutionFailure = class end"
00:05:43 v #6918 > >         $'' : $'near_workspaces_result_ExecutionFailure'
00:05:43 v #6919 > >     )
00:05:44 v #6920 > >
00:05:44 v #6921 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:44 v #6922 > > │ ### execution_outcome
00:05:44 v #6923 > >
00:05:44 v #6924 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:44 v #6925 > > nominal execution_outcome =
00:05:44 v #6926 > >     `(
00:05:44 v #6927 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:05:44 v #6928 > > Fable.Core.Emit(\"near_workspaces::result::ExecutionOutcome\")>]]\n#endif\ntype
00:05:44 v #6929 > > near_workspaces_result_ExecutionOutcome = class end"
00:05:44 v #6930 > >         $'' : $'near_workspaces_result_ExecutionOutcome'
00:05:44 v #6931 > >     )
00:05:44 v #6932 > >
00:05:44 v #6933 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:44 v #6934 > > │ ### sandbox_worker
00:05:44 v #6935 > >
00:05:44 v #6936 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:44 v #6937 > > inl sandbox_worker () : resultm.result' (worker sandbox) near_workspaces_error =
00:05:44 v #6938 > >     !\($'"near_workspaces::sandbox().await"')
00:05:44 v #6939 > >
00:05:44 v #6940 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:44 v #6941 > > │ ### dev_deploy
00:05:44 v #6942 > >
00:05:44 v #6943 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:44 v #6944 > > inl dev_deploy
00:05:44 v #6945 > >     (wasm : am'.vec u8)
00:05:44 v #6946 > >     (worker : worker sandbox)
00:05:44 v #6947 > >     : async.future_pin (resultm.result' contract near_workspaces_error)
00:05:44 v #6948 > >     =
00:05:44 v #6949 > >     inl worker = worker |> rust.emit
00:05:44 v #6950 > >     !\\(wasm, $'"Box::pin(!worker.dev_deploy(&$0))"')
00:05:44 v #6951 > >
00:05:44 v #6952 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:44 v #6953 > > │ ### call
00:05:44 v #6954 > >
00:05:44 v #6955 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:44 v #6956 > > inl call (fn_name : string) (contract : contract) : call_transaction =
00:05:44 v #6957 > >     !\\((contract, fn_name), $'"$0.call(&*$1)"')
00:05:44 v #6958 > >
00:05:44 v #6959 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:44 v #6960 > > │ ### logs
00:05:44 v #6961 > >
00:05:44 v #6962 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:44 v #6963 > > inl logs (result : execution_final_result) : am'.vec (rust.ref sm'.str) =
00:05:44 v #6964 > >     !\($'"!result.logs()"')
00:05:44 v #6965 > >
00:05:44 v #6966 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:44 v #6967 > > │ ### into_result
00:05:44 v #6968 > >
00:05:44 v #6969 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:44 v #6970 > > inl into_result
00:05:44 v #6971 > >     (result : execution_final_result)
00:05:44 v #6972 > >     : resultm.result' execution_success execution_failure
00:05:44 v #6973 > >     =
00:05:44 v #6974 > >     !\\(result, $'"$0.into_result()"')
00:05:45 v #6975 > >
00:05:45 v #6976 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:45 v #6977 > > │ ### receipt_failures
00:05:45 v #6978 > >
00:05:45 v #6979 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:45 v #6980 > > inl receipt_failures (result : execution_final_result) : am'.vec (rust.ref
00:05:45 v #6981 > > execution_outcome) =
00:05:45 v #6982 > >     inl result = join result
00:05:45 v #6983 > >     !\($'"!result.receipt_failures()"')
00:05:45 v #6984 > >
00:05:45 v #6985 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:45 v #6986 > > │ ### receipt_outcomes
00:05:45 v #6987 > >
00:05:45 v #6988 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:45 v #6989 > > inl receipt_outcomes (result : execution_final_result) : am'.vec
00:05:45 v #6990 > > execution_outcome =
00:05:45 v #6991 > >     inl result = join result
00:05:45 v #6992 > >     inl result : rust.ref (am'.slice execution_outcome) =
00:05:45 v #6993 > > !\($'"!result.receipt_outcomes()"')
00:05:45 v #6994 > >     result |> rust.into
00:05:45 v #6995 > >
00:05:45 v #6996 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:45 v #6997 > > │ ### json
00:05:45 v #6998 > >
00:05:45 v #6999 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:45 v #7000 > > inl json (result : execution_final_result) : resultm.result' sm'.std_string
00:05:45 v #7001 > > near_workspaces_error =
00:05:45 v #7002 > >     !\\(result, $'"$0.json()"')
00:05:45 v #7003 > >
00:05:45 v #7004 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:45 v #7005 > > │ ### borsh
00:05:45 v #7006 > >
00:05:45 v #7007 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:45 v #7008 > > inl borsh (result : execution_final_result) : resultm.result' sm'.std_string
00:05:45 v #7009 > > near_workspaces_error =
00:05:45 v #7010 > >     !\\(result, $'"$0.borsh()"')
00:05:45 v #7011 > >
00:05:45 v #7012 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:45 v #7013 > > │ ### total_gas_burnt
00:05:45 v #7014 > >
00:05:45 v #7015 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:45 v #7016 > > inl total_gas_burnt (result : execution_final_result) : gas =
00:05:45 v #7017 > >     !\\(result, $'"$0.total_gas_burnt"')
00:05:45 v #7018 > >
00:05:45 v #7019 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:45 v #7020 > > │ ### as_gas
00:05:45 v #7021 > >
00:05:45 v #7022 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:45 v #7023 > > inl as_gas (gas : gas) : u64 =
00:05:45 v #7024 > >     !\\(gas, $'"$0.as_gas()"')
00:05:46 v #7025 > >
00:05:46 v #7026 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:46 v #7027 > > │ ### outcomes
00:05:46 v #7028 > >
00:05:46 v #7029 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:46 v #7030 > > inl outcomes (result : execution_final_result) : am'.vec (rust.ref
00:05:46 v #7031 > > execution_outcome) =
00:05:46 v #7032 > >     inl result = result |> rust.emit
00:05:46 v #7033 > >     !\($'"!result.outcomes()"')
00:05:46 v #7034 > >
00:05:46 v #7035 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:46 v #7036 > > │ ### is_success
00:05:46 v #7037 > >
00:05:46 v #7038 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:46 v #7039 > > inl is_success (outcome : execution_outcome) : bool =
00:05:46 v #7040 > >     !\\(outcome, $'"$0.is_success()"')
00:05:46 v #7041 > >
00:05:46 v #7042 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:46 v #7043 > > │ ### gas_burnt
00:05:46 v #7044 > >
00:05:46 v #7045 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:46 v #7046 > > inl gas_burnt (outcome : execution_outcome) : gas =
00:05:46 v #7047 > >     !\\(outcome, $'"$0.gas_burnt"')
00:05:46 v #7048 > >
00:05:46 v #7049 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:46 v #7050 > > │ ### tokens_burnt
00:05:46 v #7051 > >
00:05:46 v #7052 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:46 v #7053 > > inl tokens_burnt (outcome : execution_outcome) : near_token_workspaces =
00:05:46 v #7054 > >     !\\(outcome, $'"$0.tokens_burnt"')
00:05:46 v #7055 > >
00:05:46 v #7056 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:46 v #7057 > > │ ### transact
00:05:46 v #7058 > >
00:05:46 v #7059 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:46 v #7060 > > inl transact
00:05:46 v #7061 > >     (call : call_transaction)
00:05:46 v #7062 > >     : async.future_pin (resultm.result' execution_final_result
00:05:46 v #7063 > > near_workspaces_error)
00:05:46 v #7064 > >     =
00:05:46 v #7065 > >     !\($'"Box::pin(!call.transact())"')
00:05:46 v #7066 > >
00:05:46 v #7067 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:46 v #7068 > > │ ### gas
00:05:46 v #7069 > >
00:05:46 v #7070 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:46 v #7071 > > inl gas
00:05:46 v #7072 > >     (gas : gas)
00:05:46 v #7073 > >     (call : call_transaction)
00:05:46 v #7074 > >     : call_transaction
00:05:46 v #7075 > >     =
00:05:46 v #7076 > >     !\($'"!call.gas(!gas)"')
00:05:46 v #7077 > >
00:05:46 v #7078 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:46 v #7079 > > │ ### from_tgas
00:05:46 v #7080 > >
00:05:46 v #7081 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:46 v #7082 > > inl from_tgas
00:05:46 v #7083 > >     (tgas : i32)
00:05:46 v #7084 > >     : gas
00:05:46 v #7085 > >     =
00:05:46 v #7086 > >     !\($'"near_workspaces::types::Gas::from_tgas(!tgas)"')
00:05:47 v #7087 > >
00:05:47 v #7088 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:47 v #7089 > > │ ### print_usd
00:05:47 v #7090 > >
00:05:47 v #7091 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:47 v #7092 > > inl print_usd retry (result : execution_final_result) =
00:05:47 v #7093 > >     inl total_gas_burnt = result |> total_gas_burnt |> as_gas
00:05:47 v #7094 > >     inl total_gas_burnt_usd = total_gas_burnt |> near.gas_to_usd
00:05:47 v #7095 > >
00:05:47 v #7096 > >     trace Info
00:05:47 v #7097 > >         fun () => "near_workspaces.print_usd"
00:05:47 v #7098 > >         fun () => { retry total_gas_burnt_usd total_gas_burnt }
00:05:47 v #7099 > >
00:05:47 v #7100 > >     result
00:05:47 v #7101 > >     |> outcomes
00:05:47 v #7102 > >     |> iter.into_iter
00:05:47 v #7103 > >     |> iter.cloned
00:05:47 v #7104 > >     |> iter.for_each fun outcome =>
00:05:47 v #7105 > >         inl is_success = outcome |> is_success
00:05:47 v #7106 > >
00:05:47 v #7107 > >         inl gas_burnt = outcome |> gas_burnt |> as_gas
00:05:47 v #7108 > >         inl gas_burnt_usd = gas_burnt |> near.gas_to_usd
00:05:47 v #7109 > >
00:05:47 v #7110 > >         inl tokens_burnt = outcome |> tokens_burnt |> near.as_yoctonear
00:05:47 v #7111 > >         inl tokens_burnt_usd = tokens_burnt |> near.tokens_to_usd
00:05:47 v #7112 > >
00:05:47 v #7113 > >         trace Info
00:05:47 v #7114 > >             fun () => "near_workspaces.print_usd / outcome"
00:05:47 v #7115 > >             fun () => { is_success gas_burnt_usd tokens_burnt_usd gas_burnt
00:05:47 v #7116 > > tokens_burnt }
00:05:47 v #7117 > 00:00:09 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 14386 }
00:05:47 v #7118 > 00:00:09 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/rust/near_workspaces.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/rust/near_workspaces.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:05:47 v #7119 > 00:00:10 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/rust/near_workspaces.dib.ipynb to html
00:05:47 v #7120 > 00:00:10 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:05:47 v #7121 > 00:00:10 v #7 !   validate(nb)
00:05:48 v #7122 > 00:00:10 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:05:48 v #7123 > 00:00:10 v #9 !   return _pygments_highlight(
00:05:48 v #7124 > 00:00:10 v #10 ! [NbConvertApp] Writing 329858 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/rust/near_workspaces.dib.html
00:05:48 v #7125 > 00:00:11 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 924 }
00:05:48 v #7126 > 00:00:11 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 924 }
00:05:48 v #7127 > 00:00:11 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/rust/near_workspaces.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/rust/near_workspaces.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:05:48 v #7128 > 00:00:11 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:05:48 v #7129 > 00:00:11 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:05:48 v #7130 > 00:00:11 d #16 spiral.run / dib / { exit_code = 0; result_length = 15369 }
00:05:48 d #7131 runtime.execute_with_options_async / { exit_code = 0; output_length = 18838 }
00:05:48 d #8 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path rust/near_workspaces.dib --retries 3
00:05:48 d #7132 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path testing.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path testing.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:05:48 v #7133 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "testing.dib", "--retries", "3"])) }
00:05:49 v #7134 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/testing.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/testing.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/testing.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/testing.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:05:50 v #7135 > >
00:05:50 v #7136 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:50 v #7137 > > │ # testing
00:05:50 v #7138 > >
00:05:50 v #7139 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:50 v #7140 > > │ ## testing
00:05:50 v #7141 > >
00:05:50 v #7142 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:50 v #7143 > > │ ### testing_trace
00:05:52 v #7144 > >
00:05:52 v #7145 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:52 v #7146 > > union testing_trace =
00:05:52 v #7147 > >     | Console
00:05:52 v #7148 > >     | Trace
00:05:52 v #7149 > >     | TraceRaw
00:05:52 v #7150 > >     | Silent
00:05:53 v #7151 > >
00:05:53 v #7152 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:53 v #7153 > > │ ### __expect
00:05:53 v #7154 > >
00:05:53 v #7155 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:53 v #7156 > > inl rec __expect fn trace' name b a =
00:05:53 v #7157 > >     inl result = fn a b
00:05:53 v #7158 > >     inl result =
00:05:53 v #7159 > >         result || join result
00:05:53 v #7160 > >     inl get_raw_text () =
00:05:53 v #7161 > >         backend_switch {
00:05:53 v #7162 > >             Fsharp = fun () => $'$"{!name} / actual: %A{!a} / expected: %A{!b}"'
00:05:53 v #7163 > > : string
00:05:53 v #7164 > >             Python = fun () => $'f"{!name} / actual: {!a} / expected: {!b}"' :
00:05:53 v #7165 > > string
00:05:53 v #7166 > >         }
00:05:53 v #7167 > >     match trace' with
00:05:53 v #7168 > >     | Console =>
00:05:53 v #7169 > >         inl text = get_raw_text ()
00:05:53 v #7170 > >         text |> console.write_line
00:05:53 v #7171 > >         text
00:05:53 v #7172 > >     | Trace =>
00:05:53 v #7173 > >         trace Info (fun () => name) fun () => { actual = a; expected = b }
00:05:53 v #7174 > >         get_raw_text ()
00:05:53 v #7175 > >     | TraceRaw =>
00:05:53 v #7176 > >         inl text = get_raw_text ()
00:05:53 v #7177 > >         trace_raw Info fun () => text
00:05:53 v #7178 > >         text
00:05:53 v #7179 > >     | Silent => reflection.nameof { __expect }
00:05:53 v #7180 > >     |> assert result
00:05:53 v #7181 > >
00:05:53 v #7182 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:53 v #7183 > > │ ### __assert_approx_eq
00:05:53 v #7184 > >
00:05:53 v #7185 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:53 v #7186 > > inl rec __assert_approx_eq trace e b a =
00:05:53 v #7187 > >     __expect
00:05:53 v #7188 > >         (fun a b => abs (b - a) < (e |> optionm.defaultWith 0.00000001))
00:05:53 v #7189 > >         trace
00:05:53 v #7190 > >         (reflection.nameof { __assert_approx_eq })
00:05:53 v #7191 > >         b
00:05:53 v #7192 > >         a
00:05:53 v #7193 > >
00:05:53 v #7194 > > inl _assert_approx_eq e b a =
00:05:53 v #7195 > >     __assert_approx_eq Console e b a
00:05:53 v #7196 > >
00:05:53 v #7197 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:53 v #7198 > > //// test
00:05:53 v #7199 > > ///! fsharp
00:05:53 v #7200 > > ///! cuda
00:05:53 v #7201 > > ///! rust
00:05:53 v #7202 > > ///! typescript
00:05:53 v #7203 > > ///! python
00:05:53 v #7204 > >
00:05:53 v #7205 > > 12.345f64
00:05:53 v #7206 > > |> _assert_approx_eq (Some 0.0001f64) 12.345f64
00:06:02 v #7207 > >
00:06:02 v #7208 > > ── [ 8.42s - return value ] ────────────────────────────────────────────────────
00:06:02 v #7209 > > │ .py output (Cuda):
00:06:02 v #7210 > > │ __assert_approx_eq / actual: 12.345 / expected: 12.345
00:06:02 v #7211 > > │
00:06:02 v #7212 > > │ .rs output:
00:06:02 v #7213 > > │ __assert_approx_eq / actual: 12.345 / expected: 12.345
00:06:02 v #7214 > > │
00:06:02 v #7215 > > │ .ts output:
00:06:02 v #7216 > > │ __assert_approx_eq / actual: 12.345 / expected: 12.345
00:06:02 v #7217 > > │
00:06:02 v #7218 > > │ .py output:
00:06:02 v #7219 > > │ __assert_approx_eq / actual: 12.345 / expected: 12.345
00:06:02 v #7220 > > │
00:06:02 v #7221 > > │
00:06:02 v #7222 > >
00:06:02 v #7223 > > ── [ 8.43s - stdout ] ──────────────────────────────────────────────────────────
00:06:02 v #7224 > > │ .fsx output:
00:06:02 v #7225 > > │ __assert_approx_eq / actual: 12.345 / expected: 12.345
00:06:02 v #7226 > > │
00:06:02 v #7227 > >
00:06:02 v #7228 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:02 v #7229 > > //// test
00:06:02 v #7230 > > //// print_code
00:06:02 v #7231 > >
00:06:02 v #7232 > > 1f64
00:06:02 v #7233 > > |> __assert_approx_eq Console (Some 3) 2
00:06:02 v #7234 > >
00:06:02 v #7235 > > ── [ 167.81ms - stdout ] ───────────────────────────────────────────────────────
00:06:02 v #7236 > > │ let rec closure0 (v0 : string) () : unit =
00:06:02 v #7237 > > │     let v1 : (string -> unit) = System.Console.WriteLine
00:06:02 v #7238 > > │     v1 v0
00:06:02 v #7239 > > │ and method0 () : unit =
00:06:02 v #7240 > > │     let v0 : string = "__assert_approx_eq"
00:06:02 v #7241 > > │     let v1 : string = $"{v0} / actual: %A{1.0} / expected:
00:06:02 v #7242 > > %A{2.0}"
00:06:02 v #7243 > > │     let v4 : unit = ()
00:06:02 v #7244 > > │     let v5 : (unit -> unit) = closure0(v1)
00:06:02 v #7245 > > │     let v6 : unit = (fun () -> v5 (); v4) ()
00:06:02 v #7246 > > │     ()
00:06:02 v #7247 > > │ method0()
00:06:02 v #7248 > > │
00:06:02 v #7249 > > │ __assert_approx_eq / actual: 1.0 / expected: 2.0
00:06:02 v #7250 > > │
00:06:02 v #7251 > >
00:06:02 v #7252 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:02 v #7253 > > //// test
00:06:02 v #7254 > > //// print_code
00:06:02 v #7255 > >
00:06:02 v #7256 > > (dyn 1f64)
00:06:02 v #7257 > > |> _assert_approx_eq (Some 3) 2
00:06:02 v #7258 > >
00:06:02 v #7259 > > ── [ 267.77ms - stdout ] ───────────────────────────────────────────────────────
00:06:02 v #7260 > > │ let rec method1 (v0 : bool) : bool =
00:06:02 v #7261 > > │     v0
00:06:02 v #7262 > > │ and closure0 (v0 : string) () : unit =
00:06:02 v #7263 > > │     let v1 : (string -> unit) = System.Console.WriteLine
00:06:02 v #7264 > > │     v1 v0
00:06:02 v #7265 > > │ and method0 () : unit =
00:06:02 v #7266 > > │     let v0 : float = 1.0
00:06:02 v #7267 > > │     let v1 : float = 2.0 - v0
00:06:02 v #7268 > > │     let v2 : float =  -v1
00:06:02 v #7269 > > │     let v3 : bool = v1 >= v2
00:06:02 v #7270 > > │     let v4 : float =
00:06:02 v #7271 > > │         if v3 then
00:06:02 v #7272 > > │             v1
00:06:02 v #7273 > > │         else
00:06:02 v #7274 > > │             v2
00:06:02 v #7275 > > │     let v5 : bool = v4 < 3.0
00:06:02 v #7276 > > │     let v7 : bool =
00:06:02 v #7277 > > │         if v5 then
00:06:02 v #7278 > > │             true
00:06:02 v #7279 > > │         else
00:06:02 v #7280 > > │             method1(v5)
00:06:02 v #7281 > > │     let v8 : string = "__assert_approx_eq"
00:06:02 v #7282 > > │     let v9 : string = $"{v8} / actual: %A{v0} / expected:
00:06:02 v #7283 > > %A{2.0}"
00:06:02 v #7284 > > │     let v12 : unit = ()
00:06:02 v #7285 > > │     let v13 : (unit -> unit) = closure0(v9)
00:06:02 v #7286 > > │     let v14 : unit = (fun () -> v13 (); v12) ()
00:06:02 v #7287 > > │     let v16 : bool = v7 = false
00:06:02 v #7288 > > │     if v16 then
00:06:02 v #7289 > > │         failwith<unit> v9
00:06:02 v #7290 > > │ method0()
00:06:02 v #7291 > > │
00:06:02 v #7292 > > │ __assert_approx_eq / actual: 1.0 / expected: 2.0
00:06:02 v #7293 > > │
00:06:02 v #7294 > >
00:06:02 v #7295 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:02 v #7296 > > │ ### __assert_eq
00:06:02 v #7297 > >
00:06:02 v #7298 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:02 v #7299 > > inl rec __assert_eq trace b a =
00:06:02 v #7300 > >     __expect (=) trace (reflection.nameof { __assert_eq }) b a
00:06:02 v #7301 > >
00:06:02 v #7302 > > inl _assert_eq b a =
00:06:02 v #7303 > >     __assert_eq Console b a
00:06:02 v #7304 > >
00:06:02 v #7305 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:02 v #7306 > > │ ### __assert_eq'
00:06:02 v #7307 > >
00:06:02 v #7308 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:02 v #7309 > > inl rec __assert_eq' trace b a =
00:06:02 v #7310 > >     __expect (=.) trace (reflection.nameof { __assert_eq' }) b a
00:06:02 v #7311 > >
00:06:02 v #7312 > > inl _assert_eq' b a =
00:06:02 v #7313 > >     __assert_eq' Console b a
00:06:03 v #7314 > >
00:06:03 v #7315 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:03 v #7316 > > │ ### __assert_ne
00:06:03 v #7317 > >
00:06:03 v #7318 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:03 v #7319 > > inl rec __assert_ne trace b a =
00:06:03 v #7320 > >     __expect (<>.) trace (reflection.nameof { __assert_ne }) b a
00:06:03 v #7321 > >
00:06:03 v #7322 > > inl _assert_ne b a =
00:06:03 v #7323 > >     __assert_ne Console b a
00:06:03 v #7324 > >
00:06:03 v #7325 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:03 v #7326 > > │ ### __assert_gt
00:06:03 v #7327 > >
00:06:03 v #7328 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:03 v #7329 > > inl rec __assert_gt trace b a =
00:06:03 v #7330 > >     __expect (>) trace (reflection.nameof { __assert_gt }) b a
00:06:03 v #7331 > >
00:06:03 v #7332 > > inl _assert_gt b a =
00:06:03 v #7333 > >     __assert_gt Console b a
00:06:03 v #7334 > >
00:06:03 v #7335 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:03 v #7336 > > │ ### __assert_ge
00:06:03 v #7337 > >
00:06:03 v #7338 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:03 v #7339 > > inl rec __assert_ge trace b a =
00:06:03 v #7340 > >     __expect (>=) trace (reflection.nameof { __assert_ge }) b a
00:06:03 v #7341 > >
00:06:03 v #7342 > > inl _assert_ge b a =
00:06:03 v #7343 > >     __assert_ge Console b a
00:06:03 v #7344 > >
00:06:03 v #7345 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:03 v #7346 > > │ ### __assert_lt
00:06:03 v #7347 > >
00:06:03 v #7348 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:03 v #7349 > > inl rec __assert_lt trace b a =
00:06:03 v #7350 > >     __expect (<) trace (reflection.nameof { __assert_lt }) b a
00:06:03 v #7351 > >
00:06:03 v #7352 > > inl _assert_lt b a =
00:06:03 v #7353 > >     __assert_lt Console b a
00:06:03 v #7354 > >
00:06:03 v #7355 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:03 v #7356 > > │ ### __assert_le
00:06:03 v #7357 > >
00:06:03 v #7358 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:03 v #7359 > > inl rec __assert_le trace b a =
00:06:03 v #7360 > >     __expect (<=) trace (reflection.nameof { __assert_le }) b a
00:06:03 v #7361 > >
00:06:03 v #7362 > > inl _assert_le b a =
00:06:03 v #7363 > >     __assert_le Console b a
00:06:03 v #7364 > >
00:06:03 v #7365 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:03 v #7366 > > │ ### __assert
00:06:03 v #7367 > >
00:06:03 v #7368 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:03 v #7369 > > inl rec __assert fn trace b a =
00:06:03 v #7370 > >     __expect fn trace (reflection.nameof { __assert }) a b
00:06:03 v #7371 > >
00:06:03 v #7372 > > inl _assert fn b a =
00:06:03 v #7373 > >     __assert fn Console b a
00:06:04 v #7374 > >
00:06:04 v #7375 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:04 v #7376 > > │ ### __assert_between
00:06:04 v #7377 > >
00:06:04 v #7378 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:04 v #7379 > > inl rec __assert_between trace a b actual =
00:06:04 v #7380 > >     inl assert_between actual (a, b) =
00:06:04 v #7381 > >         __assert_ge Silent a actual
00:06:04 v #7382 > >         __assert_le Silent b actual
00:06:04 v #7383 > >         true
00:06:04 v #7384 > >     __expect assert_between trace (reflection.nameof { __assert_between }) (a,
00:06:04 v #7385 > > b) actual
00:06:04 v #7386 > >
00:06:04 v #7387 > > inl _assert_between a b actual =
00:06:04 v #7388 > >     __assert_between Console a b actual
00:06:04 v #7389 > >
00:06:04 v #7390 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:04 v #7391 > > │ ### _assert_fn
00:06:04 v #7392 > >
00:06:04 v #7393 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:04 v #7394 > > inl rec _assert_fn fn list =
00:06:04 v #7395 > >     list
00:06:04 v #7396 > >     |> listm.rev
00:06:04 v #7397 > >     |> listm.map fun input, expected => join
00:06:04 v #7398 > >         input
00:06:04 v #7399 > >         |> fn
00:06:04 v #7400 > >         |> resultm.get
00:06:04 v #7401 > >         |> fun x =>
00:06:04 v #7402 > >             inl expected' = join expected
00:06:04 v #7403 > >             inl name = reflection.nameof { _assert_fn }
00:06:04 v #7404 > >             try
00:06:04 v #7405 > >                 fun () =>
00:06:04 v #7406 > >                     console.write_line ""
00:06:04 v #7407 > >                     trace Verbose
00:06:04 v #7408 > >                         fun () => name
00:06:04 v #7409 > >                         fun () => { input }
00:06:04 v #7410 > >                     x
00:06:04 v #7411 > >                     |> sm'.format
00:06:04 v #7412 > >                     |> _assert_eq' (expected' |> sm'.format)
00:06:04 v #7413 > >                     true
00:06:04 v #7414 > >                 fun ex =>
00:06:04 v #7415 > >                     trace Critical
00:06:04 v #7416 > >                         fun () =>
00:06:04 v #7417 > >                             backend_switch {
00:06:04 v #7418 > >                                 Fsharp = fun () => $'$"{!name} / error"' :
00:06:04 v #7419 > > string
00:06:04 v #7420 > >                                 Python = fun () => $'f"{!name} / error"' :
00:06:04 v #7421 > > string
00:06:04 v #7422 > >                             }
00:06:04 v #7423 > >                         fun () => { ex expected }
00:06:04 v #7424 > >                     Some false
00:06:04 v #7425 > >             |> optionm.value
00:06:04 v #7426 > >     |> listm'.filter not
00:06:04 v #7427 > >     |> function
00:06:04 v #7428 > >         | [[]] => ()
00:06:04 v #7429 > >         | x => x |> sm'.format_debug |> failwith
00:06:04 v #7430 > >
00:06:04 v #7431 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:04 v #7432 > > │ ## fsharp
00:06:04 v #7433 > >
00:06:04 v #7434 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:04 v #7435 > > │ ### __assert_contains
00:06:04 v #7436 > >
00:06:04 v #7437 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:04 v #7438 > > inl rec __assert_contains forall t u. (trace : testing_trace) (b : t) (a : u) :
00:06:04 v #7439 > > () =
00:06:04 v #7440 > >     __expect
00:06:04 v #7441 > >         fun a b =>
00:06:04 v #7442 > >             a
00:06:04 v #7443 > >             |> $'List.ofSeq'
00:06:04 v #7444 > >             |> fun x => x : listm'.list' t
00:06:04 v #7445 > >             |> $'List.tryFind' ((=) b)
00:06:04 v #7446 > >             |> optionm'.unbox
00:06:04 v #7447 > >             |> fun (x : option t) => x <> None
00:06:04 v #7448 > >         trace
00:06:04 v #7449 > >         // TODO: forall nameof (Cannot dyn a forall into a runtime var.)
00:06:04 v #7450 > >         // Metavars that are not part of the enclosing function's signature are
00:06:04 v #7451 > > not allowed. They need to be values.
00:06:04 v #7452 > >         // Got: {__assert_contains : testing_trace -> _ -> _ -> ()} -> string
00:06:04 v #7453 > >         // (reflection.nameof { __assert_contains })
00:06:04 v #7454 > >         "__assert_contains"
00:06:04 v #7455 > >         b
00:06:04 v #7456 > >         a
00:06:04 v #7457 > >
00:06:04 v #7458 > > inl _assert_contains b a =
00:06:04 v #7459 > >     __assert_contains Console b a
00:06:04 v #7460 > >
00:06:04 v #7461 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:04 v #7462 > > //// test
00:06:04 v #7463 > >
00:06:04 v #7464 > > ;[[ "a"; "b"; "c" ]]
00:06:04 v #7465 > > |> _assert_contains "b"
00:06:05 v #7466 > >
00:06:05 v #7467 > > ── [ 516.74ms - stdout ] ───────────────────────────────────────────────────────
00:06:05 v #7468 > > │ __assert_contains / actual: [|"a"; "b"; "c"|] / expected: "b"
00:06:05 v #7469 > > │
00:06:05 v #7470 > >
00:06:05 v #7471 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:05 v #7472 > > //// test
00:06:05 v #7473 > >
00:06:05 v #7474 > > "abcd"
00:06:05 v #7475 > > |> _assert_contains 'b'
00:06:05 v #7476 > >
00:06:05 v #7477 > > ── [ 161.41ms - stdout ] ───────────────────────────────────────────────────────
00:06:05 v #7478 > > │ __assert_contains / actual: "abcd" / expected: 'b'
00:06:05 v #7479 > > │
00:06:05 v #7480 > >
00:06:05 v #7481 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:05 v #7482 > > │ ### _throws
00:06:05 v #7483 > >
00:06:05 v #7484 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:05 v #7485 > > inl _throws (fn : () -> ()) : option exn =
00:06:05 v #7486 > >     inl none = None : option exn
00:06:05 v #7487 > >     inl some (s : exn) = Some s
00:06:05 v #7488 > >     backend_switch {
00:06:05 v #7489 > >         Fsharp = fun () =>
00:06:05 v #7490 > >             $'try !fn (); !none with ex -> ex |> !some ' : option exn
00:06:05 v #7491 > >         Python = fun () =>
00:06:05 v #7492 > >             $'fn = !fn '
00:06:05 v #7493 > >             $'none = !none '
00:06:05 v #7494 > >             $'some = !some '
00:06:05 v #7495 > >             $'try: fn(); x = none '
00:06:05 v #7496 > >             $'except Exception as ex: x = some(ex)'
00:06:05 v #7497 > >             $'x' : option exn
00:06:05 v #7498 > >     }
00:06:05 v #7499 > >
00:06:05 v #7500 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:05 v #7501 > > │ ### print_and_return
00:06:05 v #7502 > >
00:06:05 v #7503 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:05 v #7504 > > inl rec print_and_return x =
00:06:05 v #7505 > >     inl name = reflection.nameof { print_and_return }
00:06:05 v #7506 > >     backend_switch {
00:06:05 v #7507 > >         Fsharp = fun () => $'printfn $"{!name} / x: {!x}"' : ()
00:06:05 v #7508 > >         Python = fun () => $'print(f"{!name} / x: {!x}")' : ()
00:06:05 v #7509 > >     }
00:06:05 v #7510 > >     x
00:06:05 v #7511 > 00:00:16 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 14123 }
00:06:05 v #7512 > 00:00:16 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/testing.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/testing.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:06:06 v #7513 > 00:00:17 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/testing.dib.ipynb to html
00:06:06 v #7514 > 00:00:17 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:06:06 v #7515 > 00:00:17 v #7 !   validate(nb)
00:06:06 v #7516 > 00:00:17 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:06:06 v #7517 > 00:00:17 v #9 !   return _pygments_highlight(
00:06:06 v #7518 > 00:00:17 v #10 ! [NbConvertApp] Writing 321554 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/testing.dib.html
00:06:07 v #7519 > 00:00:18 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 898 }
00:06:07 v #7520 > 00:00:18 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 898 }
00:06:07 v #7521 > 00:00:18 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/testing.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/testing.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:06:07 v #7522 > 00:00:18 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:06:07 v #7523 > 00:00:18 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:06:07 v #7524 > 00:00:18 d #16 spiral.run / dib / { exit_code = 0; result_length = 15080 }
00:06:07 d #7525 runtime.execute_with_options_async / { exit_code = 0; output_length = 18496 }
00:06:07 d #9 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path testing.dib --retries 3
00:06:07 d #7526 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path guid.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path guid.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:06:07 v #7527 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "guid.dib", "--retries", "3"])) }
00:06:07 v #7528 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/guid.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/guid.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/guid.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/guid.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:06:08 v #7529 > >
00:06:08 v #7530 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:08 v #7531 > > │ # guid
00:06:10 v #7532 > >
00:06:10 v #7533 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:10 v #7534 > > //// test
00:06:10 v #7535 > >
00:06:10 v #7536 > > open testing
00:06:11 v #7537 > >
00:06:11 v #7538 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:11 v #7539 > > │ ## guid
00:06:11 v #7540 > >
00:06:11 v #7541 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:11 v #7542 > > │ ### guid
00:06:11 v #7543 > >
00:06:11 v #7544 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:11 v #7545 > > nominal guid_python =
00:06:11 v #7546 > >     `(
00:06:11 v #7547 > >         global "import uuid"
00:06:11 v #7548 > >         $'' : $'uuid.UUID'
00:06:11 v #7549 > >     )
00:06:11 v #7550 > > type guid_switch =
00:06:11 v #7551 > >     {
00:06:11 v #7552 > >         Fsharp : $'System.Guid'
00:06:11 v #7553 > >         Python : guid_python
00:06:11 v #7554 > >     }
00:06:11 v #7555 > > nominal guid = $'backend_switch `(guid_switch)'
00:06:11 v #7556 > >
00:06:11 v #7557 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:11 v #7558 > > │ ### new_guid
00:06:11 v #7559 > >
00:06:11 v #7560 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:11 v #7561 > > inl new_guid (x : string) : guid =
00:06:11 v #7562 > >     run_target_args (fun () => x) function
00:06:11 v #7563 > >         | Rust (Contract) => fun _ => null ()
00:06:11 v #7564 > >         | _ => fun x => x |> convert
00:06:12 v #7565 > >
00:06:12 v #7566 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:12 v #7567 > > │ ### new_raw_guid
00:06:12 v #7568 > >
00:06:12 v #7569 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:12 v #7570 > > inl new_raw_guid () : guid =
00:06:12 v #7571 > >     backend_switch {
00:06:12 v #7572 > >         Fsharp = fun () => $'System.Guid.NewGuid' () : guid
00:06:12 v #7573 > >         Python = fun () => $'uuid.uuid4()' : guid
00:06:12 v #7574 > >     }
00:06:12 v #7575 > >
00:06:12 v #7576 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:12 v #7577 > > │ ### hash_guid
00:06:12 v #7578 > >
00:06:12 v #7579 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:12 v #7580 > > type hash_guid = guid
00:06:12 v #7581 > >
00:06:12 v #7582 > > let hash_guid (hash : string) : hash_guid =
00:06:12 v #7583 > >     inl hash = hash |> sm'.pad_left 32i32 '0'
00:06:12 v #7584 > >     run_target_args (fun () => hash) function
00:06:12 v #7585 > >         | Rust (Contract) => fun _ => null ()
00:06:12 v #7586 > >         | _ => fun hash =>
00:06:12 v #7587 > >             inl a = hash |> sm'.range (am'.Start 0i32) (am'.End fun _ => 8)
00:06:12 v #7588 > >             inl b = hash |> sm'.range (am'.Start 8i32) (am'.End fun _ => 12)
00:06:12 v #7589 > >             inl c = hash |> sm'.range (am'.Start 12i32) (am'.End fun _ => 16)
00:06:12 v #7590 > >             inl d = hash |> sm'.range (am'.Start 16i32) (am'.End fun _ => 20)
00:06:12 v #7591 > >             inl e = hash |> sm'.range (am'.Start 20i32) (am'.End fun _ => 32)
00:06:12 v #7592 > >             $'$"{!a}-{!b}-{!c}-{!d}-{!e}"' |> new_guid
00:06:12 v #7593 > >
00:06:12 v #7594 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:12 v #7595 > > //// test
00:06:12 v #7596 > > ///! fsharp
00:06:12 v #7597 > > ///! cuda
00:06:12 v #7598 > > ///! rust
00:06:12 v #7599 > > ///! typescript
00:06:12 v #7600 > > ///! python
00:06:12 v #7601 > >
00:06:12 v #7602 > > ""
00:06:12 v #7603 > > |> hash_guid
00:06:12 v #7604 > > |> _assert_eq' (new_guid "00000000-0000-0000-0000-000000000000")
00:06:12 v #7605 > >
00:06:12 v #7606 > > "123456789012345678901234567890123"
00:06:12 v #7607 > > |> hash_guid
00:06:12 v #7608 > > |> _assert_eq' (new_guid "12345678-9012-3456-7890-123456789012")
00:06:21 v #7609 > >
00:06:21 v #7610 > > ── [ 9.07s - return value ] ────────────────────────────────────────────────────
00:06:21 v #7611 > > │
00:06:21 v #7612 > > │ .py output (Cuda):
00:06:21 v #7613 > > │ __assert_eq' / actual: 00000000-0000-0000-0000-000000000000
00:06:21 v #7614 > > expected: 00000000-0000-0000-0000-000000000000
00:06:21 v #7615 > > │ __assert_eq' / actual: 12345678-9012-3456-7890-123456789012
00:06:21 v #7616 > > expected: 12345678-9012-3456-7890-123456789012
00:06:21 v #7617 > > │
00:06:21 v #7618 > > │
00:06:21 v #7619 > > │ .rs output:
00:06:21 v #7620 > > │ __assert_eq' / actual:
00:06:21 v #7621 > > Guid(00000000-0000-0000-0000-000000000000) / expected:
00:06:21 v #7622 > > Guid(00000000-0000-0000-0000-000000000000)
00:06:21 v #7623 > > │ __assert_eq' / actual:
00:06:21 v #7624 > > Guid(12345678-9012-3456-7890-123456789012) / expected:
00:06:21 v #7625 > > Guid(12345678-9012-3456-7890-123456789012)
00:06:21 v #7626 > > │
00:06:21 v #7627 > > │
00:06:21 v #7628 > > │ .ts output:
00:06:21 v #7629 > > │ __assert_eq' / actual: 00000000-0000-0000-0000-000000000000
00:06:21 v #7630 > > expected: 00000000-0000-0000-0000-000000000000
00:06:21 v #7631 > > │ __assert_eq' / actual: 12345678-9012-3456-7890-123456789012
00:06:21 v #7632 > > expected: 12345678-9012-3456-7890-123456789012
00:06:21 v #7633 > > │
00:06:21 v #7634 > > │
00:06:21 v #7635 > > │ .py output:
00:06:21 v #7636 > > │ __assert_eq' / actual: 00000000-0000-0000-0000-000000000000
00:06:21 v #7637 > > expected: 00000000-0000-0000-0000-000000000000
00:06:21 v #7638 > > │ __assert_eq' / actual: 12345678-9012-3456-7890-123456789012
00:06:21 v #7639 > > expected: 12345678-9012-3456-7890-123456789012
00:06:21 v #7640 > > │
00:06:21 v #7641 > > │
00:06:21 v #7642 > > │
00:06:21 v #7643 > >
00:06:21 v #7644 > > ── [ 9.08s - stdout ] ──────────────────────────────────────────────────────────
00:06:21 v #7645 > > │ .fsx output:
00:06:21 v #7646 > > │ __assert_eq' / actual: 00000000-0000-0000-0000-000000000000
00:06:21 v #7647 > > expected: 00000000-0000-0000-0000-000000000000
00:06:21 v #7648 > > │ __assert_eq' / actual: 12345678-9012-3456-7890-123456789012
00:06:21 v #7649 > > expected: 12345678-9012-3456-7890-123456789012
00:06:21 v #7650 > > │
00:06:21 v #7651 > >
00:06:21 v #7652 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:21 v #7653 > > │ ## main
00:06:21 v #7654 > >
00:06:21 v #7655 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:21 v #7656 > > inl main () =
00:06:21 v #7657 > >     $'let new_guid x = !new_guid x' : ()
00:06:21 v #7658 > >     $'let hash_guid x = !hash_guid x' : ()
00:06:21 v #7659 > >     $'let new_raw_guid x = !new_raw_guid x' : ()
00:06:21 v #7660 > 00:00:14 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 5263 }
00:06:21 v #7661 > 00:00:14 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/guid.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/guid.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:06:22 v #7662 > 00:00:15 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/guid.dib.ipynb to html
00:06:22 v #7663 > 00:00:15 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:06:22 v #7664 > 00:00:15 v #7 !   validate(nb)
00:06:22 v #7665 > 00:00:15 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:06:22 v #7666 > 00:00:15 v #9 !   return _pygments_highlight(
00:06:22 v #7667 > 00:00:15 v #10 ! [NbConvertApp] Writing 287180 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/guid.dib.html
00:06:22 v #7668 > 00:00:15 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 892 }
00:06:22 v #7669 > 00:00:15 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 892 }
00:06:22 v #7670 > 00:00:15 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/guid.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/guid.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:06:23 v #7671 > 00:00:15 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:06:23 v #7672 > 00:00:15 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:06:23 v #7673 > 00:00:15 d #16 spiral.run / dib / { exit_code = 0; result_length = 6214 }
00:06:23 d #7674 runtime.execute_with_options_async / { exit_code = 0; output_length = 9111 }
00:06:23 d #10 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path guid.dib --retries 3
00:06:23 d #7675 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path async.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path async.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:06:23 v #7676 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "async.dib", "--retries", "3"])) }
00:06:23 v #7677 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/async.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/async.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/async.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/async.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:06:24 v #7678 > >
00:06:24 v #7679 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:24 v #7680 > > │ # async
00:06:26 v #7681 > >
00:06:26 v #7682 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:26 v #7683 > > //// test
00:06:26 v #7684 > >
00:06:26 v #7685 > > open testing
00:06:27 v #7686 > >
00:06:27 v #7687 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:27 v #7688 > > open rust
00:06:27 v #7689 > > open rust_operators
00:06:27 v #7690 > >
00:06:27 v #7691 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:27 v #7692 > > │ ### base_let'
00:06:27 v #7693 > >
00:06:27 v #7694 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:27 v #7695 > > inl base_let' x =
00:06:27 v #7696 > >     let' x
00:06:27 v #7697 > >
00:06:27 v #7698 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:27 v #7699 > > │ ## rust
00:06:27 v #7700 > >
00:06:27 v #7701 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:27 v #7702 > > │ ### future
00:06:27 v #7703 > >
00:06:27 v #7704 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:27 v #7705 > > nominal future t =
00:06:27 v #7706 > >     `(
00:06:27 v #7707 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:06:27 v #7708 > > Fable.Core.Emit(\"std::future::Future<Output = $0>\")>]]\n#endif\ntype
00:06:27 v #7709 > > std_future_Future<'T> = class end"
00:06:27 v #7710 > >         $'' : $'std_future_Future<`t>'
00:06:27 v #7711 > >     )
00:06:27 v #7712 > >
00:06:27 v #7713 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:27 v #7714 > > │ ### future_pin
00:06:27 v #7715 > >
00:06:27 v #7716 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:27 v #7717 > > type future_pin t = rust.pin (rust.box (rust.dyn' (future t)))
00:06:28 v #7718 > >
00:06:28 v #7719 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:28 v #7720 > > │ ### future_pin_send
00:06:28 v #7721 > >
00:06:28 v #7722 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:28 v #7723 > > type future_pin_send t = rust.pin (rust.box (rust.send (rust.dyn' (future t))))
00:06:28 v #7724 > >
00:06:28 v #7725 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:28 v #7726 > > │ ### block_on_tokio
00:06:28 v #7727 > >
00:06:28 v #7728 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:28 v #7729 > > inl block_on_tokio forall t. (fn : future_pin t) : t =
00:06:28 v #7730 > >     inl runtime : infer =
00:06:28 v #7731 > >
00:06:28 v #7732 > > !\($'$"tokio::runtime::Builder::new_multi_thread().enable_all().build().unwrap()
00:06:28 v #7733 > > "')
00:06:28 v #7734 > >     !\\(fn, $'"!runtime.handle().block_on($0)"')
00:06:28 v #7735 > >
00:06:28 v #7736 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:28 v #7737 > > │ ### block_on_futures_lite
00:06:28 v #7738 > >
00:06:28 v #7739 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:28 v #7740 > > inl block_on_futures_lite forall t. (fn : future_pin t) : t =
00:06:28 v #7741 > >     !\\(fn, $'"futures_lite::future::block_on($0)"')
00:06:28 v #7742 > >
00:06:28 v #7743 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:28 v #7744 > > │ ### block_on_futures
00:06:28 v #7745 > >
00:06:28 v #7746 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:28 v #7747 > > inl block_on_futures forall t. (fn : future_pin t) : t =
00:06:28 v #7748 > >     !\\(fn, $'"futures::executor::block_on($0)"')
00:06:28 v #7749 > >
00:06:28 v #7750 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:28 v #7751 > > │ ### block_on_async_std
00:06:28 v #7752 > >
00:06:28 v #7753 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:28 v #7754 > > inl block_on_async_std forall t. (fn : future_pin t) : t =
00:06:28 v #7755 > >     !\\(fn, $'"async_std::task::block_on($0)"')
00:06:28 v #7756 > >
00:06:28 v #7757 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:28 v #7758 > > │ ### block_on_tokio_send
00:06:28 v #7759 > >
00:06:28 v #7760 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:28 v #7761 > > inl block_on_tokio_send forall t. (fn : future_pin_send t) : t =
00:06:28 v #7762 > >     !\($'"tokio::runtime::block_on(!fn)"')
00:06:29 v #7763 > >
00:06:29 v #7764 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:29 v #7765 > > │ ### stream_ext_tokio
00:06:29 v #7766 > >
00:06:29 v #7767 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:29 v #7768 > > nominal stream_ext_tokio =
00:06:29 v #7769 > >     `(
00:06:29 v #7770 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:06:29 v #7771 > > Fable.Core.Emit(\"tokio_stream::StreamExt\")>]]\n#endif\ntype
00:06:29 v #7772 > > tokio_stream_StreamExt = class end"
00:06:29 v #7773 > >         $'' : $'tokio_stream_StreamExt'
00:06:29 v #7774 > >     )
00:06:29 v #7775 > >
00:06:29 v #7776 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:29 v #7777 > > │ ### join_handle_tokio
00:06:29 v #7778 > >
00:06:29 v #7779 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:29 v #7780 > > nominal join_handle_tokio t =
00:06:29 v #7781 > >     `(
00:06:29 v #7782 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:06:29 v #7783 > > Fable.Core.Emit(\"tokio::task::JoinHandle<$0>\")>]]\n#endif\ntype
00:06:29 v #7784 > > tokio_task_JoinHandle<'T> = class end"
00:06:29 v #7785 > >         $'' : $'tokio_task_JoinHandle<`t>'
00:06:29 v #7786 > >     )
00:06:29 v #7787 > >
00:06:29 v #7788 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:29 v #7789 > > │ ### stream_collect_tokio
00:06:29 v #7790 > >
00:06:29 v #7791 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:29 v #7792 > > inl stream_collect_tokio forall t u.
00:06:29 v #7793 > >     (stream : t)
00:06:29 v #7794 > >     : future_pin (am'.vec u)
00:06:29 v #7795 > >     =
00:06:29 v #7796 > >     !\($'"Box::pin(tokio_stream::StreamExt::collect(!stream))"')
00:06:29 v #7797 > >
00:06:29 v #7798 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:29 v #7799 > > │ ### stream_collect_futures
00:06:29 v #7800 > >
00:06:29 v #7801 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:29 v #7802 > > inl stream_collect_futures forall t u.
00:06:29 v #7803 > >     (stream : t)
00:06:29 v #7804 > >     : future_pin (am'.vec u)
00:06:29 v #7805 > >     =
00:06:29 v #7806 > >     !\($'"Box::pin(futures::stream::StreamExt::collect(!stream))"')
00:06:29 v #7807 > >
00:06:29 v #7808 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:29 v #7809 > > │ ### stream_next_tokio
00:06:29 v #7810 > >
00:06:29 v #7811 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:29 v #7812 > > inl stream_next_tokio forall t u.
00:06:29 v #7813 > >     (stream : t)
00:06:29 v #7814 > >     : future_pin (optionm'.option' u)
00:06:29 v #7815 > >     =
00:06:29 v #7816 > >     !\($'"let mut !stream = !stream"')
00:06:29 v #7817 > >     !\($'"Box::pin(tokio_stream::StreamExt::next(&mut !stream))"')
00:06:29 v #7818 > >
00:06:29 v #7819 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:29 v #7820 > > │ ### stream_filter_map_tokio
00:06:29 v #7821 > >
00:06:29 v #7822 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:29 v #7823 > > inl stream_filter_map_tokio forall t u v.
00:06:29 v #7824 > >     (fn : u -> optionm'.option' v)
00:06:29 v #7825 > >     (stream : t)
00:06:29 v #7826 > >     : infer' v
00:06:29 v #7827 > >     =
00:06:29 v #7828 > >     inl fn = join fn
00:06:29 v #7829 > >     !\($'"tokio_stream::StreamExt::filter_map(!stream, |x| !fn(x))"')
00:06:29 v #7830 > >
00:06:29 v #7831 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:29 v #7832 > > │ ### stream_filter_map_futures
00:06:29 v #7833 > >
00:06:29 v #7834 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:29 v #7835 > > inl stream_filter_map_futures forall t u v.
00:06:29 v #7836 > >     (fn : u -> optionm'.option' v)
00:06:29 v #7837 > >     (stream : t)
00:06:29 v #7838 > >     : infer' v
00:06:29 v #7839 > >     =
00:06:29 v #7840 > >     inl fn = join fn
00:06:29 v #7841 > >     !\($'"futures::stream::StreamExt::filter_map(!stream, |x| async { !fn(x)
00:06:29 v #7842 > > })"')
00:06:30 v #7843 > >
00:06:30 v #7844 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:30 v #7845 > > │ ### spawn_tokio
00:06:30 v #7846 > >
00:06:30 v #7847 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:30 v #7848 > > inl spawn_tokio forall t. (fn : future_pin_send t) : join_handle_tokio t =
00:06:30 v #7849 > >     !\($'"tokio::runtime::spawn(!fn)"')
00:06:30 v #7850 > >
00:06:30 v #7851 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:30 v #7852 > > │ ### try_join_all
00:06:30 v #7853 > >
00:06:30 v #7854 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:30 v #7855 > > nominal try_join_all t =
00:06:30 v #7856 > >     `(
00:06:30 v #7857 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:06:30 v #7858 > > Fable.Core.Emit(\"futures::future::TryJoinAll<$0>\")>]]\n#endif\ntype
00:06:30 v #7859 > > futures_future_TryJoinAll<'T> = class end"
00:06:30 v #7860 > >         $'' : $'futures_future_TryJoinAll<`t>'
00:06:30 v #7861 > >     )
00:06:30 v #7862 > >
00:06:30 v #7863 > > inl try_join_all forall t. (x : am'.vec (future_pin (resultm.result' t
00:06:30 v #7864 > > sm'.std_string))) : try_join_all (future_pin (resultm.result' t sm'.std_string))
00:06:30 v #7865 > > =
00:06:30 v #7866 > >     inl x = join x
00:06:30 v #7867 > >     !\($'"futures::future::try_join_all(!x)"')
00:06:30 v #7868 > >
00:06:30 v #7869 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:30 v #7870 > > │ ### fuse_tokio
00:06:30 v #7871 > >
00:06:30 v #7872 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:30 v #7873 > > nominal fuse_tokio t =
00:06:30 v #7874 > >     `(
00:06:30 v #7875 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:06:30 v #7876 > > Fable.Core.Emit(\"tokio::prelude::stream::Fuse<$0>\")>]]\n#endif\ntype
00:06:30 v #7877 > > tokio_prelude_stream_Fuse<'T> = class end"
00:06:30 v #7878 > >         $'' : $'tokio_prelude_stream_Fuse<`t>'
00:06:30 v #7879 > >     )
00:06:30 v #7880 > >
00:06:30 v #7881 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:30 v #7882 > > │ ### fuse'
00:06:30 v #7883 > >
00:06:30 v #7884 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:30 v #7885 > > type fuse' t = fuse_tokio t
00:06:30 v #7886 > >
00:06:30 v #7887 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:30 v #7888 > > │ ### future_fuse
00:06:30 v #7889 > >
00:06:30 v #7890 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:30 v #7891 > > inl future_fuse forall t. (x : future_pin t) : fuse' (future_pin t) =
00:06:30 v #7892 > >     !\($'"futures::future::FutureExt::fuse(!x)"')
00:06:30 v #7893 > >
00:06:30 v #7894 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:30 v #7895 > > │ ### join_all
00:06:30 v #7896 > >
00:06:30 v #7897 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:30 v #7898 > > nominal join_all t =
00:06:30 v #7899 > >     `(
00:06:30 v #7900 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:06:30 v #7901 > > Fable.Core.Emit(\"futures::future::JoinAll<$0>\")>]]\n#endif\ntype
00:06:30 v #7902 > > futures_future_JoinAll<'T> = class end"
00:06:30 v #7903 > >         $'' : $'futures_future_JoinAll<`t>'
00:06:30 v #7904 > >     )
00:06:30 v #7905 > >
00:06:30 v #7906 > > inl join_all forall t. (x : am'.vec (future_pin t)) : join_all (future_pin t) =
00:06:30 v #7907 > >     inl x = join x
00:06:30 v #7908 > >     !\($'"futures::future::join_all(!x)"')
00:06:30 v #7909 > >
00:06:30 v #7910 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:30 v #7911 > > │ ### join_all_send
00:06:30 v #7912 > >
00:06:30 v #7913 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:30 v #7914 > > inl join_all_send forall t. (x : am'.vec (future_pin_send t)) : join_all
00:06:30 v #7915 > > (future_pin_send t) =
00:06:30 v #7916 > >     inl x = join x
00:06:30 v #7917 > >     !\($'"futures::future::join_all(!x)"')
00:06:31 v #7918 > >
00:06:31 v #7919 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:31 v #7920 > > │ ### join_handle'
00:06:31 v #7921 > >
00:06:31 v #7922 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:31 v #7923 > > type join_handle' t = join_handle_tokio t
00:06:31 v #7924 > >
00:06:31 v #7925 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:31 v #7926 > > │ ### await_handle
00:06:31 v #7927 > >
00:06:31 v #7928 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:31 v #7929 > > inl await_handle forall t. (x : join_handle' t) : t =
00:06:31 v #7930 > >     !\($'"!x.await"')
00:06:31 v #7931 > >
00:06:31 v #7932 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:31 v #7933 > > │ ### await_all
00:06:31 v #7934 > >
00:06:31 v #7935 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:31 v #7936 > > inl await_all forall t. (x : join_all (future_pin t)) : am'.vec t =
00:06:31 v #7937 > >     !\($'"!x.await"')
00:06:31 v #7938 > >
00:06:31 v #7939 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:31 v #7940 > > │ ### await_all_send
00:06:31 v #7941 > >
00:06:31 v #7942 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:31 v #7943 > > inl await_all_send forall t. (x : join_all (future_pin_send t)) : am'.vec t =
00:06:31 v #7944 > >     !\($'"!x.await"')
00:06:31 v #7945 > >
00:06:31 v #7946 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:31 v #7947 > > │ ### try_await_all
00:06:31 v #7948 > >
00:06:31 v #7949 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:31 v #7950 > > inl try_await_all forall t. (x : try_join_all (future_pin (resultm.result' t
00:06:31 v #7951 > > sm'.std_string))) : resultm.result' (am'.vec t) sm'.std_string =
00:06:31 v #7952 > >     !\($'"!x.await"')
00:06:31 v #7953 > >
00:06:31 v #7954 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:31 v #7955 > > │ ### try_await_all_send
00:06:31 v #7956 > >
00:06:31 v #7957 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:31 v #7958 > > inl try_await_all_send forall t. (x : try_join_all (future_pin_send
00:06:31 v #7959 > > (resultm.result' t sm'.std_string))) : resultm.result' (am'.vec t)
00:06:31 v #7960 > > sm'.std_string =
00:06:31 v #7961 > >     !\($'"!x.await"')
00:06:32 v #7962 > >
00:06:32 v #7963 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:32 v #7964 > > │ ### await
00:06:32 v #7965 > >
00:06:32 v #7966 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:32 v #7967 > > inl await forall t. (x : future_pin t) : t =
00:06:32 v #7968 > >     !\($'"!x.await"')
00:06:32 v #7969 > >
00:06:32 v #7970 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:32 v #7971 > > │ ### await
00:06:32 v #7972 > >
00:06:32 v #7973 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:32 v #7974 > > inl await_send forall t. (x : future_pin_send t) : t =
00:06:32 v #7975 > >     !\($'"!x.await"')
00:06:32 v #7976 > >
00:06:32 v #7977 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:32 v #7978 > > │ ### into_iter
00:06:32 v #7979 > >
00:06:32 v #7980 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:32 v #7981 > > nominal into_iter t =
00:06:32 v #7982 > >     `(
00:06:32 v #7983 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:06:32 v #7984 > > Fable.Core.Emit(\"rayon::vec::IntoIter<$0>\")>]]\n#endif\ntype
00:06:32 v #7985 > > rayon_vec_IntoIter<'T> = class end"
00:06:32 v #7986 > >         $'' : $'rayon_vec_IntoIter<`t>'
00:06:32 v #7987 > >     )
00:06:32 v #7988 > >
00:06:32 v #7989 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:32 v #7990 > > │ ### into_par_iter
00:06:32 v #7991 > >
00:06:32 v #7992 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:32 v #7993 > > inl into_par_iter forall t. (x : am'.vec t) : into_iter t =
00:06:32 v #7994 > >     !\\(x, $'"rayon::iter::IntoParallelIterator::into_par_iter($0)"')
00:06:32 v #7995 > >
00:06:32 v #7996 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:32 v #7997 > > │ ### par_iter
00:06:32 v #7998 > >
00:06:32 v #7999 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:32 v #8000 > > inl par_iter forall t. (x : am'.vec t) : into_iter t =
00:06:32 v #8001 > >     !\($'"rayon::iter::IntoParallelIterator::par_iter(!x)"')
00:06:32 v #8002 > >
00:06:32 v #8003 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:32 v #8004 > > │ ### iter_map
00:06:32 v #8005 > >
00:06:32 v #8006 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:32 v #8007 > > nominal iter_map t u =
00:06:32 v #8008 > >     `(
00:06:32 v #8009 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:06:32 v #8010 > > Fable.Core.Emit(\"rayon::iter::Map<$0, _>\")>]]\n#endif\ntype rayon_iter_Map<'T>
00:06:32 v #8011 > > = class end"
00:06:32 v #8012 > >         $'' : $'rayon_iter_Map<`t>'
00:06:32 v #8013 > >     )
00:06:32 v #8014 > >
00:06:32 v #8015 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:32 v #8016 > > │ ### par_map
00:06:32 v #8017 > >
00:06:32 v #8018 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:32 v #8019 > > inl par_map forall t u. (fn : t -> u) (ar : into_iter t) : iter_map (into_iter
00:06:32 v #8020 > > t) u =
00:06:32 v #8021 > >     !\\((ar, fn), $'"rayon::iter::ParallelIterator::map($0, |x| $1(x))"')
00:06:33 v #8022 > >
00:06:33 v #8023 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:33 v #8024 > > │ ### par_collect
00:06:33 v #8025 > >
00:06:33 v #8026 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:33 v #8027 > > inl par_collect forall t u. (iter : iter_map (into_iter t) u) : am'.vec u =
00:06:33 v #8028 > >     !\\(iter, $'"rayon::iter::ParallelIterator::collect($0)"')
00:06:33 v #8029 > >
00:06:33 v #8030 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:33 v #8031 > > │ ### try_join_all_iter
00:06:33 v #8032 > >
00:06:33 v #8033 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:33 v #8034 > > inl try_join_all_iter forall t. (x : am'.vec (future_pin_send (resultm.result' t
00:06:33 v #8035 > > sm'.std_string))) : try_join_all (future_pin_send (resultm.result' t
00:06:33 v #8036 > > sm'.std_string)) =
00:06:33 v #8037 > >     inl x = join x
00:06:33 v #8038 > >     !\($'"futures::future::try_join_all(!x)"')
00:06:33 v #8039 > >
00:06:33 v #8040 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:33 v #8041 > > │ ### future_init
00:06:33 v #8042 > >
00:06:33 v #8043 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:33 v #8044 > > inl future_init forall t. (move : bool) (x : () -> t) : infer' t =
00:06:33 v #8045 > >     (!\($'"true; let __future_init = Box::pin(/*"') : bool) |> ignore
00:06:33 v #8046 > >     if move
00:06:33 v #8047 > >     then (!\($'"*/ async move { /*"') : bool) |> ignore
00:06:33 v #8048 > >     else (!\($'"*/ async { /*"') : bool) |> ignore
00:06:33 v #8049 > >     (!\($'"*/ //"') : bool) |> ignore
00:06:33 v #8050 > >
00:06:33 v #8051 > >     inl x' = x ()
00:06:33 v #8052 > >     // inl x' = join x'
00:06:33 v #8053 > >
00:06:33 v #8054 > >     inl depth = 1, 0
00:06:33 v #8055 > >
00:06:33 v #8056 > >     x' |> rust.fix_closure depth
00:06:33 v #8057 > >
00:06:33 v #8058 > >     !\($'"__future_init"')
00:06:33 v #8059 > >
00:06:33 v #8060 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:33 v #8061 > > │ ### new_future
00:06:33 v #8062 > >
00:06:33 v #8063 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:33 v #8064 > > inl new_future forall t. (x : () -> t) : future_pin t =
00:06:33 v #8065 > >     inl result = future_init false x
00:06:33 v #8066 > >     !\($'"!result"')
00:06:33 v #8067 > >
00:06:33 v #8068 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:33 v #8069 > > │ ### new_future_move
00:06:33 v #8070 > >
00:06:33 v #8071 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:33 v #8072 > > inl new_future_move forall t. (x : () -> t) : future_pin t =
00:06:33 v #8073 > >     inl result = future_init true x
00:06:33 v #8074 > >     !\($'"!result"')
00:06:33 v #8075 > >
00:06:33 v #8076 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:33 v #8077 > > │ ### new_future_send
00:06:33 v #8078 > >
00:06:33 v #8079 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:33 v #8080 > > inl new_future_send forall t. (x : () -> t) : future_pin_send t =
00:06:33 v #8081 > >     inl result = future_init false x
00:06:33 v #8082 > >     !\($'"!result"')
00:06:34 v #8083 > >
00:06:34 v #8084 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:34 v #8085 > > │ ### new_future_move_send
00:06:34 v #8086 > >
00:06:34 v #8087 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:34 v #8088 > > inl new_future_move_send forall t. (x : () -> t) : future_pin_send t =
00:06:34 v #8089 > >     inl result = future_init true x
00:06:34 v #8090 > >     !\($'"!result"')
00:06:34 v #8091 > >
00:06:34 v #8092 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:34 v #8093 > > │ ## fsharp
00:06:34 v #8094 > >
00:06:34 v #8095 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:34 v #8096 > > │ ### async
00:06:34 v #8097 > >
00:06:34 v #8098 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:34 v #8099 > > nominal async_python t =
00:06:34 v #8100 > >     `(
00:06:34 v #8101 > >         backend_switch `(()) `({}) {
00:06:34 v #8102 > >             Python = (fun () => global "import asyncio") : () -> ()
00:06:34 v #8103 > >         }
00:06:34 v #8104 > >         $'' : $'any'
00:06:34 v #8105 > >     )
00:06:34 v #8106 > > type async_switch t =
00:06:34 v #8107 > >     {
00:06:34 v #8108 > >         Fsharp : $'Async<`t>'
00:06:34 v #8109 > >         Python : async_python t
00:06:34 v #8110 > >     }
00:06:34 v #8111 > > nominal async t = $'backend_switch `(async_switch t)'
00:06:34 v #8112 > >
00:06:34 v #8113 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:34 v #8114 > > │ ### task
00:06:34 v #8115 > >
00:06:34 v #8116 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:34 v #8117 > > nominal task t =
00:06:34 v #8118 > >     `(
00:06:34 v #8119 > >         typecase t with
00:06:34 v #8120 > >         | () => $'' : $'System.Threading.Tasks.Task'
00:06:34 v #8121 > >         | _ => $'' : $'System.Threading.Tasks.Task<`t>'
00:06:34 v #8122 > >     )
00:06:34 v #8123 > >
00:06:34 v #8124 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:34 v #8125 > > │ ### new_async_unit
00:06:34 v #8126 > >
00:06:34 v #8127 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:34 v #8128 > > inl new_async_unit forall t. (fn : () -> ()) : async t =
00:06:34 v #8129 > >     join
00:06:34 v #8130 > >         run_target_args' fn function
00:06:34 v #8131 > >             | Fsharp _
00:06:34 v #8132 > >             // | Rust _
00:06:34 v #8133 > >             | TypeScript _
00:06:34 v #8134 > >             | Python _ => fun fn =>
00:06:34 v #8135 > >                     fun () =>
00:06:34 v #8136 > >                         $'async {'
00:06:34 v #8137 > >                         fun () =>
00:06:34 v #8138 > >                             fn ()
00:06:34 v #8139 > >                             real
00:06:34 v #8140 > >                                 typecase t with
00:06:34 v #8141 > >                                 | () => $'()' : ()
00:06:34 v #8142 > >                                 | _ => ()
00:06:34 v #8143 > >                         |> indent
00:06:34 v #8144 > >                         $'}' : ()
00:06:34 v #8145 > >                     |> base_let'
00:06:34 v #8146 > >             | Cuda _ => fun fn =>
00:06:34 v #8147 > >                 $'async def __new_async_unit__():'
00:06:34 v #8148 > >                 fun () =>
00:06:34 v #8149 > >                     fn ()
00:06:34 v #8150 > >                     $'""" new_async_unit'
00:06:34 v #8151 > >                 |> indent
00:06:34 v #8152 > >                 $'new_async_unit """'
00:06:34 v #8153 > >                 $'__new_async_unit__'
00:06:34 v #8154 > >             | _ => fun _ => null ()
00:06:34 v #8155 > >
00:06:34 v #8156 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:34 v #8157 > > │ ### new_async
00:06:34 v #8158 > >
00:06:34 v #8159 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:34 v #8160 > > inl new_async forall t. (fn : () -> t) : async t =
00:06:34 v #8161 > >     new_async_unit (fn >> ignore)
00:06:34 v #8162 > >
00:06:34 v #8163 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:34 v #8164 > > │ ### new_task
00:06:34 v #8165 > >
00:06:34 v #8166 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:34 v #8167 > > inl new_task forall t. (fn : () -> t) : task t =
00:06:34 v #8168 > >     run_target_args' fn function
00:06:34 v #8169 > >         | Fsharp _ => fun fn =>
00:06:34 v #8170 > >             inl result : optionm'.option' (task t) = optionm'.none' ()
00:06:34 v #8171 > >             $'let mutable _new_task_!result = !result '
00:06:34 v #8172 > >             $'task {'
00:06:34 v #8173 > >             fn () |> ignore
00:06:34 v #8174 > >             $'}'
00:06:34 v #8175 > >             $'|> fun x -> _new_task_!result <- Some x'
00:06:34 v #8176 > >             $'match _new_task_!result with Some x -> x | None -> failwith
00:06:34 v #8177 > > "async.new_task / _new_task_!result=None"'
00:06:34 v #8178 > >         | _ => fun _ => null ()
00:06:35 v #8179 > >
00:06:35 v #8180 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:35 v #8181 > > │ ### await_task
00:06:35 v #8182 > >
00:06:35 v #8183 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:35 v #8184 > > inl await_task forall t. (a : task t) : async t =
00:06:35 v #8185 > >     run_target function
00:06:35 v #8186 > >         | Fsharp _
00:06:35 v #8187 > >         // | Rust _
00:06:35 v #8188 > >         | TypeScript _
00:06:35 v #8189 > >         | Python _ => fun () =>
00:06:35 v #8190 > >             a |> $'Async.AwaitTask'
00:06:35 v #8191 > >         | _ => fun () => null ()
00:06:35 v #8192 > >
00:06:35 v #8193 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:35 v #8194 > > │ ### ignore
00:06:35 v #8195 > >
00:06:35 v #8196 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:35 v #8197 > > inl ignore forall t. (a : async t) : async () =
00:06:35 v #8198 > >     run_target function
00:06:35 v #8199 > >         | Fsharp _
00:06:35 v #8200 > >         // | Rust _
00:06:35 v #8201 > >         | TypeScript _
00:06:35 v #8202 > >         | Python _ => fun () =>
00:06:35 v #8203 > >             a |> $'Async.Ignore'
00:06:35 v #8204 > >         | _ => fun () => null ()
00:06:35 v #8205 > >
00:06:35 v #8206 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:35 v #8207 > > │ ### run_synchronously
00:06:35 v #8208 > >
00:06:35 v #8209 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:35 v #8210 > > inl run_synchronously forall t. (a : async t) : t =
00:06:35 v #8211 > >     run_target function
00:06:35 v #8212 > >         | Fsharp _
00:06:35 v #8213 > >         // | Rust _
00:06:35 v #8214 > >         | Python _ => fun () =>
00:06:35 v #8215 > >             a |> $'Async.RunSynchronously'
00:06:35 v #8216 > >         | Cuda (Native) => fun () =>
00:06:35 v #8217 > >             $'asyncio.run(!a())'
00:06:35 v #8218 > >         | _ => fun () => null ()
00:06:35 v #8219 > >
00:06:35 v #8220 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:35 v #8221 > > │ ### start
00:06:35 v #8222 > >
00:06:35 v #8223 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:35 v #8224 > > inl start (a : async ()) : () =
00:06:35 v #8225 > >     run_target function
00:06:35 v #8226 > >         | Fsharp _
00:06:35 v #8227 > >         | Rust _
00:06:35 v #8228 > >         | TypeScript _
00:06:35 v #8229 > >         | Python _ => fun () =>
00:06:35 v #8230 > >             a |> $'Async.Start'
00:06:35 v #8231 > >         | _ => fun () => null ()
00:06:35 v #8232 > >
00:06:35 v #8233 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:35 v #8234 > > │ ### start_child
00:06:35 v #8235 > >
00:06:35 v #8236 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:35 v #8237 > > inl start_child forall t. (a : async t) : async (async t) =
00:06:35 v #8238 > >     run_target function
00:06:35 v #8239 > >         | Fsharp _
00:06:35 v #8240 > >         | TypeScript _
00:06:35 v #8241 > >         | Python _ => fun () =>
00:06:35 v #8242 > >             a |> $'Async.StartChild'
00:06:35 v #8243 > >         | _ => fun () => null ()
00:06:35 v #8244 > >
00:06:35 v #8245 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:35 v #8246 > > │ ### start_child_timeout
00:06:35 v #8247 > >
00:06:35 v #8248 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:35 v #8249 > > inl start_child_timeout forall t. (timeout : i32) (a : async t) : async (async
00:06:35 v #8250 > > t) =
00:06:35 v #8251 > >     run_target function
00:06:35 v #8252 > >         | Fsharp _
00:06:35 v #8253 > >         | TypeScript _
00:06:35 v #8254 > >         | Python _ => fun () =>
00:06:35 v #8255 > >             $'Async.StartChild (!a, !timeout)'
00:06:35 v #8256 > >         | _ => fun () => null ()
00:06:35 v #8257 > >
00:06:35 v #8258 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:35 v #8259 > > │ ### start_immediate
00:06:35 v #8260 > >
00:06:35 v #8261 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:35 v #8262 > > inl start_immediate forall t. (a : async t) : () =
00:06:35 v #8263 > >     run_target function
00:06:35 v #8264 > >         | Fsharp _
00:06:35 v #8265 > >         // | Rust _
00:06:35 v #8266 > >         | TypeScript _
00:06:35 v #8267 > >         | Python _ => fun () =>
00:06:35 v #8268 > >             a |> $'Async.StartImmediate'
00:06:35 v #8269 > >         | _ => fun () => null ()
00:06:36 v #8270 > >
00:06:36 v #8271 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:36 v #8272 > > │ ### start_with_continuations
00:06:36 v #8273 > >
00:06:36 v #8274 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:36 v #8275 > > inl start_with_continuations forall t. (a : async t) : () =
00:06:36 v #8276 > >     run_target_args' a function
00:06:36 v #8277 > >         | Fsharp _
00:06:36 v #8278 > >         | Rust _
00:06:36 v #8279 > >         | TypeScript _
00:06:36 v #8280 > >         | Python _ => fun a =>
00:06:36 v #8281 > >             $'Async.StartWithContinuations (!a, ignore, ignore, ignore)'
00:06:36 v #8282 > >         | _ => fun _ => null ()
00:06:36 v #8283 > >
00:06:36 v #8284 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:36 v #8285 > > │ ### task_canceled_exception
00:06:36 v #8286 > >
00:06:36 v #8287 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:36 v #8288 > > nominal task_canceled_exception =
00:06:36 v #8289 > > $'System.Threading.Tasks.TaskCanceledException'
00:06:36 v #8290 > >
00:06:36 v #8291 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:36 v #8292 > > │ ### sleep
00:06:36 v #8293 > >
00:06:36 v #8294 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:36 v #8295 > > inl sleep (ms : i32) : async () =
00:06:36 v #8296 > >     run_target function
00:06:36 v #8297 > >         | Fsharp _
00:06:36 v #8298 > >         | Rust _
00:06:36 v #8299 > >         | TypeScript _
00:06:36 v #8300 > >         | Python _ => fun () =>
00:06:36 v #8301 > >             ms |> $'Async.Sleep'
00:06:36 v #8302 > >         | Cuda _ => fun () =>
00:06:36 v #8303 > >             $'asyncio.sleep(!ms / 1000)'
00:06:36 v #8304 > >         | _ => fun () => null ()
00:06:36 v #8305 > >
00:06:36 v #8306 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:36 v #8307 > > │ ### do
00:06:36 v #8308 > >
00:06:36 v #8309 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:36 v #8310 > > inl do (a : async ()) : () =
00:06:36 v #8311 > >     backend_switch {
00:06:36 v #8312 > >         Fsharp = fun () => $'do\! !a ' : ()
00:06:36 v #8313 > >         Python = fun () => $'await !a ' : ()
00:06:36 v #8314 > >     }
00:06:36 v #8315 > >
00:06:36 v #8316 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:36 v #8317 > > │ ### let'
00:06:36 v #8318 > >
00:06:36 v #8319 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:36 v #8320 > > inl let' forall t. (a : async t) : t =
00:06:36 v #8321 > >     $'let\! !a = !a '
00:06:36 v #8322 > >     $'!a '
00:06:37 v #8323 > >
00:06:37 v #8324 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:37 v #8325 > > │ ### return_await
00:06:37 v #8326 > >
00:06:37 v #8327 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:37 v #8328 > > inl return_await forall t. (a : async t) : () =
00:06:37 v #8329 > >     backend_switch {
00:06:37 v #8330 > >         Fsharp = fun () => $'return\! !a ' : ()
00:06:37 v #8331 > >         Python = fun () => $'asyncio.run(!a())' : ()
00:06:37 v #8332 > >     }
00:06:37 v #8333 > >
00:06:37 v #8334 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:37 v #8335 > > │ ### return_await'
00:06:37 v #8336 > >
00:06:37 v #8337 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:37 v #8338 > > inl return_await' forall t. (a : async t) : t =
00:06:37 v #8339 > >     backend_switch {
00:06:37 v #8340 > >         Fsharp = fun () => $'return\! !a ' : ()
00:06:37 v #8341 > >         Python = fun () => $'await !a()' : ()
00:06:37 v #8342 > >     }
00:06:37 v #8343 > >
00:06:37 v #8344 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:37 v #8345 > > │ ### map
00:06:37 v #8346 > >
00:06:37 v #8347 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:37 v #8348 > > inl map forall t u. (fn : t -> u) (a : async t) : async u =
00:06:37 v #8349 > >     fun () =>
00:06:37 v #8350 > >         inl x = a |> let'
00:06:37 v #8351 > >         fn x |> return
00:06:37 v #8352 > >     |> new_async_unit
00:06:37 v #8353 > >
00:06:37 v #8354 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:37 v #8355 > > │ ### catch'
00:06:37 v #8356 > >
00:06:37 v #8357 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:37 v #8358 > > inl catch' forall t e. (a : async t) : async (choice2' t e) =
00:06:37 v #8359 > >     run_target function
00:06:37 v #8360 > >         | Fsharp _
00:06:37 v #8361 > >         // | Rust _
00:06:37 v #8362 > >         | TypeScript _
00:06:37 v #8363 > >         | Python _ => fun () =>
00:06:37 v #8364 > >             a |> $'Async.Catch'
00:06:37 v #8365 > >         | _ => fun () => null ()
00:06:37 v #8366 > >
00:06:37 v #8367 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:37 v #8368 > > │ ### catch
00:06:37 v #8369 > >
00:06:37 v #8370 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:37 v #8371 > > inl catch forall t e. (a : async t) : async (result t e) =
00:06:37 v #8372 > >     a
00:06:37 v #8373 > >     |> catch'
00:06:37 v #8374 > >     |> map choice2_unbox
00:06:37 v #8375 > >     |> map function
00:06:37 v #8376 > >         | C1of2 result => Ok result
00:06:37 v #8377 > >         | C2of2 ex => Error ex
00:06:37 v #8378 > >
00:06:37 v #8379 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:37 v #8380 > > │ ### run_with_timeout_async
00:06:37 v #8381 > >
00:06:37 v #8382 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:37 v #8383 > > let run_with_timeout_async forall t. (timeout : i32) (fn : async t) : async
00:06:37 v #8384 > > (option t) =
00:06:37 v #8385 > >     run_target_args (fun () => timeout, fn) function
00:06:37 v #8386 > >         | Fsharp _
00:06:37 v #8387 > >         | Rust _
00:06:37 v #8388 > >         | TypeScript _
00:06:37 v #8389 > >         | Python _ => fun timeout, fn =>
00:06:37 v #8390 > >             fun () =>
00:06:37 v #8391 > >                 fn
00:06:37 v #8392 > >                 |> start_child_timeout timeout
00:06:37 v #8393 > >                 |> let'
00:06:37 v #8394 > >                 |> catch
00:06:37 v #8395 > >                 |> map function
00:06:37 v #8396 > >                     | Ok result => Some result
00:06:37 v #8397 > >                     | Error ex when ex |> sm'.format_debug |> sm'.contains
00:06:37 v #8398 > > "System.TimeoutException" =>
00:06:37 v #8399 > >                         trace Verbose
00:06:37 v #8400 > >                             fun () => "async.run_with_timeout_async"
00:06:37 v #8401 > >                             fun () => { timeout }
00:06:37 v #8402 > >                         None
00:06:37 v #8403 > >                     | Error (ex : exn) =>
00:06:37 v #8404 > >                         trace Critical
00:06:37 v #8405 > >                             fun () => "async.run_with_timeout_async**"
00:06:37 v #8406 > >                             fun () => { timeout ex = ex |> sm'.format_exception
00:06:37 v #8407 > > }
00:06:37 v #8408 > >                         None
00:06:37 v #8409 > >                 |> return_await
00:06:37 v #8410 > >             |> new_async_unit
00:06:37 v #8411 > >         | _ => fun _ => null ()
00:06:38 v #8412 > >
00:06:38 v #8413 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:38 v #8414 > > │ ### run_with_timeout
00:06:38 v #8415 > >
00:06:38 v #8416 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:38 v #8417 > > inl run_with_timeout timeout fn =
00:06:38 v #8418 > >     fn
00:06:38 v #8419 > >     |> run_with_timeout_async timeout
00:06:38 v #8420 > >     |> run_synchronously
00:06:38 v #8421 > >
00:06:38 v #8422 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:38 v #8423 > > │ ### cancellation_token
00:06:38 v #8424 > >
00:06:38 v #8425 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:38 v #8426 > > inl cancellation_token () : async threading.cancellation_token =
00:06:38 v #8427 > >     $'Async.CancellationToken'
00:06:38 v #8428 > >
00:06:38 v #8429 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:38 v #8430 > > inl default_cancellation_token () : threading.cancellation_token =
00:06:38 v #8431 > >     $'Async.DefaultCancellationToken'
00:06:38 v #8432 > >
00:06:38 v #8433 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:38 v #8434 > > │ ### merge_cancellation_token_with_default_async
00:06:38 v #8435 > >
00:06:38 v #8436 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:38 v #8437 > > inl merge_cancellation_token_with_default_async
00:06:38 v #8438 > >     (token : threading.cancellation_token)
00:06:38 v #8439 > >     : async threading.cancellation_token
00:06:38 v #8440 > >     =
00:06:38 v #8441 > >     fun () =>
00:06:38 v #8442 > >         run_target function
00:06:38 v #8443 > >             | Fsharp (Native) => fun () =>
00:06:38 v #8444 > >                     inl ct = cancellation_token () |> let'
00:06:38 v #8445 > >                     inl dct = default_cancellation_token ()
00:06:38 v #8446 > >                     inl cts = threading.create_linked_token_source ;[[ ct; dct;
00:06:38 v #8447 > > token ]]
00:06:38 v #8448 > >                     cts |> threading.cancellation_source_token |> return
00:06:38 v #8449 > >             | _ => fun () => (null () : threading.cancellation_token) |> return
00:06:38 v #8450 > >     |> new_async_unit
00:06:38 v #8451 > >
00:06:38 v #8452 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:38 v #8453 > > │ ### with_trace_level
00:06:38 v #8454 > >
00:06:38 v #8455 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:38 v #8456 > > inl with_trace_level forall t. level fn : _ t = new_async fun () =>
00:06:38 v #8457 > >     inl trace_state = get_trace_state_or_init None
00:06:38 v #8458 > >     inl old_trace_level = *trace_state.level
00:06:38 v #8459 > >     inl trace_level = trace_state.level
00:06:38 v #8460 > >     try_finally
00:06:38 v #8461 > >         fun () =>
00:06:38 v #8462 > >             trace_level <- level
00:06:38 v #8463 > >             fn |> return_await
00:06:38 v #8464 > >         fun () =>
00:06:38 v #8465 > >             trace_level <- old_trace_level
00:06:38 v #8466 > >
00:06:38 v #8467 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:38 v #8468 > > │ ### value_task
00:06:38 v #8469 > >
00:06:38 v #8470 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:38 v #8471 > > nominal value_task = $'System.Threading.Tasks.ValueTask'
00:06:39 v #8472 > >
00:06:39 v #8473 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:39 v #8474 > > │ ### value_task_as_task
00:06:39 v #8475 > >
00:06:39 v #8476 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:39 v #8477 > > inl value_task_as_task (task : value_task) : task () =
00:06:39 v #8478 > >     run_target function
00:06:39 v #8479 > >         | Fsharp (Native) => fun () => $'!task.AsTask' ()
00:06:39 v #8480 > >         | _ => fun () => null ()
00:06:39 v #8481 > >
00:06:39 v #8482 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:39 v #8483 > > │ ### await_value_task_unit
00:06:39 v #8484 > >
00:06:39 v #8485 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:39 v #8486 > > inl await_value_task_unit (task : value_task) : async () =
00:06:39 v #8487 > >     task |> value_task_as_task |> await_task
00:06:39 v #8488 > >
00:06:39 v #8489 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:39 v #8490 > > │ ## main
00:06:39 v #8491 > >
00:06:39 v #8492 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:39 v #8493 > > inl main () =
00:06:39 v #8494 > >     $'let merge_cancellation_token_with_default_async x =
00:06:39 v #8495 > > !merge_cancellation_token_with_default_async x' : ()
00:06:40 v #8496 > 00:00:16 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 33617 }
00:06:40 v #8497 > 00:00:16 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/async.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/async.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:06:40 v #8498 > 00:00:17 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/async.dib.ipynb to html
00:06:40 v #8499 > 00:00:17 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:06:40 v #8500 > 00:00:17 v #7 !   validate(nb)
00:06:41 v #8501 > 00:00:18 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:06:41 v #8502 > 00:00:18 v #9 !   return _pygments_highlight(
00:06:41 v #8503 > 00:00:18 v #10 ! [NbConvertApp] Writing 422266 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/async.dib.html
00:06:41 v #8504 > 00:00:18 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 894 }
00:06:41 v #8505 > 00:00:18 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 894 }
00:06:41 v #8506 > 00:00:18 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/async.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/async.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:06:42 v #8507 > 00:00:18 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:06:42 v #8508 > 00:00:18 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:06:42 v #8509 > 00:00:18 d #16 spiral.run / dib / { exit_code = 0; result_length = 34570 }
00:06:42 d #8510 runtime.execute_with_options_async / { exit_code = 0; output_length = 38852 }
00:06:42 d #11 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path async.dib --retries 3
00:06:42 d #8511 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path runtime.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path runtime.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:06:42 v #8512 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "runtime.dib", "--retries", "3"])) }
00:06:42 v #8513 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/runtime.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/runtime.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/runtime.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/runtime.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:06:43 v #8514 > >
00:06:43 v #8515 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:43 v #8516 > > │ # runtime
00:06:45 v #8517 > >
00:06:45 v #8518 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:45 v #8519 > > open rust
00:06:45 v #8520 > > open rust_operators
00:06:45 v #8521 > > open sm'_operators
00:06:46 v #8522 > >
00:06:46 v #8523 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:46 v #8524 > > //// test
00:06:46 v #8525 > >
00:06:46 v #8526 > > open testing
00:06:46 v #8527 > > open file_system_operators
00:06:46 v #8528 > >
00:06:46 v #8529 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:46 v #8530 > > │ ## runtime
00:06:46 v #8531 > >
00:06:46 v #8532 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:46 v #8533 > > │ ### split_args
00:06:46 v #8534 > >
00:06:46 v #8535 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:46 v #8536 > > let split_args (args : string) : result (array_base string) string =
00:06:46 v #8537 > >     open parsing
00:06:46 v #8538 > >     inl esc = [[ '\\'; '`' ]]
00:06:46 v #8539 > >     inl quotes = [[ '"' ]]
00:06:46 v #8540 > >     inl special = esc ++ quotes
00:06:46 v #8541 > >     inl p_esc_char c =
00:06:46 v #8542 > >         p_char c >>. any_char () |>> fun c' => $c +. $c'
00:06:46 v #8543 > >     inl p_word = special |> none_of |>> sm'.obj_to_string
00:06:46 v #8544 > >     inl p_plain = special ++ [[ ' ' ]] |> none_of |> many1_chars
00:06:46 v #8545 > >     inl p_text = p_word |> many1_strings
00:06:46 v #8546 > >     inl p_esc = esc |> listm.map p_esc_char |> choice
00:06:46 v #8547 > >     inl p_quoted = (p_word <|> p_esc) |> many |>> sm'.concat_list ""
00:06:46 v #8548 > >     inl p_quoted_all = p_quoted |> between (p_char '"') (p_char '"')
00:06:46 v #8549 > >     inl p_esc_root = p_esc >>% "" >>. (p_word |> many) |>> sm'.concat_list ""
00:06:46 v #8550 > >     inl p_content = p_plain <|> p_quoted_all <|> p_esc_root
00:06:46 v #8551 > >     inl p_args = spaces1 () |> sep_by p_content
00:06:46 v #8552 > >     args
00:06:46 v #8553 > >     |> parse p_args
00:06:46 v #8554 > >     |> resultm.map (fst >> listm'.box >> listm'.to_array')
00:06:47 v #8555 > >
00:06:47 v #8556 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:47 v #8557 > > //// test
00:06:47 v #8558 > > ///! fsharp
00:06:47 v #8559 > > ///! cuda
00:06:47 v #8560 > > ///! rust
00:06:47 v #8561 > > ///! typescript
00:06:47 v #8562 > > ///! python
00:06:47 v #8563 > >
00:06:47 v #8564 > > [[
00:06:47 v #8565 > >     "a b c",
00:06:47 v #8566 > >     ;[[ "a"; "b"; "c" ]]
00:06:47 v #8567 > >
00:06:47 v #8568 > >     "e f \"g h\" i",
00:06:47 v #8569 > >     ;[[ "e"; "f"; "g h"; "i" ]]
00:06:47 v #8570 > >
00:06:47 v #8571 > >     "\"j k\" \"l\" \"m\"",
00:06:47 v #8572 > >     ;[[ "j k"; "l"; "m" ]]
00:06:47 v #8573 > >
00:06:47 v #8574 > >     "s -t \"u \`\"v\`\" w\"",
00:06:47 v #8575 > >     ;[[ "s"; "-t"; "u \`\"v\`\" w" ]]
00:06:47 v #8576 > >
00:06:47 v #8577 > >     "n -o \"p \\\"q\\\" r\"",
00:06:47 v #8578 > >     ;[[ "n"; "-o"; "p \\\"q\\\" r" ]]
00:06:47 v #8579 > >
00:06:47 v #8580 > >     "r -s \"t \\\"u\\\"\"",
00:06:47 v #8581 > >     ;[[ "r"; "-s"; "t \\\"u\\\"" ]]
00:06:47 v #8582 > >
00:06:47 v #8583 > >     $'"x -y \\\"$z -a \'(b=\\\\\\"c-id=)[[a-fA-F0-9]]{8}\', { \`$_[[1]] + \`$d++
00:06:47 v #8584 > > }\\\""',
00:06:47 v #8585 > >     ;[[ "x"; "-y"; "$z -a '(b=\\\"c-id=)[[a-fA-F0-9]]{8}', { `$_[[1]] + `$d++ }"
00:06:47 v #8586 > > ]]
00:06:47 v #8587 > >
00:06:47 v #8588 > >     "e -f \"$g -h '(i=`\"j-id=)[[a-fA-F0-9]]{8}', { `$_[[1]] + `$k++ }\"",
00:06:47 v #8589 > >     ;[[ "e"; "-f"; "$g -h '(i=`\"j-id=)[[a-fA-F0-9]]{8}', { `$_[[1]] + `$k++ }"
00:06:47 v #8590 > > ]]
00:06:47 v #8591 > >
00:06:47 v #8592 > >     $'"--l \\\\\\"\'\'\' m \'\'\'\\\\\\" "',
00:06:47 v #8593 > >     ;[[ "--l"; "''' m '''" ]]
00:06:47 v #8594 > >
00:06:47 v #8595 > >     $'"n --o --p q --r \\\"s:/t u/v.w\\\" --x \\\"y:/z.a\\\" --b c.d
00:06:47 v #8596 > > \\\"\\\\e{f-g}\\\" h.i \\\"j (k)\\\""',
00:06:47 v #8597 > >     ;[[ "n"; "--o"; "--p"; "q"; "--r"; "s:/t u/v.w"; "--x"; "y:/z.a"; "--b";
00:06:47 v #8598 > > "c.d"; "\\e{f-g}"; "h.i"; "j (k)" ]]
00:06:47 v #8599 > >
00:06:47 v #8600 > >     $'"l \\\"m n:\\\\o.p\\\""',
00:06:47 v #8601 > >     ;[[ "l"; "m n:\\o.p" ]]
00:06:47 v #8602 > > ]]
00:06:47 v #8603 > > |> _assert_fn split_args
00:07:01 v #8604 > >
00:07:01 v #8605 > > ── [ 14.46s - return value ] ───────────────────────────────────────────────────
00:07:01 v #8606 > > │
00:07:01 v #8607 > > │ .py output (Cuda):
00:07:01 v #8608 > > │
00:07:01 v #8609 > > │ 00:00:00 v #1 _assert_fn / { input = a b c }
00:07:01 v #8610 > > │ __assert_eq' / actual: ['a' 'b' 'c'] / expected: ['a' 'b'
00:07:01 v #8611 > > 'c']
00:07:01 v #8612 > > │
00:07:01 v #8613 > > │ 00:00:00 v #2 _assert_fn / { input = e f "g h" i }
00:07:01 v #8614 > > │ __assert_eq' / actual: ['e' 'f' 'g h' 'i'] / expected: ['e'
00:07:01 v #8615 > > 'f' 'g h' 'i']
00:07:01 v #8616 > > │
00:07:01 v #8617 > > │ 00:00:00 v #3 _assert_fn / { input = "j k" "l" "m" }
00:07:01 v #8618 > > │ __assert_eq' / actual: ['j k' 'l' 'm'] / expected: ['j k' 'l'
00:07:01 v #8619 > > 'm']
00:07:01 v #8620 > > │
00:07:01 v #8621 > > │ 00:00:00 v #4 _assert_fn / { input = s -t "u `"v`" w" }
00:07:01 v #8622 > > │ __assert_eq' / actual: ['s' '-t' 'u `"v`" w'] / expected:
00:07:01 v #8623 > > ['s' '-t' 'u `"v`" w']
00:07:01 v #8624 > > │
00:07:01 v #8625 > > │ 00:00:00 v #5 _assert_fn / { input = n -o "p \"q\" r" }
00:07:01 v #8626 > > │ __assert_eq' / actual: ['n' '-o' 'p \\"q\\" r'] / expected:
00:07:01 v #8627 > > ['n' '-o' 'p \\"q\\" r']
00:07:01 v #8628 > > │
00:07:01 v #8629 > > │ 00:00:00 v #6 _assert_fn / { input = r -s "t \"u\"" }
00:07:01 v #8630 > > │ __assert_eq' / actual: ['r' '-s' 't \\"u\\"'] / expected:
00:07:01 v #8631 > > ['r' '-s' 't \\"u\\"']
00:07:01 v #8632 > > │
00:07:01 v #8633 > > │ 00:00:00 v #7 _assert_fn / { input = x -y "$z -a
00:07:01 v #8634 > > '(b=\"c-id=)[a-fA-F0-9]{8}', { `$_[1] + `$d++ }" }
00:07:01 v #8635 > > │ __assert_eq' / actual: ['x' '-y' '$z -a
00:07:01 v #8636 > > \'(b=\\"c-id=)[a-fA-F0-9]{8}\', { `$_[1] + `$d++ }'] / expected: ['x' '-y' '$z
00:07:01 v #8637 > > -a \'(b=\\"c-id=)[a-fA-F0-9]{8}\', { `$_[1] + `$d++ }']
00:07:01 v #8638 > > │
00:07:01 v #8639 > > │ 00:00:00 v #8 _assert_fn / { input = e -f "$g -h
00:07:01 v #8640 > > '(i=`"j-id=)[a-fA-F0-9]{8}', { `$_[1] + `$k++ }" }
00:07:01 v #8641 > > │ __assert_eq' / actual: ['e' '-f' '$g -h
00:07:01 v #8642 > > \'(i=`"j-id=)[a-fA-F0-9]{8}\', { `$_[1] + `$k++ }'] / expected: ['e' '-f' '$g -h
00:07:01 v #8643 > > \'(i=`"j-id=)[a-fA-F0-9]{8}\', { `$_[1] + `$k++ }']
00:07:01 v #8644 > > │
00:07:01 v #8645 > > │ 00:00:00 v #9 _assert_fn / { input = --l \"''' m '''\"
00:07:01 v #8646 > > }
00:07:01 v #8647 > > │ __assert_eq' / a...t_fn / { input = n -o "p \"q\" r" }
00:07:01 v #8648 > > │ __assert_eq' / actual: ['n', '-o', 'p \\"q\\" r'] / expected:
00:07:01 v #8649 > > ['n', '-o', 'p \\"q\\" r']
00:07:01 v #8650 > > │
00:07:01 v #8651 > > │ 00:00:00 v #6 _assert_fn / { input = r -s "t \"u\"" }
00:07:01 v #8652 > > │ __assert_eq' / actual: ['r', '-s', 't \\"u\\"'] / expected:
00:07:01 v #8653 > > ['r', '-s', 't \\"u\\"']
00:07:01 v #8654 > > │
00:07:01 v #8655 > > │ 00:00:00 v #7 _assert_fn / { input = x -y "$z -a
00:07:01 v #8656 > > '(b=\"c-id=)[a-fA-F0-9]{8}', { `$_[1] + `$d++ }" }
00:07:01 v #8657 > > │ __assert_eq' / actual: ['x', '-y', '$z -a
00:07:01 v #8658 > > \'(b=\\"c-id=)[a-fA-F0-9]{8}\', { `$_[1] + `$d++ }'] / expected: ['x', '-y', '$z
00:07:01 v #8659 > > -a \'(b=\\"c-id=)[a-fA-F0-9]{8}\', { `$_[1] + `$d++ }']
00:07:01 v #8660 > > │
00:07:01 v #8661 > > │ 00:00:00 v #8 _assert_fn / { input = e -f "$g -h
00:07:01 v #8662 > > '(i=`"j-id=)[a-fA-F0-9]{8}', { `$_[1] + `$k++ }" }
00:07:01 v #8663 > > │ __assert_eq' / actual: ['e', '-f', '$g -h
00:07:01 v #8664 > > \'(i=`"j-id=)[a-fA-F0-9]{8}\', { `$_[1] + `$k++ }'] / expected: ['e', '-f', '$g
00:07:01 v #8665 > > -h \'(i=`"j-id=)[a-fA-F0-9]{8}\', { `$_[1] + `$k++ }']
00:07:01 v #8666 > > │
00:07:01 v #8667 > > │ 00:00:00 v #9 _assert_fn / { input = --l \"''' m '''\"
00:07:01 v #8668 > > }
00:07:01 v #8669 > > │ __assert_eq' / actual: ['--l', "''' m '''"] / expected:
00:07:01 v #8670 > > ['--l', "''' m '''"]
00:07:01 v #8671 > > │
00:07:01 v #8672 > > │ 00:00:00 v #10 _assert_fn / { input = n --o --p q --r
00:07:01 v #8673 > > "s:/t u/v.w" --x "y:/z.a" --b c.d "\e{f-g}" h.i "j (k)" }
00:07:01 v #8674 > > │ __assert_eq' / actual: ['n', '--o', '--p', 'q', '--r', 's:/t
00:07:01 v #8675 > > u/v.w', '--x', 'y:/z.a', '--b', 'c.d', '\\e{f-g}', 'h.i', 'j (k)'] / expected:
00:07:01 v #8676 > > ['n', '--o', '--p', 'q', '--r', 's:/t u/v.w', '--x', 'y:/z.a', '--b', 'c.d',
00:07:01 v #8677 > > '\\e{f-g}', 'h.i', 'j (k)']
00:07:01 v #8678 > > │
00:07:01 v #8679 > > │ 00:00:00 v #11 _assert_fn / { input = l "m n:\o.p" }
00:07:01 v #8680 > > │ __assert_eq' / actual: ['l', 'm n:\\o.p'] / expected: ['l',
00:07:01 v #8681 > > 'm n:\\o.p']
00:07:01 v #8682 > > │
00:07:01 v #8683 > > │
00:07:01 v #8684 > > │
00:07:01 v #8685 > >
00:07:01 v #8686 > > ── [ 14.47s - stdout ] ─────────────────────────────────────────────────────────
00:07:01 v #8687 > > │ .fsx output:
00:07:01 v #8688 > > │
00:07:01 v #8689 > > │ 00:00:00 v #1 _assert_fn / { input = a b c }
00:07:01 v #8690 > > │ __assert_eq' / actual: "[|"a"; "b"; "c"|]" / expected:
00:07:01 v #8691 > > "[|"a"; "b"; "c"|]"
00:07:01 v #8692 > > │
00:07:01 v #8693 > > │ 00:00:00 v #2 _assert_fn / { input = e f "g h" i }
00:07:01 v #8694 > > │ __assert_eq' / actual: "[|"e"; "f"; "g h"; "i"|]" / expected:
00:07:01 v #8695 > > "[|"e"; "f"; "g h"; "i"|]"
00:07:01 v #8696 > > │
00:07:01 v #8697 > > │ 00:00:00 v #3 _assert_fn / { input = "j k" "l" "m" }
00:07:01 v #8698 > > │ __assert_eq' / actual: "[|"j k"; "l"; "m"|]" / expected:
00:07:01 v #8699 > > "[|"j k"; "l"; "m"|]"
00:07:01 v #8700 > > │
00:07:01 v #8701 > > │ 00:00:00 v #4 _assert_fn / { input = s -t "u `"v`" w" }
00:07:01 v #8702 > > │ __assert_eq' / actual: "[|"s"; "-t"; "u `"v`" w"|]"
00:07:01 v #8703 > > expected: "[|"s"; "-t"; "u `"v`" w"|]"
00:07:01 v #8704 > > │
00:07:01 v #8705 > > │ 00:00:00 v #5 _assert_fn / { input = n -o "p \"q\" r" }
00:07:01 v #8706 > > │ __assert_eq' / actual: "[|"n"; "-o"; "p \"q\" r"|]"
00:07:01 v #8707 > > expected: "[|"n"; "-o"; "p \"q\" r"|]"
00:07:01 v #8708 > > │
00:07:01 v #8709 > > │ 00:00:00 v #6 _assert_fn / { input = r -s "t \"u\"" }
00:07:01 v #8710 > > │ __assert_eq' / actual: "[|"r"; "-s"; "t \"u\""|]" / expected:
00:07:01 v #8711 > > "[|"r"; "-s"; "t \"u\""|]"
00:07:01 v #8712 > > │
00:07:01 v #8713 > > │ 00:00:00 v #7 _assert_fn / { input = x -y "$z -a
00:07:01 v #8714 > > '(b=\"c-id=)[a-fA-F0-9]{8}', { `$_[1] + `$d++ }" }
00:07:01 v #8715 > > │ __assert_eq' / actual: "[|"x"; "-y"; "$z -a
00:07:01 v #8716 > > '(b=\"c-id=)[a-fA-F0-9]{8}', { `$_[1] + `$d++ }"|]" / expected: "[|"x"; "-y";
00:07:01 v #8717 > > "$z -a '(b=\"c-id=)[a-fA-F0-9]{8}', { `$_[1] + `$d++ }"|]"
00:07:01 v #8718 > > │
00:07:01 v #8719 > > │ 00:00:00 v #8 _assert_fn / { input = e -f "$g -h
00:07:01 v #8720 > > '(i=`"j-id=)[a-fA-F0-9]{8}', { `$_[1] + `$k++ }" }
00:07:01 v #8721 > > │ __assert_eq' / actual: "[|"e"; "-f"; "$g -h
00:07:01 v #8722 > > '(i=`"j-id=)[a-fA-F0-9]{8}', { `$_[1] + `$k++ }"|]" / expected: "[|"e"; "-f";
00:07:01 v #8723 > > "$g -h '(i=`"j-id=)[a-fA-F0-9]{8}', { `$_[1] + `$k++ }"|]"
00:07:01 v #8724 > > │
00:07:01 v #8725 > > │ 00:00:00 v #9 _assert_fn / { input = --l \"''' m '''\"
00:07:01 v #8726 > > }
00:07:01 v #8727 > > │ __assert_eq' / actual: "[|"--l"; "''' m '''"|]" / expected:
00:07:01 v #8728 > > "[|"--l"; "''' m '''"|]"
00:07:01 v #8729 > > │
00:07:01 v #8730 > > │ 00:00:00 v #10 _assert_fn / { input = n --o --p q --r
00:07:01 v #8731 > > "s:/t u/v.w" --x "y:/z.a" --b c.d "\e{f-g}" h.i "j (k)" }
00:07:01 v #8732 > > │ __assert_eq' / actual: "[|"n"; "--o"; "--p"; "q"; "--r";
00:07:01 v #8733 > > "s:/t u/v.w"; "--x"; "y:/z.a"; "--b"; "c.d";
00:07:01 v #8734 > > │   "\e{f-g}"; "h.i"; "j (k)"|]" / expected: "[|"n"; "--o";
00:07:01 v #8735 > > "--p"; "q"; "--r"; "s:/t u/v.w"; "--x"; "y:/z.a"; "--b"; "c.d";
00:07:01 v #8736 > > │   "\e{f-g}"; "h.i"; "j (k)"|]"
00:07:01 v #8737 > > │
00:07:01 v #8738 > > │ 00:00:00 v #11 _assert_fn / { input = l "m n:\o.p" }
00:07:01 v #8739 > > │ __assert_eq' / actual: "[|"l"; "m n:\o.p"|]" / expected:
00:07:01 v #8740 > > "[|"l"; "m n:\o.p"|]"
00:07:01 v #8741 > > │
00:07:01 v #8742 > >
00:07:01 v #8743 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:01 v #8744 > > │ ### split_command
00:07:01 v #8745 > >
00:07:01 v #8746 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:01 v #8747 > > let split_command (command : string) : result (string * option string) string =
00:07:01 v #8748 > >     open parsing
00:07:01 v #8749 > >     inl quotes = [[ '"'; '\'' ]]
00:07:01 v #8750 > >     inl p_quoted_char = quotes |> listm.map p_char |> choice
00:07:01 v #8751 > >     inl normalize = function '\\' => '/' | c => c
00:07:01 v #8752 > >     inl p_quoted = quotes |> none_of |>> normalize |> many_chars |> between
00:07:01 v #8753 > > p_quoted_char p_quoted_char
00:07:01 v #8754 > >     inl p_unquoted = quotes ++ [[ ' ' ]] |> none_of |>> normalize |> many1_chars
00:07:01 v #8755 > >     inl p_path = p_quoted <|> p_unquoted <|> eof () >>% "" .>> spaces ()
00:07:01 v #8756 > >     inl p_args = p_char ' ' |> opt >>. (any_char () |> many1_chars)
00:07:01 v #8757 > >     inl p_command = p_path .>>. (p_args |> opt)
00:07:01 v #8758 > >     command
00:07:01 v #8759 > >     |> parse p_command
00:07:01 v #8760 > >     |> resultm.map fst
00:07:01 v #8761 > >
00:07:01 v #8762 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:01 v #8763 > > //// test
00:07:01 v #8764 > > ///! fsharp
00:07:01 v #8765 > > ///! cuda
00:07:01 v #8766 > > ///! rust
00:07:01 v #8767 > > ///! typescript
00:07:01 v #8768 > > ///! python
00:07:01 v #8769 > >
00:07:01 v #8770 > > [[
00:07:01 v #8771 > >     "",
00:07:01 v #8772 > >     ("", None)
00:07:01 v #8773 > >
00:07:01 v #8774 > >     "/a/b/c",
00:07:01 v #8775 > >     ("/a/b/c", None)
00:07:01 v #8776 > >
00:07:01 v #8777 > >     "d e.f",
00:07:01 v #8778 > >     ("d", Some "e.f")
00:07:01 v #8779 > >
00:07:01 v #8780 > >     "..\\..\\g.h i.j k.l",
00:07:01 v #8781 > >     ("../../g.h", Some "i.j k.l")
00:07:01 v #8782 > >
00:07:01 v #8783 > >     "m:\\n\\o.p \"q.r s.t\"",
00:07:01 v #8784 > >     ("m:/n/o.p", Some "\"q.r s.t\"")
00:07:01 v #8785 > >
00:07:01 v #8786 > >     "\"..\\..\\u v\\w.x\" \"y z.a\" b.c",
00:07:01 v #8787 > >     ("../../u v/w.x", Some "\"y z.a\" b.c")
00:07:01 v #8788 > >
00:07:01 v #8789 > >     "\"..\\..\\d e.f\" -g \\\\\"h i\\\\\"",
00:07:01 v #8790 > >     ("../../d e.f", Some "-g \\\\\"h i\\\\\"")
00:07:01 v #8791 > >
00:07:01 v #8792 > >     "..\\..\\j k.l -m \\\\\"n o\\\\\"",
00:07:01 v #8793 > >     ("../../j", Some "k.l -m \\\\\"n o\\\\\"")
00:07:01 v #8794 > > ]]
00:07:01 v #8795 > > |> _assert_fn split_command
00:07:15 v #8796 > >
00:07:15 v #8797 > > ── [ 13.60s - return value ] ───────────────────────────────────────────────────
00:07:15 v #8798 > > │
00:07:15 v #8799 > > │ .py output (Cuda):
00:07:15 v #8800 > > │
00:07:15 v #8801 > > │ 00:00:00 v #1 _assert_fn / { input =  }
00:07:15 v #8802 > > │ __assert_eq' / actual: , US1_1() / expected: , US1_1()
00:07:15 v #8803 > > │
00:07:15 v #8804 > > │ 00:00:00 v #2 _assert_fn / { input = /a/b/c }
00:07:15 v #8805 > > │ __assert_eq' / actual: /a/b/c, US1_1() / expected: /a/b/c,
00:07:15 v #8806 > > US1_1()
00:07:15 v #8807 > > │
00:07:15 v #8808 > > │ 00:00:00 v #3 _assert_fn / { input = d e.f }
00:07:15 v #8809 > > │ __assert_eq' / actual: d, US1_0(v0='e.f') / expected: d,
00:07:15 v #8810 > > US1_0(v0='e.f')
00:07:15 v #8811 > > │
00:07:15 v #8812 > > │ 00:00:00 v #4 _assert_fn / { input = ..\..\g.h i.j k.l }
00:07:15 v #8813 > > │ __assert_eq' / actual: ../../g.h, US1_0(v0='i.j k.l')
00:07:15 v #8814 > > expected: ../../g.h, US1_0(v0='i.j k.l')
00:07:15 v #8815 > > │
00:07:15 v #8816 > > │ 00:00:00 v #5 _assert_fn / { input = m:\n\o.p "q.r s.t"
00:07:15 v #8817 > > }
00:07:15 v #8818 > > │ __assert_eq' / actual: m:/n/o.p, US1_0(v0='"q.r s.t"')
00:07:15 v #8819 > > expected: m:/n/o.p, US1_0(v0='"q.r s.t"')
00:07:15 v #8820 > > │
00:07:15 v #8821 > > │ 00:00:00 v #6 _assert_fn / { input = "..\..\u v\w.x" "y
00:07:15 v #8822 > > z.a" b.c }
00:07:15 v #8823 > > │ __assert_eq' / actual: ../../u v/w.x, US1_0(v0='"y z.a" b.c')
00:07:15 v #8824 > > / expected: ../../u v/w.x, US1_0(v0='"y z.a" b.c')
00:07:15 v #8825 > > │
00:07:15 v #8826 > > │ 00:00:00 v #7 _assert_fn / { input = "..\..\d e.f" -g
00:07:15 v #8827 > > \\"h i\\" }
00:07:15 v #8828 > > │ __assert_eq' / actual: ../../d e.f, US1_0(v0='-g \\\\"h
00:07:15 v #8829 > > i\\\\"') / expected: ../../d e.f, US1_0(v0='-g \\\\"h i\\\\"')
00:07:15 v #8830 > > │
00:07:15 v #8831 > > │ 00:00:00 v #8 _assert_fn / { input = ..\..\j k.l -m \\"n
00:07:15 v #8832 > > o\\" }
00:07:15 v #8833 > > │ __assert_eq' / actual: ../../j, US1_0(v0='k.l -m \\\\"n
00:07:15 v #8834 > > o\\\\"') / expected: ../../j, US1_0(v0='k.l -m \\\\"n o\\\\"')
00:07:15 v #8835 > > │
00:07:15 v #8836 > > │
00:07:15 v #8837 > > │ .rs output:
00:07:15 v #8838 > > │
00:07:15 v #8839 > > │ 00:00:00 v #1 _assert_fn / { input =  }
00:07:15 v #8840 > > │ __assert_eq' / actual: ", US1_1" / expected: ", US1_1"
00:07:15 v #8841 > > │
00:07:15 v #8842 > > │ 00:00:00 v #2 _assert_fn / { input = /a/b/c }
00:07:15 v #8843 > > │ __assert_eq' / actual: "/a/b/c, US1_1...eq' / actual: ../../d
00:07:15 v #8844 > > e.f, US1_0 (-g \\"h i\\") / expected: ../../d e.f, US1_0 (-g \\"h i\\")
00:07:15 v #8845 > > │
00:07:15 v #8846 > > │ 00:00:00 v #8 _assert_fn / { input = ..\..\j k.l -m \\"n
00:07:15 v #8847 > > o\\" }
00:07:15 v #8848 > > │ __assert_eq' / actual: ../../j, US1_0 (k.l -m \\"n o\\")
00:07:15 v #8849 > > expected: ../../j, US1_0 (k.l -m \\"n o\\")
00:07:15 v #8850 > > │
00:07:15 v #8851 > > │
00:07:15 v #8852 > > │ .py output:
00:07:15 v #8853 > > │
00:07:15 v #8854 > > │ 00:00:00 v #1 _assert_fn / { input =  }
00:07:15 v #8855 > > │ __assert_eq' / actual: , US1_1 / expected: , US1_1
00:07:15 v #8856 > > │
00:07:15 v #8857 > > │ 00:00:00 v #2 _assert_fn / { input = /a/b/c }
00:07:15 v #8858 > > │ __assert_eq' / actual: /a/b/c, US1_1 / expected: /a/b/c,
00:07:15 v #8859 > > US1_1
00:07:15 v #8860 > > │
00:07:15 v #8861 > > │ 00:00:00 v #3 _assert_fn / { input = d e.f }
00:07:15 v #8862 > > │ __assert_eq' / actual: d, US1_0 "e.f" / expected: d, US1_0
00:07:15 v #8863 > > "e.f"
00:07:15 v #8864 > > │
00:07:15 v #8865 > > │ 00:00:00 v #4 _assert_fn / { input = ..\..\g.h i.j k.l }
00:07:15 v #8866 > > │ __assert_eq' / actual: ../../g.h, US1_0 ("i.j k.l")
00:07:15 v #8867 > > expected: ../../g.h, US1_0 ("i.j k.l")
00:07:15 v #8868 > > │
00:07:15 v #8869 > > │ 00:00:00 v #5 _assert_fn / { input = m:\n\o.p "q.r s.t"
00:07:15 v #8870 > > }
00:07:15 v #8871 > > │ __assert_eq' / actual: m:/n/o.p, US1_0 (""q.r s.t"")
00:07:15 v #8872 > > expected: m:/n/o.p, US1_0 (""q.r s.t"")
00:07:15 v #8873 > > │
00:07:15 v #8874 > > │ 00:00:00 v #6 _assert_fn / { input = "..\..\u v\w.x" "y
00:07:15 v #8875 > > z.a" b.c }
00:07:15 v #8876 > > │ __assert_eq' / actual: ../../u v/w.x, US1_0 (""y z.a" b.c")
00:07:15 v #8877 > > expected: ../../u v/w.x, US1_0 (""y z.a" b.c")
00:07:15 v #8878 > > │
00:07:15 v #8879 > > │ 00:00:00 v #7 _assert_fn / { input = "..\..\d e.f" -g
00:07:15 v #8880 > > \\"h i\\" }
00:07:15 v #8881 > > │ __assert_eq' / actual: ../../d e.f, US1_0 ("-g \\"h i\\"")
00:07:15 v #8882 > > expected: ../../d e.f, US1_0 ("-g \\"h i\\"")
00:07:15 v #8883 > > │
00:07:15 v #8884 > > │ 00:00:00 v #8 _assert_fn / { input = ..\..\j k.l -m \\"n
00:07:15 v #8885 > > o\\" }
00:07:15 v #8886 > > │ __assert_eq' / actual: ../../j, US1_0 ("k.l -m \\"n o\\"")
00:07:15 v #8887 > > expected: ../../j, US1_0 ("k.l -m \\"n o\\"")
00:07:15 v #8888 > > │
00:07:15 v #8889 > > │
00:07:15 v #8890 > > │
00:07:15 v #8891 > >
00:07:15 v #8892 > > ── [ 13.60s - stdout ] ─────────────────────────────────────────────────────────
00:07:15 v #8893 > > │ .fsx output:
00:07:15 v #8894 > > │
00:07:15 v #8895 > > │ 00:00:00 v #1 _assert_fn / { input =  }
00:07:15 v #8896 > > │ __assert_eq' / actual: ", US1_1" / expected: ", US1_1"
00:07:15 v #8897 > > │
00:07:15 v #8898 > > │ 00:00:00 v #2 _assert_fn / { input = /a/b/c }
00:07:15 v #8899 > > │ __assert_eq' / actual: "/a/b/c, US1_1" / expected: "/a/b/c,
00:07:15 v #8900 > > US1_1"
00:07:15 v #8901 > > │
00:07:15 v #8902 > > │ 00:00:00 v #3 _assert_fn / { input = d e.f }
00:07:15 v #8903 > > │ __assert_eq' / actual: "d, US1_0 "e.f"" / expected: "d, US1_0
00:07:15 v #8904 > > "e.f""
00:07:15 v #8905 > > │
00:07:15 v #8906 > > │ 00:00:00 v #4 _assert_fn / { input = ..\..\g.h i.j k.l }
00:07:15 v #8907 > > │ __assert_eq' / actual: "../../g.h, US1_0 "i.j k.l""
00:07:15 v #8908 > > expected: "../../g.h, US1_0 "i.j k.l""
00:07:15 v #8909 > > │
00:07:15 v #8910 > > │ 00:00:00 v #5 _assert_fn / { input = m:\n\o.p "q.r s.t"
00:07:15 v #8911 > > }
00:07:15 v #8912 > > │ __assert_eq' / actual: "m:/n/o.p, US1_0 ""q.r s.t"""
00:07:15 v #8913 > > expected: "m:/n/o.p, US1_0 ""q.r s.t"""
00:07:15 v #8914 > > │
00:07:15 v #8915 > > │ 00:00:00 v #6 _assert_fn / { input = "..\..\u v\w.x" "y
00:07:15 v #8916 > > z.a" b.c }
00:07:15 v #8917 > > │ __assert_eq' / actual: "../../u v/w.x, US1_0 ""y z.a" b.c""
00:07:15 v #8918 > > expected: "../../u v/w.x, US1_0 ""y z.a" b.c""
00:07:15 v #8919 > > │
00:07:15 v #8920 > > │ 00:00:00 v #7 _assert_fn / { input = "..\..\d e.f" -g
00:07:15 v #8921 > > \\"h i\\" }
00:07:15 v #8922 > > │ __assert_eq' / actual: "../../d e.f, US1_0 "-g \\"h i\\"""
00:07:15 v #8923 > > expected: "../../d e.f, US1_0 "-g \\"h i\\"""
00:07:15 v #8924 > > │
00:07:15 v #8925 > > │ 00:00:00 v #8 _assert_fn / { input = ..\..\j k.l -m \\"n
00:07:15 v #8926 > > o\\" }
00:07:15 v #8927 > > │ __assert_eq' / actual: "../../j, US1_0 "k.l -m \\"n o\\"""
00:07:15 v #8928 > > expected: "../../j, US1_0 "k.l -m \\"n o\\"""
00:07:15 v #8929 > > │
00:07:15 v #8930 > >
00:07:15 v #8931 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:15 v #8932 > > │ ### execution_line
00:07:15 v #8933 > >
00:07:15 v #8934 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:15 v #8935 > > type execution_line =
00:07:15 v #8936 > >     {
00:07:15 v #8937 > >         process_id : int
00:07:15 v #8938 > >         line : string
00:07:15 v #8939 > >         error : bool
00:07:15 v #8940 > >     }
00:07:15 v #8941 > >
00:07:15 v #8942 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:15 v #8943 > > │ ## rust
00:07:15 v #8944 > >
00:07:15 v #8945 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:15 v #8946 > > │ ### process_child
00:07:15 v #8947 > >
00:07:15 v #8948 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:15 v #8949 > > nominal process_child =
00:07:15 v #8950 > >     `(
00:07:15 v #8951 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:07:15 v #8952 > > Fable.Core.Emit(\"std::process::Child\")>]]\n#endif\ntype std_process_Child =
00:07:15 v #8953 > > class end"
00:07:15 v #8954 > >         $'' : $'std_process_Child'
00:07:15 v #8955 > >     )
00:07:15 v #8956 > >
00:07:15 v #8957 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:15 v #8958 > > │ ### process_child_stdin
00:07:15 v #8959 > >
00:07:15 v #8960 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:15 v #8961 > > nominal process_child_stdin =
00:07:15 v #8962 > >     `(
00:07:15 v #8963 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:07:15 v #8964 > > Fable.Core.Emit(\"std::process::ChildStdin\")>]]\n#endif\ntype
00:07:15 v #8965 > > std_process_ChildStdin = class end"
00:07:15 v #8966 > >         $'' : $'std_process_ChildStdin'
00:07:15 v #8967 > >     )
00:07:15 v #8968 > >
00:07:15 v #8969 > > inl process_child_stdin
00:07:15 v #8970 > >     (child : rust.ref (rust.mut' process_child))
00:07:15 v #8971 > >     : rust.ref (rust.mut' (optionm'.option' process_child_stdin))
00:07:15 v #8972 > >     =
00:07:15 v #8973 > >     !\\(child, $'"&mut $0.stdin"')
00:07:15 v #8974 > >
00:07:15 v #8975 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:15 v #8976 > > │ ## runtime
00:07:15 v #8977 > >
00:07:15 v #8978 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:15 v #8979 > > │ ### execution_options
00:07:15 v #8980 > >
00:07:15 v #8981 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:15 v #8982 > > type execution_options =
00:07:15 v #8983 > >     {
00:07:15 v #8984 > >         command : string
00:07:15 v #8985 > >         cancellation_token : optionm'.option' threading.cancellation_token
00:07:15 v #8986 > >         environment_variables : array_base (string * string)
00:07:15 v #8987 > >         on_line : optionm'.option' (execution_line -> async.async ())
00:07:15 v #8988 > >         stdin : optionm'.option' (threading.arc (threading.mutex
00:07:15 v #8989 > > process_child_stdin) -> ())
00:07:15 v #8990 > >         trace : bool
00:07:15 v #8991 > >         working_directory : optionm'.option' string
00:07:15 v #8992 > >     }
00:07:15 v #8993 > >
00:07:15 v #8994 > > inl execution_options (fn : execution_options -> execution_options) :
00:07:15 v #8995 > > execution_options =
00:07:15 v #8996 > >     {
00:07:15 v #8997 > >         command = ""
00:07:15 v #8998 > >         cancellation_token = None |> optionm'.box
00:07:15 v #8999 > >         environment_variables = ;[[]]
00:07:15 v #9000 > >         on_line = None |> optionm'.box
00:07:15 v #9001 > >         stdin = None |> optionm'.box
00:07:15 v #9002 > >         trace = true
00:07:15 v #9003 > >         working_directory = None |> optionm'.box
00:07:15 v #9004 > >     }
00:07:15 v #9005 > >     |> fn
00:07:15 v #9006 > >
00:07:15 v #9007 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:15 v #9008 > > │ ## rust
00:07:15 v #9009 > >
00:07:15 v #9010 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:15 v #9011 > > │ ### process_child_stderr
00:07:15 v #9012 > >
00:07:15 v #9013 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:15 v #9014 > > nominal process_child_stderr =
00:07:15 v #9015 > >     `(
00:07:15 v #9016 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:07:15 v #9017 > > Fable.Core.Emit(\"std::process::ChildStderr\")>]]\n#endif\ntype
00:07:15 v #9018 > > std_process_ChildStderr = class end"
00:07:15 v #9019 > >         $'' : $'std_process_ChildStderr'
00:07:15 v #9020 > >     )
00:07:15 v #9021 > >
00:07:15 v #9022 > > inl process_child_stderr
00:07:15 v #9023 > >     (child : rust.ref (rust.mut' process_child))
00:07:15 v #9024 > >     : rust.ref (rust.mut' (optionm'.option' process_child_stderr))
00:07:15 v #9025 > >     =
00:07:15 v #9026 > >     !\\(child, $'"&mut $0.stderr"')
00:07:15 v #9027 > >
00:07:15 v #9028 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:15 v #9029 > > │ ### process_child_stdout
00:07:15 v #9030 > >
00:07:15 v #9031 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:15 v #9032 > > nominal process_child_stdout =
00:07:15 v #9033 > >     `(
00:07:15 v #9034 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:07:15 v #9035 > > Fable.Core.Emit(\"std::process::ChildStdout\")>]]\n#endif\ntype
00:07:15 v #9036 > > std_process_ChildStdout = class end"
00:07:15 v #9037 > >         $'' : $'std_process_ChildStdout'
00:07:15 v #9038 > >     )
00:07:15 v #9039 > >
00:07:15 v #9040 > > inl process_child_stdout
00:07:15 v #9041 > >     (child : rust.ref (rust.mut' process_child))
00:07:15 v #9042 > >     : rust.ref (rust.mut' (optionm'.option' process_child_stdout))
00:07:15 v #9043 > >     =
00:07:15 v #9044 > >     !\\(child, $'"&mut $0.stdout"')
00:07:16 v #9045 > >
00:07:16 v #9046 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:16 v #9047 > > │ ### process_command
00:07:16 v #9048 > >
00:07:16 v #9049 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:16 v #9050 > > nominal process_command =
00:07:16 v #9051 > >     `(
00:07:16 v #9052 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:07:16 v #9053 > > Fable.Core.Emit(\"std::process::Command\")>]]\n#endif\ntype std_process_Command
00:07:16 v #9054 > > = class end"
00:07:16 v #9055 > >         $'' : $'std_process_Command'
00:07:16 v #9056 > >     )
00:07:16 v #9057 > >
00:07:16 v #9058 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:16 v #9059 > > │ ### process_stdio
00:07:16 v #9060 > >
00:07:16 v #9061 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:16 v #9062 > > nominal process_stdio =
00:07:16 v #9063 > >     `(
00:07:16 v #9064 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:07:16 v #9065 > > Fable.Core.Emit(\"std::process::Stdio\")>]]\n#endif\ntype std_process_Stdio =
00:07:16 v #9066 > > class end"
00:07:16 v #9067 > >         $'' : $'std_process_Stdio'
00:07:16 v #9068 > >     )
00:07:16 v #9069 > >
00:07:16 v #9070 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:16 v #9071 > > │ ### process_output
00:07:16 v #9072 > >
00:07:16 v #9073 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:16 v #9074 > > nominal process_output =
00:07:16 v #9075 > >     `(
00:07:16 v #9076 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:07:16 v #9077 > > Fable.Core.Emit(\"std::process::Output\")>]]\n#endif\ntype std_process_Output =
00:07:16 v #9078 > > class end"
00:07:16 v #9079 > >         $'' : $'std_process_Output'
00:07:16 v #9080 > >     )
00:07:16 v #9081 > >
00:07:16 v #9082 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:16 v #9083 > > │ ### process_exit_status
00:07:16 v #9084 > >
00:07:16 v #9085 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:16 v #9086 > > nominal process_exit_status =
00:07:16 v #9087 > >     `(
00:07:16 v #9088 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:07:16 v #9089 > > Fable.Core.Emit(\"std::process::ExitStatus\")>]]\n#endif\ntype
00:07:16 v #9090 > > std_process_ExitStatus = class end"
00:07:16 v #9091 > >         $'' : $'std_process_ExitStatus'
00:07:16 v #9092 > >     )
00:07:16 v #9093 > >
00:07:16 v #9094 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:16 v #9095 > > │ ### process_output_status
00:07:16 v #9096 > >
00:07:16 v #9097 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:16 v #9098 > > inl process_output_status (output : process_output) : process_exit_status =
00:07:16 v #9099 > >     !\\(output, $'"$0.status"')
00:07:16 v #9100 > >
00:07:16 v #9101 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:16 v #9102 > > │ ### process_exit_status_code
00:07:16 v #9103 > >
00:07:16 v #9104 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:16 v #9105 > > inl process_exit_status_code (status : process_exit_status) : optionm'.option'
00:07:16 v #9106 > > i32 =
00:07:16 v #9107 > >     !\\(status, $'"$0.code()"')
00:07:17 v #9108 > >
00:07:17 v #9109 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:17 v #9110 > > │ ### stdin_write_all
00:07:17 v #9111 > >
00:07:17 v #9112 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:17 v #9113 > > inl stdin_write_all (stdin : threading.mutex_guard process_child_stdin) (text :
00:07:17 v #9114 > > string) : () =
00:07:17 v #9115 > >     inl stream = text |> sm'.as_bytes
00:07:17 v #9116 > >     inl stdin = join stdin
00:07:17 v #9117 > >     (!\($'"true; let mut !stdin = !stdin"') : bool) |> ignore
00:07:17 v #9118 > >     (!\\(stdin, $'"true; std::io::Write::write_all(&mut *$0,
00:07:17 v #9119 > > !stream).unwrap()"') : bool) |> ignore
00:07:17 v #9120 > >
00:07:17 v #9121 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:17 v #9122 > > │ ### stdin_flush
00:07:17 v #9123 > >
00:07:17 v #9124 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:17 v #9125 > > inl stdin_flush (stdin : threading.mutex_guard process_child_stdin) : () =
00:07:17 v #9126 > >     inl stdin = join stdin
00:07:17 v #9127 > >     (!\($'"true; let mut !stdin = !stdin"') : bool) |> ignore
00:07:17 v #9128 > >     (!\\(stdin, $'"true; std::io::Write::flush(&mut *$0).unwrap()"') : bool) |>
00:07:17 v #9129 > > ignore
00:07:17 v #9130 > >
00:07:17 v #9131 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:17 v #9132 > > │ ### new_process_command
00:07:17 v #9133 > >
00:07:17 v #9134 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:17 v #9135 > > inl new_process_command (file_name : string) : process_command =
00:07:17 v #9136 > >     !\\(file_name, $'"std::process::Command::new(&*$0)"')
00:07:17 v #9137 > >
00:07:17 v #9138 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:17 v #9139 > > │ ### process_stdio_piped
00:07:17 v #9140 > >
00:07:17 v #9141 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:17 v #9142 > > inl process_stdio_piped () : process_stdio =
00:07:17 v #9143 > >     !\($'"std::process::Stdio::piped()"')
00:07:17 v #9144 > >
00:07:17 v #9145 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:17 v #9146 > > │ ### process_command_args
00:07:17 v #9147 > >
00:07:17 v #9148 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:17 v #9149 > > inl process_command_args (args : am'.vec sm'.std_string) (c : process_command) :
00:07:17 v #9150 > > process_command =
00:07:17 v #9151 > >     (!\($'"true; let mut !c = !c"') : bool) |> ignore
00:07:17 v #9152 > >     (!\\(args, $'"true; std::process::Command::args(&mut !c, &*$0)"') : bool) |>
00:07:17 v #9153 > > ignore
00:07:17 v #9154 > >     c |> rust.emit
00:07:17 v #9155 > >
00:07:17 v #9156 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:17 v #9157 > > │ ### process_command_stdout
00:07:17 v #9158 > >
00:07:17 v #9159 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:17 v #9160 > > inl process_command_stdout (stdio : process_stdio) (c : process_command) :
00:07:17 v #9161 > > process_command =
00:07:17 v #9162 > >     (!\($'"true; let mut !c = !c"') : bool) |> ignore
00:07:17 v #9163 > >     (!\($'"true; std::process::Command::stdout(&mut !c,
00:07:17 v #9164 > > std::process::Stdio::piped())"') : bool) |> ignore
00:07:17 v #9165 > >     c |> rust.emit
00:07:17 v #9166 > >
00:07:17 v #9167 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:17 v #9168 > > │ ### process_command_stderr
00:07:17 v #9169 > >
00:07:17 v #9170 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:17 v #9171 > > inl process_command_stderr (stdio : process_stdio) (c : process_command) :
00:07:17 v #9172 > > process_command =
00:07:17 v #9173 > >     (!\($'"true; let mut !c = !c"') : bool) |> ignore
00:07:17 v #9174 > >     (!\($'"true; std::process::Command::stderr(&mut !c,
00:07:17 v #9175 > > std::process::Stdio::piped())"') : bool) |> ignore
00:07:17 v #9176 > >     c |> rust.emit
00:07:18 v #9177 > >
00:07:18 v #9178 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:18 v #9179 > > │ ### process_command_stdin
00:07:18 v #9180 > >
00:07:18 v #9181 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:18 v #9182 > > inl process_command_stdin (stdio : process_stdio) (c : process_command) :
00:07:18 v #9183 > > process_command =
00:07:18 v #9184 > >     (!\($'"true; let mut !c = !c"') : bool) |> ignore
00:07:18 v #9185 > >     (!\($'"true; std::process::Command::stdin(&mut !c,
00:07:18 v #9186 > > std::process::Stdio::piped())"') : bool) |> ignore
00:07:18 v #9187 > >     c |> rust.emit
00:07:18 v #9188 > >
00:07:18 v #9189 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:18 v #9190 > > │ ### process_command_current_dir
00:07:18 v #9191 > >
00:07:18 v #9192 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:18 v #9193 > > inl process_command_current_dir (dir : string) (c : process_command) :
00:07:18 v #9194 > > process_command =
00:07:18 v #9195 > >     (!\($'"true; let mut !c = !c"') : bool) |> ignore
00:07:18 v #9196 > >     (!\\(dir, $'"true; std::process::Command::current_dir(&mut !c, &*$0)"') :
00:07:18 v #9197 > > bool) |> ignore
00:07:18 v #9198 > >     !\($'$"!c"')
00:07:18 v #9199 > >
00:07:18 v #9200 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:18 v #9201 > > │ ### process_command_env
00:07:18 v #9202 > >
00:07:18 v #9203 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:18 v #9204 > > inl process_command_env (key : string) (value : string) (c : process_command) :
00:07:18 v #9205 > > process_command =
00:07:18 v #9206 > >     (!\($'"true; let mut !c = !c"') : bool) |> ignore
00:07:18 v #9207 > >     (!\\((key, value), $'"true; std::process::Command::env(&mut !c, &*$0,
00:07:18 v #9208 > > &*$1)"') : bool) |> ignore
00:07:18 v #9209 > >     c |> rust.emit
00:07:18 v #9210 > >
00:07:18 v #9211 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:18 v #9212 > > │ ### process_command_spawn
00:07:18 v #9213 > >
00:07:18 v #9214 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:18 v #9215 > > inl process_command_spawn
00:07:18 v #9216 > >     (c : process_command)
00:07:18 v #9217 > >     : resultm.result' process_child stream.io_error
00:07:18 v #9218 > >     =
00:07:18 v #9219 > >     (!\($'"true; let mut !c = !c"') : bool) |> ignore
00:07:18 v #9220 > >     !\($'"std::process::Command::spawn(&mut !c)"')
00:07:18 v #9221 > >
00:07:18 v #9222 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:18 v #9223 > > │ ### child_wait_with_output
00:07:18 v #9224 > >
00:07:18 v #9225 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:18 v #9226 > > inl child_wait_with_output
00:07:18 v #9227 > >     (child : process_child)
00:07:18 v #9228 > >     : resultm.result' process_output stream.io_error
00:07:18 v #9229 > >     =
00:07:18 v #9230 > >     !\\(child, $'"$0.wait_with_output()"')
00:07:18 v #9231 > >
00:07:18 v #9232 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:18 v #9233 > > │ ### stdio_line
00:07:18 v #9234 > >
00:07:18 v #9235 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:18 v #9236 > > inl stdio_line
00:07:18 v #9237 > >     (stdio : result () ())
00:07:18 v #9238 > >     (trace' : bool)
00:07:18 v #9239 > >     (channel_sender : threading.arc (threading.mutex (threading.channel_sender
00:07:18 v #9240 > > sm'.std_string)))
00:07:18 v #9241 > >     (line : resultm.result' sm'.std_string stream.io_error)
00:07:18 v #9242 > >     : resultm.result' () sm'.std_string
00:07:18 v #9243 > >     =
00:07:18 v #9244 > >     inl highlight text =
00:07:18 v #9245 > >         $'$"\\u001b[[4;7m{!text}\\u001b[[0m"'
00:07:18 v #9246 > >     inl line =
00:07:18 v #9247 > >         match
00:07:18 v #9248 > >             line
00:07:18 v #9249 > >             |> resultm.map_error' sm'.format'
00:07:18 v #9250 > >             |> resultm.unbox'
00:07:18 v #9251 > >         with
00:07:18 v #9252 > >         | Ok line =>
00:07:18 v #9253 > >             inl line =
00:07:18 v #9254 > >                 line
00:07:18 v #9255 > >                 |> sm'.from_std_string
00:07:18 v #9256 > >                 // |> sm'.as_bytes
00:07:18 v #9257 > >                 // |> am'.slice_to_vec
00:07:18 v #9258 > >                 |> sm'.encoding_encode' (sm'.encoding_utf8' ())
00:07:18 v #9259 > >                 |> rust.cow_as_ref
00:07:18 v #9260 > >                 |> sm'.str_from_utf8
00:07:18 v #9261 > >                 // |> sm'.utf8_decode
00:07:18 v #9262 > >                 |> resultm.unwrap'
00:07:18 v #9263 > >                 |> sm'.ref_to_std_string
00:07:18 v #9264 > >                 // String::from_utf8_lossy(line.as_bytes()).into()
00:07:18 v #9265 > >             inl line_log = line |> sm'.from_std_string
00:07:18 v #9266 > >             inl text =
00:07:18 v #9267 > >                 match stdio with
00:07:18 v #9268 > >                 | Ok () => $'$"> {!line_log}"'
00:07:18 v #9269 > >                 | Error () => $'$"\! {!line_log}"'
00:07:18 v #9270 > >             if trace'
00:07:18 v #9271 > >             then trace Verbose (fun () => text) id
00:07:18 v #9272 > >             else text |> console.write_line
00:07:18 v #9273 > >             match stdio with
00:07:18 v #9274 > >             | Ok () => line
00:07:18 v #9275 > >             | Error () => line |> highlight |> sm'.to_std_string
00:07:18 v #9276 > >         | Error e =>
00:07:18 v #9277 > >             trace Critical
00:07:18 v #9278 > >                 fun () => "runtime.stdio_line"
00:07:18 v #9279 > >                 fun () => { trace' e }
00:07:18 v #9280 > >             e |> highlight |> sm'.to_std_string
00:07:18 v #9281 > >     channel_sender
00:07:18 v #9282 > >     |> threading.arc_mutex_lock
00:07:18 v #9283 > >     |> resultm.unwrap'
00:07:18 v #9284 > >     |> threading.mutex_guard_ref
00:07:18 v #9285 > >     |> threading.channel_send line
00:07:18 v #9286 > >     |> resultm.map_error' sm'.format'
00:07:19 v #9287 > >
00:07:19 v #9288 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:19 v #9289 > > │ ### command
00:07:19 v #9290 > >
00:07:19 v #9291 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:19 v #9292 > > nominal command =
00:07:19 v #9293 > >     `(
00:07:19 v #9294 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:07:19 v #9295 > > Fable.Core.Emit(\"clap::Command\")>]]\n#endif\ntype clap_Command = class end"
00:07:19 v #9296 > >         $'' : $'clap_Command'
00:07:19 v #9297 > >     )
00:07:19 v #9298 > >
00:07:19 v #9299 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:19 v #9300 > > │ ### new_command
00:07:19 v #9301 > >
00:07:19 v #9302 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:19 v #9303 > > inl new_command (s : rust.static_ref sm'.str) : command =
00:07:19 v #9304 > >     !\\(s, $'"clap::Command::new($0)"')
00:07:19 v #9305 > >
00:07:19 v #9306 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:19 v #9307 > > //// test
00:07:19 v #9308 > > ///! rust -d clap
00:07:19 v #9309 > >
00:07:19 v #9310 > > ##"command"
00:07:19 v #9311 > > |> new_command
00:07:19 v #9312 > > |> sm'.format_pretty
00:07:19 v #9313 > > |> _assert sm'.contains "\"command\""
00:07:27 v #9314 > >
00:07:27 v #9315 > > ── [ 8.65s - return value ] ────────────────────────────────────────────────────
00:07:27 v #9316 > > │ __assert / actual: ""command"" / expected: "Command {
00:07:27 v #9317 > > │     name: "command",
00:07:27 v #9318 > > │     long_flag: None,
00:07:27 v #9319 > > │     short_flag: None,
00:07:27 v #9320 > > │     display_name: None,
00:07:27 v #9321 > > │     bin_name: None,
00:07:27 v #9322 > > │     author: None,
00:07:27 v #9323 > > │     version: None,
00:07:27 v #9324 > > │     long_version: None,
00:07:27 v #9325 > > │     about: None,
00:07:27 v #9326 > > │     long_about: None,
00:07:27 v #9327 > > │     before_help: None,
00:07:27 v #9328 > > │     before_long_help: None,
00:07:27 v #9329 > > │     after_help: None,
00:07:27 v #9330 > > │     after_long_help: None,
00:07:27 v #9331 > > │     aliases: [],
00:07:27 v #9332 > > │     short_flag_aliases: [],
00:07:27 v #9333 > > │     long_flag_aliases: [],
00:07:27 v #9334 > > │     usage_str: None,
00:07:27 v #9335 > > │     usage_name: None,
00:07:27 v #9336 > > │     help_str: None,
00:07:27 v #9337 > > │     disp_ord: None,
00:07:27 v #9338 > > │     template: None,
00:07:27 v #9339 > > │     settings: AppFlags(
00:07:27 v #9340 > > │         0,
00:07:27 v #9341 > > │     ),
00:07:27 v #9342 > > │     g_settings: AppFlags(
00:07:27 v #9343 > > │         0,
00:07:27 v #9344 > > │     ),
00:07:27 v #9345 > > │     args: MKeyMap {
00:07:27 v #9346 > > │         args: [],
00:07:27 v #9347 > > │         keys: [],
00:07:27 v #9348 > > │     },
00:07:27 v #9349 > > │     subcommands: [],
00:07:27 v #9350 > > │     groups: [],
00:07:27 v #9351 > > │     current_help_heading: None,
00:07:27 v #9352 > > │     current_disp_ord: Some(
00:07:27 v #9353 > > │         0,
00:07:27 v #9354 > > │     ),
00:07:27 v #9355 > > │     subcommand_value_name: None,
00:07:27 v #9356 > > │     subcommand_heading: None,
00:07:27 v #9357 > > │     external_value_parser: None,
00:07:27 v #9358 > > │     long_help_exists: false,
00:07:27 v #9359 > > │     deferred: None,
00:07:27 v #9360 > > │     app_ext: Extensions {
00:07:27 v #9361 > > │         extensions: FlatMap {
00:07:27 v #9362 > > │             keys: [],
00:07:27 v #9363 > > │             values: [],
00:07:27 v #9364 > > │         },
00:07:27 v #9365 > > │     },
00:07:27 v #9366 > > │ }"
00:07:27 v #9367 > > │
00:07:27 v #9368 > >
00:07:27 v #9369 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:27 v #9370 > > │ ### arg
00:07:27 v #9371 > >
00:07:27 v #9372 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:27 v #9373 > > nominal arg =
00:07:27 v #9374 > >     `(
00:07:27 v #9375 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:07:27 v #9376 > > Fable.Core.Emit(\"clap::Arg\")>]]\n#endif\ntype clap_Arg = class end"
00:07:27 v #9377 > >         $'' : $'clap_Arg'
00:07:27 v #9378 > >     )
00:07:28 v #9379 > >
00:07:28 v #9380 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:28 v #9381 > > │ ### new_arg
00:07:28 v #9382 > >
00:07:28 v #9383 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:28 v #9384 > > inl new_arg (s : rust.static_ref sm'.str) : arg =
00:07:28 v #9385 > >     !\\(s, $'"clap::Arg::new($0)"')
00:07:28 v #9386 > >
00:07:28 v #9387 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:28 v #9388 > > //// test
00:07:28 v #9389 > > ///! rust -d clap
00:07:28 v #9390 > >
00:07:28 v #9391 > > ##"arg"
00:07:28 v #9392 > > |> new_arg
00:07:28 v #9393 > > |> sm'.format_pretty
00:07:28 v #9394 > > |> _assert sm'.contains "\"arg\""
00:07:33 v #9395 > >
00:07:33 v #9396 > > ── [ 5.31s - return value ] ────────────────────────────────────────────────────
00:07:33 v #9397 > > │ __assert / actual: ""arg"" / expected: "Arg {
00:07:33 v #9398 > > │     id: "arg",
00:07:33 v #9399 > > │     help: None,
00:07:33 v #9400 > > │     long_help: None,
00:07:33 v #9401 > > │     action: None,
00:07:33 v #9402 > > │     value_parser: None,
00:07:33 v #9403 > > │     blacklist: [],
00:07:33 v #9404 > > │     settings: ArgFlags(
00:07:33 v #9405 > > │         0,
00:07:33 v #9406 > > │     ),
00:07:33 v #9407 > > │     overrides: [],
00:07:33 v #9408 > > │     groups: [],
00:07:33 v #9409 > > │     requires: [],
00:07:33 v #9410 > > │     r_ifs: [],
00:07:33 v #9411 > > │     r_unless: [],
00:07:33 v #9412 > > │     short: None,
00:07:33 v #9413 > > │     long: None,
00:07:33 v #9414 > > │     aliases: [],
00:07:33 v #9415 > > │     short_aliases: [],
00:07:33 v #9416 > > │     disp_ord: None,
00:07:33 v #9417 > > │     val_names: [],
00:07:33 v #9418 > > │     num_vals: None,
00:07:33 v #9419 > > │     val_delim: None,
00:07:33 v #9420 > > │     default_vals: [],
00:07:33 v #9421 > > │     default_vals_ifs: [],
00:07:33 v #9422 > > │     terminator: None,
00:07:33 v #9423 > > │     index: None,
00:07:33 v #9424 > > │     help_heading: None,
00:07:33 v #9425 > > │     default_missing_vals: [],
00:07:33 v #9426 > > │     ext: Extensions {
00:07:33 v #9427 > > │         extensions: FlatMap {
00:07:33 v #9428 > > │             keys: [],
00:07:33 v #9429 > > │             values: [],
00:07:33 v #9430 > > │         },
00:07:33 v #9431 > > │     },
00:07:33 v #9432 > > │ }"
00:07:33 v #9433 > > │
00:07:33 v #9434 > >
00:07:33 v #9435 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:33 v #9436 > > │ ### command_arg
00:07:33 v #9437 > >
00:07:33 v #9438 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:33 v #9439 > > inl command_arg (arg : arg) (command : command) : command =
00:07:33 v #9440 > >     !\\((command, arg), $'"clap::Command::arg($0, $1)"')
00:07:33 v #9441 > >
00:07:33 v #9442 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:33 v #9443 > > │ ### arg_required
00:07:33 v #9444 > >
00:07:33 v #9445 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:33 v #9446 > > inl arg_required (value : bool) (arg : arg) : arg =
00:07:33 v #9447 > >     !\\((arg, value), $'"$0.required($1)"')
00:07:33 v #9448 > >
00:07:33 v #9449 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:33 v #9450 > > │ ### arg_require_equals
00:07:33 v #9451 > >
00:07:33 v #9452 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:33 v #9453 > > inl arg_require_equals (value : bool) (arg : arg) : arg =
00:07:33 v #9454 > >     !\\((arg, value), $'"$0.require_equals($1)"')
00:07:34 v #9455 > >
00:07:34 v #9456 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:34 v #9457 > > │ ### arg_default_value
00:07:34 v #9458 > >
00:07:34 v #9459 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:34 v #9460 > > inl arg_default_value (value : string) (arg : arg) : arg =
00:07:34 v #9461 > >     inl value = #value
00:07:34 v #9462 > >     !\\((arg, value), $'"$0.default_value($1)"')
00:07:34 v #9463 > >
00:07:34 v #9464 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:34 v #9465 > > │ ### arg_default_missing_value
00:07:34 v #9466 > >
00:07:34 v #9467 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:34 v #9468 > > inl arg_default_missing_value (value : string) (arg : arg) : arg =
00:07:34 v #9469 > >     inl value = #value
00:07:34 v #9470 > >     !\\((arg, value), $'"$0.default_missing_value($1)"')
00:07:34 v #9471 > >
00:07:34 v #9472 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:34 v #9473 > > │ ### arg_overrides_with
00:07:34 v #9474 > >
00:07:34 v #9475 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:34 v #9476 > > inl arg_overrides_with (value : string) (arg : arg) : arg =
00:07:34 v #9477 > >     inl value = #value
00:07:34 v #9478 > >     !\\((arg, value), $'"$0.overrides_with($1)"')
00:07:34 v #9479 > >
00:07:34 v #9480 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:34 v #9481 > > │ ### arg_short
00:07:34 v #9482 > >
00:07:34 v #9483 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:34 v #9484 > > inl arg_short (value : char) (arg : arg) : arg =
00:07:34 v #9485 > >     !\\((arg, value), $'"$0.short($1)"')
00:07:34 v #9486 > >
00:07:34 v #9487 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:34 v #9488 > > │ ### arg_long
00:07:34 v #9489 > >
00:07:34 v #9490 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:34 v #9491 > > inl arg_long (value : rust.static_ref sm'.str) (arg : arg) : arg =
00:07:34 v #9492 > >     !\\((arg, value), $'"$0.long($1)"')
00:07:34 v #9493 > >
00:07:34 v #9494 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:34 v #9495 > > │ ### arg_value_names
00:07:34 v #9496 > >
00:07:34 v #9497 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:34 v #9498 > > inl arg_value_names (values : array_base (rust.static_ref sm'.str)) (arg : arg)
00:07:34 v #9499 > > : arg =
00:07:34 v #9500 > >     inl values = values |> am'.to_vec
00:07:34 v #9501 > >     !\\((arg, values), $'"$0.value_names($1)"')
00:07:34 v #9502 > >
00:07:34 v #9503 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:34 v #9504 > > │ ### arg_num_args
00:07:34 v #9505 > >
00:07:34 v #9506 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:34 v #9507 > > inl arg_num_args (value : i32) (arg : arg) : arg =
00:07:34 v #9508 > >     !\\((arg, value), $'"$0.num_args($1)"')
00:07:35 v #9509 > >
00:07:35 v #9510 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:35 v #9511 > > │ ### value_range
00:07:35 v #9512 > >
00:07:35 v #9513 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:35 v #9514 > > nominal value_range =
00:07:35 v #9515 > >     `(
00:07:35 v #9516 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:07:35 v #9517 > > Fable.Core.Emit(\"clap::builder::ValueRange\")>]]\n#endif\ntype
00:07:35 v #9518 > > clap_builder_ValueRange = class end"
00:07:35 v #9519 > >         $'' : $'clap_builder_ValueRange'
00:07:35 v #9520 > >     )
00:07:35 v #9521 > >
00:07:35 v #9522 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:35 v #9523 > > │ ### new_value_range
00:07:35 v #9524 > >
00:07:35 v #9525 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:35 v #9526 > > inl new_value_range forall t. inclusive (start : _ t) (end : _ t) : value_range
00:07:35 v #9527 > > =
00:07:35 v #9528 > >     inl len () =
00:07:35 v #9529 > >         0i32 |> convert
00:07:35 v #9530 > >     inl start, end =
00:07:35 v #9531 > >         open am'
00:07:35 v #9532 > >         match start, end with
00:07:35 v #9533 > >         | Start start, End fn =>
00:07:35 v #9534 > >             start, len |> fn
00:07:35 v #9535 > >         | End start_fn, End end_fn =>
00:07:35 v #9536 > >             start_fn len, end_fn len
00:07:35 v #9537 > >     inl inclusive =
00:07:35 v #9538 > >         if inclusive
00:07:35 v #9539 > >         then "="
00:07:35 v #9540 > >         else ""
00:07:35 v #9541 > >     match start, end with
00:07:35 v #9542 > >     | start, end when end =. len () => !\\(start,
00:07:35 v #9543 > > $'"clap::builder::ValueRange::new($0..)"')
00:07:35 v #9544 > >     | start, end => !\\((start, end), $'"clap::builder::ValueRange::new($0.." +
00:07:35 v #9545 > > !inclusive + "$1)"')
00:07:35 v #9546 > >
00:07:35 v #9547 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:35 v #9548 > > │ ### arg_num_args_range
00:07:35 v #9549 > >
00:07:35 v #9550 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:35 v #9551 > > inl arg_num_args_range (value : value_range) (arg : arg) : arg =
00:07:35 v #9552 > >     !\\((arg, value), $'"$0.num_args($1)"')
00:07:35 v #9553 > >
00:07:35 v #9554 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:35 v #9555 > > │ ### arg_value_name
00:07:35 v #9556 > >
00:07:35 v #9557 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:35 v #9558 > > inl arg_value_name (value : string) (arg : arg) : arg =
00:07:35 v #9559 > >     inl value = value |> sm'.as_str
00:07:35 v #9560 > >     !\\((arg, value), $'"$0.value_name($1)"')
00:07:35 v #9561 > >
00:07:35 v #9562 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:35 v #9563 > > │ ### value_parser
00:07:35 v #9564 > >
00:07:35 v #9565 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:35 v #9566 > > nominal value_parser =
00:07:35 v #9567 > >     `(
00:07:35 v #9568 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:07:35 v #9569 > > Fable.Core.Emit(\"clap::builder::ValueParser\")>]]\n#endif\ntype
00:07:35 v #9570 > > clap_builder_ValueParser = class end"
00:07:35 v #9571 > >         $'' : $'clap_builder_ValueParser'
00:07:35 v #9572 > >     )
00:07:35 v #9573 > >
00:07:35 v #9574 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:35 v #9575 > > │ ### possible_value
00:07:35 v #9576 > >
00:07:35 v #9577 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:35 v #9578 > > nominal possible_value =
00:07:35 v #9579 > >     `(
00:07:35 v #9580 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:07:35 v #9581 > > Fable.Core.Emit(\"clap::builder::PossibleValue\")>]]\n#endif\ntype
00:07:35 v #9582 > > clap_builder_PossibleValue = class end"
00:07:35 v #9583 > >         $'' : $'clap_builder_PossibleValue'
00:07:35 v #9584 > >     )
00:07:36 v #9585 > >
00:07:36 v #9586 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:36 v #9587 > > │ ### new_possible_value
00:07:36 v #9588 > >
00:07:36 v #9589 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:36 v #9590 > > inl new_possible_value forall t. (x : t) : possible_value =
00:07:36 v #9591 > >     !\\(x, $'"clap::builder::PossibleValue::new(&**$0)"')
00:07:36 v #9592 > >
00:07:36 v #9593 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:36 v #9594 > > │ ### value_parser_path_buf
00:07:36 v #9595 > >
00:07:36 v #9596 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:36 v #9597 > > inl value_parser_path_buf () : value_parser =
00:07:36 v #9598 > >     !\($'"clap::value_parser\!(std::path::PathBuf)"')
00:07:36 v #9599 > >
00:07:36 v #9600 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:36 v #9601 > > │ ### value_parser_expr
00:07:36 v #9602 > >
00:07:36 v #9603 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:36 v #9604 > > inl value_parser_expr (expr : string) : value_parser =
00:07:36 v #9605 > >     !\($'"clap::value_parser\!(" + !expr + ").into()"')
00:07:36 v #9606 > >
00:07:36 v #9607 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:36 v #9608 > > │ ### arg_value_parser
00:07:36 v #9609 > >
00:07:36 v #9610 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:36 v #9611 > > inl arg_value_parser (values : value_parser) (arg : arg) : arg =
00:07:36 v #9612 > >     !\\((arg, values), $'"$0.value_parser($1)"')
00:07:36 v #9613 > >
00:07:36 v #9614 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:36 v #9615 > > │ ### arg_action
00:07:36 v #9616 > >
00:07:36 v #9617 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:36 v #9618 > > nominal arg_action' =
00:07:36 v #9619 > >     `(
00:07:36 v #9620 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:07:36 v #9621 > > Fable.Core.Emit(\"clap::ArgAction\")>]]\n#endif\ntype clap_ArgAction = class
00:07:36 v #9622 > > end"
00:07:36 v #9623 > >         $'' : $'clap_ArgAction'
00:07:36 v #9624 > >     )
00:07:36 v #9625 > >
00:07:36 v #9626 > > union arg_action =
00:07:36 v #9627 > >     | Set
00:07:36 v #9628 > >     | Append
00:07:36 v #9629 > >     | SetTrue
00:07:36 v #9630 > >     | SetFalse
00:07:36 v #9631 > >     | Count
00:07:36 v #9632 > >     | Help
00:07:36 v #9633 > >     | HelpShort
00:07:36 v #9634 > >     | HelpLong
00:07:36 v #9635 > >     | Version
00:07:36 v #9636 > >
00:07:36 v #9637 > > inl arg_action = function
00:07:36 v #9638 > >     | Set => !\($'"clap::ArgAction::Set"') : arg_action'
00:07:36 v #9639 > >     | Append => !\($'"clap::ArgAction::Append"') : arg_action'
00:07:36 v #9640 > >     | SetTrue => !\($'"clap::ArgAction::SetTrue"') : arg_action'
00:07:36 v #9641 > >     | SetFalse => !\($'"clap::ArgAction::SetFalse"') : arg_action'
00:07:36 v #9642 > >     | Count => !\($'"clap::ArgAction::Count"') : arg_action'
00:07:36 v #9643 > >     | Help => !\($'"clap::ArgAction::Help"') : arg_action'
00:07:36 v #9644 > >     | HelpShort => !\($'"clap::ArgAction::HelpShort"') : arg_action'
00:07:36 v #9645 > >     | HelpLong => !\($'"clap::ArgAction::HelpLong"') : arg_action'
00:07:36 v #9646 > >     | Version => !\($'"clap::ArgAction::Version"') : arg_action'
00:07:36 v #9647 > >
00:07:36 v #9648 > > inl arg_action (value : arg_action) (arg : arg) : arg =
00:07:36 v #9649 > >     inl value = value |> arg_action
00:07:36 v #9650 > >     !\\((arg, value), $'"$0.action($1)"')
00:07:37 v #9651 > >
00:07:37 v #9652 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:37 v #9653 > > │ ### arg_index
00:07:37 v #9654 > >
00:07:37 v #9655 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:37 v #9656 > > inl arg_index (value : i32) (arg : arg) : arg =
00:07:37 v #9657 > >     !\\((arg, value), $'"$0.index($1)"')
00:07:37 v #9658 > >
00:07:37 v #9659 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:37 v #9660 > > │ ### arg_matches
00:07:37 v #9661 > >
00:07:37 v #9662 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:37 v #9663 > > nominal arg_matches =
00:07:37 v #9664 > >     `(
00:07:37 v #9665 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:07:37 v #9666 > > Fable.Core.Emit(\"clap::ArgMatches\")>]]\n#endif\ntype clap_ArgMatches = class
00:07:37 v #9667 > > end"
00:07:37 v #9668 > >         $'' : $'clap_ArgMatches'
00:07:37 v #9669 > >     )
00:07:37 v #9670 > >
00:07:37 v #9671 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:37 v #9672 > > │ ### command_get_matches
00:07:37 v #9673 > >
00:07:37 v #9674 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:37 v #9675 > > inl command_get_matches (command : command) : arg_matches =
00:07:37 v #9676 > >     !\\(command, $'"clap::Command::get_matches($0)"')
00:07:37 v #9677 > >
00:07:37 v #9678 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:37 v #9679 > > │ ### command_get_matches_from
00:07:37 v #9680 > >
00:07:37 v #9681 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:37 v #9682 > > inl command_get_matches_from (args : array_base string) (command : command) :
00:07:37 v #9683 > > arg_matches =
00:07:37 v #9684 > >     inl args = args |> am'.to_vec |> am'.vec_map sm'.to_std_string
00:07:37 v #9685 > >     !\\(command, $'"clap::Command::get_matches_from($0, !args)"')
00:07:37 v #9686 > >
00:07:37 v #9687 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:37 v #9688 > > │ ### command_args_override_self
00:07:37 v #9689 > >
00:07:37 v #9690 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:37 v #9691 > > inl command_args_override_self (yes : bool) (command : command) : command =
00:07:37 v #9692 > >     !\\(command, $'"clap::Command::args_override_self($0, !yes)"')
00:07:37 v #9693 > >
00:07:37 v #9694 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:37 v #9695 > > │ ### command_init_arg
00:07:37 v #9696 > >
00:07:37 v #9697 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:37 v #9698 > > inl command_init_arg (long, short) fn command =
00:07:37 v #9699 > >     command
00:07:37 v #9700 > >     |> command_arg (
00:07:37 v #9701 > >         ##long
00:07:37 v #9702 > >         |> new_arg
00:07:37 v #9703 > >         |> arg_short short
00:07:37 v #9704 > >         |> arg_long ##long
00:07:37 v #9705 > >         |> fn
00:07:37 v #9706 > >     )
00:07:37 v #9707 > >
00:07:37 v #9708 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:37 v #9709 > > │ ### matches_get_one
00:07:37 v #9710 > >
00:07:37 v #9711 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:37 v #9712 > > inl matches_get_one forall t. (x : string) (matches : arg_matches) :
00:07:37 v #9713 > > optionm'.option' t =
00:07:37 v #9714 > >     inl x = join x
00:07:37 v #9715 > >     inl x = x |> sm'.as_str
00:07:37 v #9716 > >     !\\((matches, x), $'"clap::ArgMatches::get_one(&$0, $1).cloned()"')
00:07:38 v #9717 > >
00:07:38 v #9718 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:38 v #9719 > > │ ### matches_get_flag
00:07:38 v #9720 > >
00:07:38 v #9721 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:38 v #9722 > > inl matches_get_flag (x : string) (matches : arg_matches) : bool =
00:07:38 v #9723 > >     inl x = join x
00:07:38 v #9724 > >     inl x = x |> sm'.as_str
00:07:38 v #9725 > >     !\\((matches, x), $'"clap::ArgMatches::get_flag(&$0, $1)"')
00:07:38 v #9726 > >
00:07:38 v #9727 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:38 v #9728 > > │ ### matches_get_many
00:07:38 v #9729 > >
00:07:38 v #9730 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:38 v #9731 > > inl matches_get_many forall t. (x : string) (matches : arg_matches) :
00:07:38 v #9732 > > optionm'.option' (am'.vec t) =
00:07:38 v #9733 > >     inl x = join x
00:07:38 v #9734 > >     inl x = x |> sm'.as_str
00:07:38 v #9735 > >     !\\((matches, x), $'"clap::ArgMatches::get_many(&$0, $1).map(|x|
00:07:38 v #9736 > > x.cloned().into_iter().collect())"')
00:07:38 v #9737 > >
00:07:38 v #9738 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:38 v #9739 > > │ ### matches_get_occurrences
00:07:38 v #9740 > >
00:07:38 v #9741 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:38 v #9742 > > inl matches_get_occurrences (x : string) (matches : arg_matches) :
00:07:38 v #9743 > > optionm'.option' (array_base sm'.std_string) =
00:07:38 v #9744 > >     inl x = join x
00:07:38 v #9745 > >     inl x = x |> sm'.as_str
00:07:38 v #9746 > >     !\($'"clap::ArgMatches::get_occurrences(&!matches, !x).cloned()"')
00:07:38 v #9747 > >
00:07:38 v #9748 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:38 v #9749 > > │ ### matches_subcommand
00:07:38 v #9750 > >
00:07:38 v #9751 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:38 v #9752 > > inl matches_subcommand (matches : arg_matches) : optionm'.option'
00:07:38 v #9753 > > (sm'.std_string * arg_matches) =
00:07:38 v #9754 > >     !\\((matches, sm'.ref_to_std_string),
00:07:38 v #9755 > > $'"clap::ArgMatches::subcommand(Box::leak(Box::new($0))).map(|(a, b)| ($1(a),
00:07:38 v #9756 > > b.clone()))"')
00:07:38 v #9757 > >
00:07:38 v #9758 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:38 v #9759 > > │ ### matches_values_of
00:07:38 v #9760 > >
00:07:38 v #9761 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:38 v #9762 > > inl matches_values_of (x : string) (matches : arg_matches) : array_base
00:07:38 v #9763 > > sm'.std_string =
00:07:38 v #9764 > >     !\\((matches, x), $'"clap::ArgMatches::values_of($0, &*$1)"')
00:07:38 v #9765 > >
00:07:38 v #9766 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:38 v #9767 > > │ ### command_subcommand_required
00:07:38 v #9768 > >
00:07:38 v #9769 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:38 v #9770 > > inl command_subcommand_required (value : bool) (command : command) : command =
00:07:38 v #9771 > >     !\\(command, $'"clap::Command::subcommand_required($0, !value)"')
00:07:39 v #9772 > >
00:07:39 v #9773 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:39 v #9774 > > │ ### command_subcommand
00:07:39 v #9775 > >
00:07:39 v #9776 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:39 v #9777 > > inl command_subcommand (subcommand : command) (command : command) : command =
00:07:39 v #9778 > >     !\\(command, $'"clap::Command::subcommand($0, !subcommand)"')
00:07:39 v #9779 > >
00:07:39 v #9780 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:39 v #9781 > > │ ### value_parser_possible_values
00:07:39 v #9782 > >
00:07:39 v #9783 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:39 v #9784 > > inl value_parser_possible_values (values : array_base string) : value_parser =
00:07:39 v #9785 > >     inl values =
00:07:39 v #9786 > >         values
00:07:39 v #9787 > >         |> am'.to_vec
00:07:39 v #9788 > >         |> am'.vec_map (sm'.to_std_string >> rust.new_box >> rust.box_leak >>
00:07:39 v #9789 > > new_possible_value)
00:07:39 v #9790 > >     !\\(values,
00:07:39 v #9791 > > $'"Into::<clap::builder::ValueParser>::into(clap::builder::PossibleValuesParser:
00:07:39 v #9792 > > :new($0))"')
00:07:39 v #9793 > >
00:07:39 v #9794 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:39 v #9795 > > │ ### arg_union
00:07:39 v #9796 > >
00:07:39 v #9797 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:39 v #9798 > > inl arg_union forall union_type. (fn : union_type -> ()) (arg : arg) : arg =
00:07:39 v #9799 > >     arg
00:07:39 v #9800 > >     |> arg_value_parser (
00:07:39 v #9801 > >         real reflection.get_union_fields_untag `union_type ()
00:07:39 v #9802 > >         |> fun x => x : _ (string * union_type)
00:07:39 v #9803 > >         |> listm.map fst
00:07:39 v #9804 > >         |> listm'.box
00:07:39 v #9805 > >         |> listm'.to_array'
00:07:39 v #9806 > >         |> value_parser_possible_values
00:07:39 v #9807 > >     )
00:07:39 v #9808 > >
00:07:39 v #9809 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:39 v #9810 > > //// test
00:07:39 v #9811 > > ///! rust -d clap
00:07:39 v #9812 > >
00:07:39 v #9813 > > ##"command"
00:07:39 v #9814 > > |> new_command
00:07:39 v #9815 > > |> command_init_arg ("trace-level", 't') (
00:07:39 v #9816 > >     real arg_union `trace_level ignore
00:07:39 v #9817 > > )
00:07:39 v #9818 > > |> command_get_matches_from ;[[ "_"; "--trace-level"; "Critical" ]]
00:07:39 v #9819 > > |> matches_get_one "trace-level"
00:07:39 v #9820 > > |> optionm'.unwrap
00:07:39 v #9821 > > |> sm'.from_std_string
00:07:39 v #9822 > > |> reflection.union_try_pick
00:07:39 v #9823 > > |> optionm.value
00:07:39 v #9824 > > |> _assert_eq Critical
00:07:45 v #9825 > >
00:07:45 v #9826 > > ── [ 5.73s - return value ] ────────────────────────────────────────────────────
00:07:45 v #9827 > > │ __assert_eq / actual: US1_4 / expected: US1_4
00:07:45 v #9828 > > │
00:07:45 v #9829 > >
00:07:45 v #9830 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:45 v #9831 > > │ ### command_debug_assert
00:07:45 v #9832 > >
00:07:45 v #9833 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:45 v #9834 > > inl command_debug_assert (command : command) : () =
00:07:45 v #9835 > >     !\\(command, $'"clap::Command::debug_assert($0)"')
00:07:45 v #9836 > >
00:07:45 v #9837 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:45 v #9838 > > │ ## fsharp
00:07:45 v #9839 > >
00:07:45 v #9840 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:45 v #9841 > > │ ### process
00:07:45 v #9842 > >
00:07:45 v #9843 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:45 v #9844 > > nominal process = $'System.Diagnostics.Process'
00:07:45 v #9845 > >
00:07:45 v #9846 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:45 v #9847 > > │ ### process_start_info
00:07:45 v #9848 > >
00:07:45 v #9849 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:45 v #9850 > > nominal process_start_info = $'System.Diagnostics.ProcessStartInfo'
00:07:45 v #9851 > >
00:07:45 v #9852 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:45 v #9853 > > │ ### data_received_event_args
00:07:45 v #9854 > >
00:07:45 v #9855 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:45 v #9856 > > nominal data_received_event_args = $'System.Diagnostics.DataReceivedEventArgs'
00:07:46 v #9857 > >
00:07:46 v #9858 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:46 v #9859 > > │ ### new_process
00:07:46 v #9860 > >
00:07:46 v #9861 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:46 v #9862 > > inl new_process (process_start_info : process_start_info) : process =
00:07:46 v #9863 > >     $'new `process (StartInfo = !process_start_info)'
00:07:46 v #9864 > >
00:07:46 v #9865 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:46 v #9866 > > │ ### process_start
00:07:46 v #9867 > >
00:07:46 v #9868 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:46 v #9869 > > inl process_start (process : process) : bool =
00:07:46 v #9870 > >     $'!process.Start' ()
00:07:46 v #9871 > >
00:07:46 v #9872 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:46 v #9873 > > │ ### process_exit_code
00:07:46 v #9874 > >
00:07:46 v #9875 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:46 v #9876 > > inl process_exit_code (process : process) : i32 =
00:07:46 v #9877 > >     run_target function
00:07:46 v #9878 > >         | Fsharp (Native) => fun () => $'!process.ExitCode'
00:07:46 v #9879 > >         | _ => fun () => null ()
00:07:46 v #9880 > >
00:07:46 v #9881 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:46 v #9882 > > │ ### process_id
00:07:46 v #9883 > >
00:07:46 v #9884 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:46 v #9885 > > let process_id (process : process) : i32 =
00:07:46 v #9886 > >     run_target function
00:07:46 v #9887 > >         | Fsharp (Native) => fun () => process |> $'_.Id'
00:07:46 v #9888 > >         | _ => fun () => null ()
00:07:46 v #9889 > >
00:07:46 v #9890 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:46 v #9891 > > │ ### process_has_exited
00:07:46 v #9892 > >
00:07:46 v #9893 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:46 v #9894 > > let process_has_exited (process : process) : bool =
00:07:46 v #9895 > >     run_target function
00:07:46 v #9896 > >         | Fsharp (Native) => fun () => process |> $'_.HasExited'
00:07:46 v #9897 > >         | _ => fun () => null ()
00:07:46 v #9898 > >
00:07:46 v #9899 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:46 v #9900 > > │ ### process_kill
00:07:46 v #9901 > >
00:07:46 v #9902 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:46 v #9903 > > let process_kill (process : process) : () =
00:07:46 v #9904 > >     run_target function
00:07:46 v #9905 > >         | Fsharp (Native) => fun () => process |> $'_.Kill()'
00:07:46 v #9906 > >         | _ => fun () => ()
00:07:47 v #9907 > >
00:07:47 v #9908 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:47 v #9909 > > │ ### process_begin_error_read_line
00:07:47 v #9910 > >
00:07:47 v #9911 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:47 v #9912 > > inl process_begin_error_read_line (process : process) : () =
00:07:47 v #9913 > >     process |> $'_.BeginErrorReadLine()'
00:07:47 v #9914 > >
00:07:47 v #9915 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:47 v #9916 > > │ ### process_begin_output_read_line
00:07:47 v #9917 > >
00:07:47 v #9918 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:47 v #9919 > > inl process_begin_output_read_line (process : process) : () =
00:07:47 v #9920 > >     process |> $'_.BeginOutputReadLine()'
00:07:47 v #9921 > >
00:07:47 v #9922 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:47 v #9923 > > │ ### process_add_output_data_received
00:07:47 v #9924 > >
00:07:47 v #9925 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:47 v #9926 > > inl process_add_output_data_received fn (process : process) : () =
00:07:47 v #9927 > >     $'!process.OutputDataReceived.Add !fn '
00:07:47 v #9928 > >
00:07:47 v #9929 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:47 v #9930 > > │ ### process_add_error_data_received
00:07:47 v #9931 > >
00:07:47 v #9932 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:47 v #9933 > > inl process_add_error_data_received fn (process : process) : () =
00:07:47 v #9934 > >     $'!process.ErrorDataReceived.Add !fn '
00:07:47 v #9935 > >
00:07:47 v #9936 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:47 v #9937 > > │ ### process_wait_for_exit_async
00:07:47 v #9938 > >
00:07:47 v #9939 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:47 v #9940 > > inl process_wait_for_exit_async (ct : threading.cancellation_token) (process :
00:07:47 v #9941 > > process) : async.task () =
00:07:47 v #9942 > >     run_target function
00:07:47 v #9943 > >         | Fsharp (Native) => fun () => $'!process.WaitForExitAsync !ct '
00:07:47 v #9944 > >         | _ => fun () => null ()
00:07:47 v #9945 > >
00:07:47 v #9946 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:47 v #9947 > > │ ### event_data
00:07:47 v #9948 > >
00:07:47 v #9949 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:47 v #9950 > > let event_data (e : data_received_event_args) : string =
00:07:47 v #9951 > >     run_target function
00:07:47 v #9952 > >         | Fsharp (Native) => fun () => e |> $'_.Data'
00:07:47 v #9953 > >         | _ => fun () => null ()
00:07:48 v #9954 > >
00:07:48 v #9955 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:48 v #9956 > > │ ### execute_with_options_async
00:07:48 v #9957 > >
00:07:48 v #9958 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:48 v #9959 > > let execute_with_options_async (options : execution_options) : _ (int * string)
00:07:48 v #9960 > > =
00:07:48 v #9961 > >     fun () =>
00:07:48 v #9962 > >         run_target_args (fun () => options) function
00:07:48 v #9963 > >             | Fsharp (Native) => fun options =>
00:07:48 v #9964 > >                 inl file_name, arguments = options.command |> split_command |>
00:07:48 v #9965 > > resultm.get
00:07:48 v #9966 > >                 inl working_directory =
00:07:48 v #9967 > >                     options.working_directory |> optionm'.unbox |>
00:07:48 v #9968 > > optionm'.default_value ""
00:07:48 v #9969 > >                 trace Debug
00:07:48 v #9970 > >                     fun () => "runtime.execute_with_options_async"
00:07:48 v #9971 > >                     fun () => { file_name arguments options }
00:07:48 v #9972 > >                 inl utf8 = sm'.encoding_utf8 ()
00:07:48 v #9973 > >                 inl arguments = arguments |> optionm'.default_value ""
00:07:48 v #9974 > >                 $'let start_info = System.Diagnostics.ProcessStartInfo ('
00:07:48 v #9975 > >                 $'  Arguments = !arguments,'
00:07:48 v #9976 > >                 $'  StandardOutputEncoding = !utf8,'
00:07:48 v #9977 > >                 $'  WorkingDirectory = !working_directory,'
00:07:48 v #9978 > >                 $'  FileName = !file_name,'
00:07:48 v #9979 > >                 $'  CreateNoWindow = true,'
00:07:48 v #9980 > >                 $'  RedirectStandardError = true,'
00:07:48 v #9981 > >                 $'  RedirectStandardOutput = true,'
00:07:48 v #9982 > >                 $'  UseShellExecute = false'
00:07:48 v #9983 > >                 $')'
00:07:48 v #9984 > >                 inl start_info : process_start_info = $'start_info'
00:07:48 v #9985 > >                 inl environment_variables = join options.environment_variables
00:07:48 v #9986 > >                 (a environment_variables : _ i32 _)
00:07:48 v #9987 > >                 |> am.iter fun key, value =>
00:07:48 v #9988 > >                     $'!start_info.EnvironmentVariables.[[!key]] <- !value '
00:07:48 v #9989 > >                 inl proc = start_info |> new_process |> use
00:07:48 v #9990 > >                 inl output : _ string = threading.new_concurrent_stack ()
00:07:48 v #9991 > >                 let event error (e : data_received_event_args) =
00:07:48 v #9992 > >                     fun () =>
00:07:48 v #9993 > >                         inl data = e |> event_data
00:07:48 v #9994 > >                         if data <> null () then
00:07:48 v #9995 > >                             match options.on_line |> optionm'.unbox with
00:07:48 v #9996 > >                             | Some on_line =>
00:07:48 v #9997 > >                                 on_line {
00:07:48 v #9998 > >                                     process_id = proc |> process_id
00:07:48 v #9999 > >                                     line = data
00:07:48 v #10000 > >                                     error = error
00:07:48 v #10001 > >                                 }
00:07:48 v #10002 > >                                 |> async.do
00:07:48 v #10003 > >                             | None => ()
00:07:48 v #10004 > >                             inl text =
00:07:48 v #10005 > >                                 if error
00:07:48 v #10006 > >                                 then $'$"\! {!data}"'
00:07:48 v #10007 > >                                 else $'$"> {!data}"'
00:07:48 v #10008 > >                             if options.trace
00:07:48 v #10009 > >                             then trace Verbose (fun () => text) id
00:07:48 v #10010 > >                             else text |> console.write_line
00:07:48 v #10011 > >                             inl l = if error then $'"\\u001b[[7;4m"' else ""
00:07:48 v #10012 > >                             inl r = if error then $'"\\u001b[[0m"' else ""
00:07:48 v #10013 > >                             output |> threading.concurrent_stack_push
00:07:48 v #10014 > > $'$"{!l}{!data}{!r}"'
00:07:48 v #10015 > >                     |> async.new_async
00:07:48 v #10016 > >                 proc |> process_add_output_data_received (event false >>
00:07:48 v #10017 > > async.start_immediate)
00:07:48 v #10018 > >                 proc |> process_add_error_data_received (event true >>
00:07:48 v #10019 > > async.start_immediate)
00:07:48 v #10020 > >                 if proc |> process_start |> not
00:07:48 v #10021 > >                 then failwith $'$"runtime.execute_with_options_async
00:07:48 v #10022 > > process_start error"'
00:07:48 v #10023 > >                 proc |> process_begin_error_read_line
00:07:48 v #10024 > >                 proc |> process_begin_output_read_line
00:07:48 v #10025 > >                 inl ct =
00:07:48 v #10026 > >                     options.cancellation_token
00:07:48 v #10027 > >                     |> optionm'.unbox
00:07:48 v #10028 > >                     |> optionm'.default_with threading.token_none
00:07:48 v #10029 > >                     |> async.merge_cancellation_token_with_default_async
00:07:48 v #10030 > >                     |> async.let'
00:07:48 v #10031 > >                 ct |> threading.token_register fun () =>
00:07:48 v #10032 > >                     if proc |> process_has_exited |> not
00:07:48 v #10033 > >                     then proc |> process_kill
00:07:48 v #10034 > >                 |> use
00:07:48 v #10035 > >                 |> ignore
00:07:48 v #10036 > >                 inl exit_code : i32 =
00:07:48 v #10037 > >                     fun () =>
00:07:48 v #10038 > >                         try_unit
00:07:48 v #10039 > >                             fun () =>
00:07:48 v #10040 > >                                 proc
00:07:48 v #10041 > >                                 |> process_wait_for_exit_async ct
00:07:48 v #10042 > >                                 |> async.await_task
00:07:48 v #10043 > >                                 |> async.do
00:07:48 v #10044 > >                                 proc |> process_exit_code |> return
00:07:48 v #10045 > >                             fun ex =>
00:07:48 v #10046 > >                                 // with :?
00:07:48 v #10047 > > System.Threading.Tasks.TaskCanceledException as ex =>
00:07:48 v #10048 > >                                 inl ex = ex ()
00:07:48 v #10049 > >                                 inl ex' = ex |> sm'.format_exception
00:07:48 v #10050 > >                                 output |> threading.concurrent_stack_push ex'
00:07:48 v #10051 > >                                 inl ex : async.task_canceled_exception = ex |>
00:07:48 v #10052 > > unbox
00:07:48 v #10053 > >                                 trace Warning
00:07:48 v #10054 > >                                     fun () =>
00:07:48 v #10055 > > "runtime.execute_with_options_async / WaitForExitAsync"
00:07:48 v #10056 > >                                     fun () => { ex }
00:07:48 v #10057 > >                                 (limit.min : i32) |> return
00:07:48 v #10058 > >                     |> async.new_async_unit
00:07:48 v #10059 > >                     |> async.let'
00:07:48 v #10060 > >                 inl output =
00:07:48 v #10061 > >                     output
00:07:48 v #10062 > >                     |> seq.cast'
00:07:48 v #10063 > >                     |> seq.rev''
00:07:48 v #10064 > >                     |> fun x => x : seq.seq' string
00:07:48 v #10065 > >                     |> sm'.concat "\n"
00:07:48 v #10066 > >                 trace Debug
00:07:48 v #10067 > >                     fun () => "runtime.execute_with_options_async"
00:07:48 v #10068 > >                     fun () => { exit_code output_length = output |> sm'.length :
00:07:48 v #10069 > > i32 }
00:07:48 v #10070 > >                 (exit_code, output) |> return
00:07:48 v #10071 > >             | _ => fun _ =>
00:07:48 v #10072 > >                 global "#if FABLE_COMPILER\n[[<CompilationRepresentation
00:07:48 v #10073 > > (CompilationRepresentationFlags.ModuleSuffix)>]]\nmodule System =\n module
00:07:48 v #10074 > > Diagnostics =\n  type Process = bool\n  type DataReceivedEventArgs =
00:07:48 v #10075 > > bool\n#endif"
00:07:48 v #10076 > >                 (null () : int * string) |> return
00:07:48 v #10077 > >     |> async.new_async_unit
00:07:48 v #10078 > >
00:07:48 v #10079 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:48 v #10080 > > │ ### execute_async
00:07:48 v #10081 > >
00:07:48 v #10082 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:48 v #10083 > > let execute_async command =
00:07:48 v #10084 > >     execution_options fun x => { x with
00:07:48 v #10085 > >         command = command
00:07:48 v #10086 > >     }
00:07:48 v #10087 > >     |> execute_with_options_async
00:07:48 v #10088 > >
00:07:48 v #10089 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:48 v #10090 > > //// test
00:07:48 v #10091 > >
00:07:48 v #10092 > > inl content = "╭─[[ 你好,世界!こんにちは世界! ]]─╮"
00:07:48 v #10093 > > fun () =>
00:07:48 v #10094 > >     inl file_name = "test.txt"
00:07:48 v #10095 > >     inl temp_dir, disposable =
00:07:48 v #10096 > >         (file_name, content)
00:07:48 v #10097 > >         |> sm'.format_debug
00:07:48 v #10098 > >         |> crypto.hash_text
00:07:48 v #10099 > >         |> file_system.create_temp_dir'
00:07:48 v #10100 > >     disposable |> use |> ignore
00:07:48 v #10101 > >
00:07:48 v #10102 > >     inl path = temp_dir </> file_name
00:07:48 v #10103 > >
00:07:48 v #10104 > >     inl exit_code, result = execute_async $'\@$"pwsh -c ""Get-Content
00:07:48 v #10105 > > {!path}"""' |> async.let'
00:07:48 v #10106 > >     exit_code |> join _assert_eq 1
00:07:48 v #10107 > >     result |> _assert sm'.contains "not exist"
00:07:48 v #10108 > >
00:07:48 v #10109 > >     content |> file_system.write_all_text_async path |> async.do
00:07:48 v #10110 > >
00:07:48 v #10111 > >     execution_options fun x => { x with
00:07:48 v #10112 > >         command = $'\@$"cat ""{!file_name}"""'
00:07:48 v #10113 > >         working_directory = Some temp_dir |> optionm'.box
00:07:48 v #10114 > >     }
00:07:48 v #10115 > >     |> execute_with_options_async
00:07:48 v #10116 > >     |> async.let'
00:07:48 v #10117 > >     |> ignore
00:07:48 v #10118 > >
00:07:48 v #10119 > >     execution_options fun x => { x with
00:07:48 v #10120 > >         command = $'\@$"pwsh -c ""[[System.Console]]::OutputEncoding =
00:07:48 v #10121 > > [[System.Text.Encoding]]::UTF8; Get-Content {!file_name}"""'
00:07:48 v #10122 > >         working_directory = Some temp_dir |> optionm'.box
00:07:48 v #10123 > >     }
00:07:48 v #10124 > >     |> execute_with_options_async
00:07:48 v #10125 > >     |> async.return_await
00:07:48 v #10126 > > |> async.new_async_unit
00:07:48 v #10127 > > |> async.run_with_timeout 10000
00:07:48 v #10128 > > |> function
00:07:48 v #10129 > >     | Some (exit_code, output) =>
00:07:48 v #10130 > >         exit_code |> join _assert_eq 0i32
00:07:48 v #10131 > >         output |> join _assert_eq content
00:07:48 v #10132 > >         true
00:07:48 v #10133 > >     | _ => false
00:07:48 v #10134 > > |> _assert_eq true
00:07:59 v #10135 > >
00:07:59 v #10136 > > ── [ 10.62s - stdout ] ─────────────────────────────────────────────────────────
00:07:59 v #10137 > > │ 00:00:00 d #1 runtime.execute_with_options_async / {
00:07:59 v #10138 > > file_name = pwsh; arguments = US2_0
00:07:59 v #10139 > > │   "-c "Get-Content
00:07:59 v #10140 > > /tmp/!create_temp_path_/dotnet-repl/76793606-813b-88ad-7791-7ce2871edce9/test.tx
00:07:59 v #10141 > > t""; options = { command = pwsh -c "Get-Content
00:07:59 v #10142 > > /tmp/!create_temp_path_/dotnet-repl/76793606-813b-88ad-7791-7ce2871edce9/test.tx
00:07:59 v #10143 > > t"; cancellation_token = None; environment_variables = [||]; on_line = None;
00:07:59 v #10144 > > stdin = None; trace = true; working_directory = None } }
00:07:59 v #10145 > > │ 00:00:00 v #2 ! Get-Content: Cannot find path
00:07:59 v #10146 > > '/tmp/!create_temp_path_/dotnet-repl/76793606-813b-88ad-7791-7ce2871edce9/test.t
00:07:59 v #10147 > > xt' because it does not exist.
00:07:59 v #10148 > > │ 00:00:00 d #3 runtime.execute_with_options_async / {
00:07:59 v #10149 > > exit_code = 1; output_length = 168 }
00:07:59 v #10150 > > │ __assert_eq / actual: 1 / expected: 1
00:07:59 v #10151 > > │ __assert / actual: "not exist" / expected:
00:07:59 v #10152 > > "Get-Content: Cannot find path
00:07:59 v #10153 > > '/tmp/!create_temp_path_/dotnet-repl/76793606-813b-88ad-7791-7ce2871edce9/test.t
00:07:59 v #10154 > > xt' because it does not exist."
00:07:59 v #10155 > > │ 00:00:00 d #4 runtime.execute_with_options_async / {
00:07:59 v #10156 > > file_name = cat; arguments = US2_0 ""test.txt""; options = { command = cat
00:07:59 v #10157 > > "test.txt"; cancellation_token = None; environment_variables = [||]; on_line =
00:07:59 v #10158 > > None; stdin = None; trace = true; working_directory = Some
00:07:59 v #10159 > > "/tmp/!create_temp_path_/dotnet-repl/76793606-813b-88ad-7791-7ce2871edce9" } }
00:07:59 v #10160 > > │ 00:00:00 v #5 > ╭─[ 你好,世界!こんにちは世界! ]─╮
00:07:59 v #10161 > > │ 00:00:00 d #6 runtime.execute_with_options_async / {
00:07:59 v #10162 > > exit_code = 0; output_length = 22 }
00:07:59 v #10163 > > │ 00:00:00 d #7 runtime.execute_with_options_async / {
00:07:59 v #10164 > > file_name = pwsh; arguments = US2_0
00:07:59 v #10165 > > │   "-c "[System.Console]::OutputEncoding =
00:07:59 v #10166 > > [System.Text.Encoding]::UTF8; Get-Content test.txt""; options = { command = pwsh
00:07:59 v #10167 > > -c "[System.Console]::OutputEncoding = [System.Text.Encoding]::UTF8; Get-Content
00:07:59 v #10168 > > test.txt"; cancellation_token = None; environment_variables = [||]; on_line =
00:07:59 v #10169 > > None; stdin = None; trace = true; working_directory = Some
00:07:59 v #10170 > > "/tmp/!create_temp_path_/dotnet-repl/76793606-813b-88ad-7791-7ce2871edce9" } }
00:07:59 v #10171 > > │ 00:00:00 v #8 > ╭─[ 你好,世界!こんにちは世界! ]─╮
00:07:59 v #10172 > > │ 00:00:00 d #9 runtime.execute_with_options_async / {
00:07:59 v #10173 > > exit_code = 0; output_length = 22 }
00:07:59 v #10174 > > │ __assert_eq / actual: 0 / expected: 0
00:07:59 v #10175 > > │ __assert_eq / actual: "╭─[ 你好,世界!こんにちは世界! ]─╮"
00:07:59 v #10176 > > / expected: "╭─[ 你好,世界!こんにちは世界! ]─╮"
00:07:59 v #10177 > > │ __assert_eq / actual: true / expected: true
00:07:59 v #10178 > > │
00:07:59 v #10179 > >
00:07:59 v #10180 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:59 v #10181 > > //// test
00:07:59 v #10182 > >
00:07:59 v #10183 > > fun () =>
00:07:59 v #10184 > >     inl file_name = "test.txt"
00:07:59 v #10185 > >     inl text = "0"
00:07:59 v #10186 > >
00:07:59 v #10187 > >     inl temp_dir, disposable =
00:07:59 v #10188 > >         (file_name, text)
00:07:59 v #10189 > >         |> sm'.format_debug
00:07:59 v #10190 > >         |> crypto.hash_text
00:07:59 v #10191 > >         |> file_system.create_temp_dir'
00:07:59 v #10192 > >     disposable |> use |> ignore
00:07:59 v #10193 > >     inl path = temp_dir </> file_name
00:07:59 v #10194 > >     text |> file_system.write_all_text_async path |> async.do
00:07:59 v #10195 > >
00:07:59 v #10196 > >     inl cts = threading.new_cancellation_token_source ()
00:07:59 v #10197 > >     trace Debug (fun () => "1") id
00:07:59 v #10198 > >     inl result =
00:07:59 v #10199 > >         execution_options fun x => { x with
00:07:59 v #10200 > >             command = $'\@$"pwsh -c ""Get-Content {!path}"""'
00:07:59 v #10201 > >             cancellation_token = cts |> threading.cancellation_source_token |>
00:07:59 v #10202 > > Some |> optionm'.box
00:07:59 v #10203 > >         }
00:07:59 v #10204 > >         |> execute_with_options_async
00:07:59 v #10205 > >         |> async.start_child
00:07:59 v #10206 > >         |> async.let'
00:07:59 v #10207 > >     trace Debug (fun () => "2") id
00:07:59 v #10208 > >     async.sleep 100 |> async.do
00:07:59 v #10209 > >     trace Debug (fun () => "3") id
00:07:59 v #10210 > >     cts |> threading.cancellation_source_cancel
00:07:59 v #10211 > >     trace Debug (fun () => "4") id
00:07:59 v #10212 > >     inl exit_code, output = result |> async.let'
00:07:59 v #10213 > >     trace Debug (fun () => "5") id
00:07:59 v #10214 > >     (exit_code, output) |> return
00:07:59 v #10215 > > |> async.new_async_unit
00:07:59 v #10216 > > |> async.run_with_timeout 10000
00:07:59 v #10217 > > |> function
00:07:59 v #10218 > >     | Some (exit_code, output) =>
00:07:59 v #10219 > >         exit_code |> _assert_eq -2147483648i32
00:07:59 v #10220 > >         output |> _assert_eq (join
00:07:59 v #10221 > > "System.Threading.Tasks.TaskCanceledException: A task was canceled.")
00:07:59 v #10222 > >         true
00:07:59 v #10223 > >     | _ => false
00:07:59 v #10224 > > |> _assert_eq true
00:08:09 v #10225 > >
00:08:09 v #10226 > > ── [ 10.57s - stdout ] ─────────────────────────────────────────────────────────
00:08:09 v #10227 > > │ 00:00:00 d #1 1
00:08:09 v #10228 > > │ 00:00:00 d #2 2
00:08:09 v #10229 > > │ 00:00:00 d #3 runtime.execute_with_options_async / {
00:08:09 v #10230 > > file_name = pwsh; arguments = US2_0
00:08:09 v #10231 > > │   "-c "Get-Content
00:08:09 v #10232 > > /tmp/!create_temp_path_/dotnet-repl/613830ed-016e-d959-8d21-02dc1c63c252/test.tx
00:08:09 v #10233 > > t""; options = { command = pwsh -c "Get-Content
00:08:09 v #10234 > > /tmp/!create_temp_path_/dotnet-repl/613830ed-016e-d959-8d21-02dc1c63c252/test.tx
00:08:09 v #10235 > > t"; cancellation_token = Some System.Threading.CancellationToken;
00:08:09 v #10236 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:08:09 v #10237 > > working_directory = None } }
00:08:09 v #10238 > > │ 00:00:00 d #4 3
00:08:09 v #10239 > > │ 00:00:00 d #5 4
00:08:09 v #10240 > > │ 00:00:00 w #6 runtime.execute_with_options_async
00:08:09 v #10241 > > WaitForExitAsync / { ex = System.Threading.Tasks.TaskCanceledException: A task
00:08:09 v #10242 > > was canceled. }
00:08:09 v #10243 > > │ 00:00:00 d #7 runtime.execute_with_options_async / {
00:08:09 v #10244 > > exit_code = -2147483648; output_length = 66 }
00:08:09 v #10245 > > │ 00:00:00 d #8 5
00:08:09 v #10246 > > │ __assert_eq / actual: -2147483648 / expected: -2147483648
00:08:09 v #10247 > > │ __assert_eq / actual:
00:08:09 v #10248 > > "System.Threading.Tasks.TaskCanceledException: A task was canceled." / expected:
00:08:09 v #10249 > > "System.Threading.Tasks.TaskCanceledException: A task was canceled."
00:08:09 v #10250 > > │ __assert_eq / actual: true / expected: true
00:08:09 v #10251 > > │
00:08:09 v #10252 > >
00:08:09 v #10253 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:09 v #10254 > > │ ### current_process_kill
00:08:09 v #10255 > >
00:08:09 v #10256 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:09 v #10257 > > let current_process_kill () =
00:08:09 v #10258 > >     run_target function
00:08:09 v #10259 > >         | Fsharp (Native) => fun () =>
00:08:09 v #10260 > >             inl fn () =
00:08:09 v #10261 > >                 run_target function
00:08:09 v #10262 > >                     | Fsharp (Native) => fun () =>
00:08:09 v #10263 > >                         trace Warning (fun () => "runtime.current_process_kill
00:08:09 v #10264 > > exiting... 3") id
00:08:09 v #10265 > >                         $'System.Threading.Thread.Sleep 300'
00:08:09 v #10266 > >                         trace Warning (fun () => "runtime.current_process_kill
00:08:09 v #10267 > > exiting... 2") id
00:08:09 v #10268 > >                         $'System.Console.Out.Flush ()'
00:08:09 v #10269 > >                         $'System.Threading.Thread.Sleep 60'
00:08:09 v #10270 > >                         trace Warning (fun () => "runtime.current_process_kill
00:08:09 v #10271 > > exiting... 1") id
00:08:09 v #10272 > >                         $'System.Diagnostics.Process.GetCurrentProcess().Kill
00:08:09 v #10273 > > ()' : ()
00:08:09 v #10274 > >                     | _ => fun () => ()
00:08:09 v #10275 > >             inl thread : threading.thread = $'new System.Threading.Thread (!fn)'
00:08:09 v #10276 > >             thread |> $'_.Start()' : ()
00:08:09 v #10277 > >         | _ => fun () => ()
00:08:09 v #10278 > >
00:08:09 v #10279 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:09 v #10280 > > │ ### gc_collect
00:08:09 v #10281 > >
00:08:09 v #10282 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:09 v #10283 > > inl gc_collect () =
00:08:09 v #10284 > >     run_target function
00:08:09 v #10285 > >         | Fsharp _ => fun () => $'System.GC.Collect' () : ()
00:08:09 v #10286 > >         | Python _ => fun () =>
00:08:09 v #10287 > >             backend_switch {
00:08:09 v #10288 > >                 Python = fun () => global "import gc"
00:08:09 v #10289 > >             }
00:08:09 v #10290 > >             ($'gc.collect()' : int) |> ignore
00:08:09 v #10291 > >         | _ => fun () => ()
00:08:10 v #10292 > >
00:08:10 v #10293 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:10 v #10294 > > │ ## runtime
00:08:10 v #10295 > >
00:08:10 v #10296 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:10 v #10297 > > │ ### execute_with_options
00:08:10 v #10298 > >
00:08:10 v #10299 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:10 v #10300 > > let execute_with_options (options : execution_options) : i32 * string =
00:08:10 v #10301 > >     run_target_args' options function
00:08:10 v #10302 > >         | Fsharp (Native) => fun options =>
00:08:10 v #10303 > >             options |> execute_with_options_async |> async.run_synchronously
00:08:10 v #10304 > >         | Rust (Native) => fun options =>
00:08:10 v #10305 > >             inl command = join options.command
00:08:10 v #10306 > >             inl file_name, arguments = command |> split_command |> resultm.get
00:08:10 v #10307 > >             inl arguments =
00:08:10 v #10308 > >                 arguments
00:08:10 v #10309 > >                 |> optionm'.default_value ""
00:08:10 v #10310 > >                 |> split_args
00:08:10 v #10311 > >                 |> resultm.get
00:08:10 v #10312 > >                 |> am'.to_vec
00:08:10 v #10313 > >                 |> am'.vec_map sm'.to_std_string
00:08:10 v #10314 > >             trace Debug
00:08:10 v #10315 > >                 fun () => "runtime.execute_with_options"
00:08:10 v #10316 > >                 fun () => { file_name arguments = arguments |> sm'.format_debug;
00:08:10 v #10317 > > options }
00:08:10 v #10318 > >             fun () =>
00:08:10 v #10319 > >                 fun () =>
00:08:10 v #10320 > >                     // inl new_command_mutex (command : rust.ref (rust.mut'
00:08:10 v #10321 > > process_command)) : threading.arc (threading.mutex process_command) =
00:08:10 v #10322 > >                         // ()
00:08:10 v #10323 > >                     file_name
00:08:10 v #10324 > >                     |> new_process_command
00:08:10 v #10325 > >                     |> process_command_args arguments
00:08:10 v #10326 > >                     |> process_command_stdout (process_stdio_piped ())
00:08:10 v #10327 > >                     |> process_command_stderr (process_stdio_piped ())
00:08:10 v #10328 > >                     |> process_command_stdin (process_stdio_piped ())
00:08:10 v #10329 > >                     // |> new_command_mutex
00:08:10 v #10330 > >                     |> fun command =>
00:08:10 v #10331 > >                         match options.working_directory |> optionm'.unbox with
00:08:10 v #10332 > >                         | Some working_directory =>
00:08:10 v #10333 > >                             command
00:08:10 v #10334 > >                             |> process_command_current_dir working_directory
00:08:10 v #10335 > >                         | None =>
00:08:10 v #10336 > >                             !\($'$"!command"')
00:08:10 v #10337 > >                             // |> rust.emit
00:08:10 v #10338 > >                     |> fun command =>
00:08:10 v #10339 > >                         match options.environment_variables with
00:08:10 v #10340 > >                         | ;[[]] => command
00:08:10 v #10341 > >                         | vars =>
00:08:10 v #10342 > >                             (command, vars |> am'.to_vec)
00:08:10 v #10343 > >                             ||> am'.vec_fold' fun command (key, value) =>
00:08:10 v #10344 > >                                 command |> process_command_env key value
00:08:10 v #10345 > >                     |> process_command_spawn
00:08:10 v #10346 > >                     |> resultm.map_error' sm'.format'
00:08:10 v #10347 > >                     |> resultm.map' (optionm'.some' >> (join id) >>
00:08:10 v #10348 > > threading.new_arc_mutex)
00:08:10 v #10349 > >                     |> resultm.unbox'
00:08:10 v #10350 > >                     |> function
00:08:10 v #10351 > >                         | Ok child =>
00:08:10 v #10352 > >                             inl stdout =
00:08:10 v #10353 > >                                 fun () =>
00:08:10 v #10354 > >                                     child
00:08:10 v #10355 > >                                     |> threading.arc_mutex_lock
00:08:10 v #10356 > >                                     |> resultm.unwrap'
00:08:10 v #10357 > >                                     |> threading.mutex_guard_ref_mut
00:08:10 v #10358 > >                                     |> optionm'.as_mut
00:08:10 v #10359 > >                                     |> optionm'.unwrap
00:08:10 v #10360 > >                                     |> process_child_stdout
00:08:10 v #10361 > >                                     |> optionm'.take_ref_mut
00:08:10 v #10362 > >                                     |> optionm'.unwrap
00:08:10 v #10363 > >                                 |> rust.capture
00:08:10 v #10364 > >                             inl stderr =
00:08:10 v #10365 > >                                 fun () =>
00:08:10 v #10366 > >                                     child
00:08:10 v #10367 > >                                     |> threading.arc_mutex_lock
00:08:10 v #10368 > >                                     |> resultm.unwrap'
00:08:10 v #10369 > >                                     |> threading.mutex_guard_ref_mut
00:08:10 v #10370 > >                                     |> optionm'.as_mut
00:08:10 v #10371 > >                                     |> optionm'.unwrap
00:08:10 v #10372 > >                                     |> process_child_stderr
00:08:10 v #10373 > >                                     |> optionm'.take_ref_mut
00:08:10 v #10374 > >                                     |> optionm'.unwrap
00:08:10 v #10375 > >                                 |> rust.capture
00:08:10 v #10376 > >                             inl stdin =
00:08:10 v #10377 > >                                 fun () =>
00:08:10 v #10378 > >                                     child
00:08:10 v #10379 > >                                     |> threading.arc_mutex_lock
00:08:10 v #10380 > >                                     |> resultm.unwrap'
00:08:10 v #10381 > >                                     |> threading.mutex_guard_ref_mut
00:08:10 v #10382 > >                                     |> optionm'.as_mut
00:08:10 v #10383 > >                                     |> optionm'.unwrap
00:08:10 v #10384 > >                                     |> process_child_stdin
00:08:10 v #10385 > >                                     |> optionm'.take_ref_mut
00:08:10 v #10386 > >                                     |> optionm'.unwrap
00:08:10 v #10387 > >                                     |> optionm'.some'
00:08:10 v #10388 > >                                     |> join id
00:08:10 v #10389 > >                                     |> threading.new_arc_mutex
00:08:10 v #10390 > >                                 |> rust.capture
00:08:10 v #10391 > >                             inl channel_sender, channel_receiver =
00:08:10 v #10392 > > threading.new_channel ()
00:08:10 v #10393 > >                             inl channel_sender'' = channel_sender |> (join id)
00:08:10 v #10394 > > |> threading.new_arc_mutex
00:08:10 v #10395 > >                             inl channel_sender' = channel_sender |> (join id) |>
00:08:10 v #10396 > > threading.new_arc_mutex
00:08:10 v #10397 > >                             inl channel_receiver' = channel_receiver |> (join
00:08:10 v #10398 > > id) |> threading.new_arc_mutex
00:08:10 v #10399 > >                             inl stdout_handle =
00:08:10 v #10400 > >                                 fun () =>
00:08:10 v #10401 > >                                     stdout
00:08:10 v #10402 > >                                     |> stream.decode_reader_bytes_build
00:08:10 v #10403 > >                                     |> stream.new_buf_reader
00:08:10 v #10404 > >                                     |> stream.buf_read_lines
00:08:10 v #10405 > >                                     |> iter.try_for_each fun lines =>
00:08:10 v #10406 > >                                         inl channel_sender'' = channel_sender''
00:08:10 v #10407 > > |> rust.clone
00:08:10 v #10408 > >                                         lines
00:08:10 v #10409 > >                                         |> stdio_line (Ok ()) options.trace
00:08:10 v #10410 > > channel_sender''
00:08:10 v #10411 > >                                         |> resultm.to_try
00:08:10 v #10412 > >                                 |> threading.spawn (1, 0) 1
00:08:10 v #10413 > >                             inl stderr_handle =
00:08:10 v #10414 > >                                 fun () =>
00:08:10 v #10415 > >                                     stderr
00:08:10 v #10416 > >                                     |> stream.decode_reader_bytes_build
00:08:10 v #10417 > >                                     |> stream.new_buf_reader
00:08:10 v #10418 > >                                     |> stream.buf_read_lines
00:08:10 v #10419 > >                                     |> iter.try_for_each fun lines =>
00:08:10 v #10420 > >                                         inl channel_sender' = channel_sender' |>
00:08:10 v #10421 > > rust.clone
00:08:10 v #10422 > >                                         lines
00:08:10 v #10423 > >                                         |> stdio_line (Error ()) options.trace
00:08:10 v #10424 > > channel_sender'
00:08:10 v #10425 > >                                         |> resultm.to_try
00:08:10 v #10426 > >                                 |> threading.spawn (1, 0) 1
00:08:10 v #10427 > >                             match options.stdin |> optionm'.unbox with
00:08:10 v #10428 > >                             | Some stdin' =>
00:08:10 v #10429 > >                                 stdin
00:08:10 v #10430 > >                                 |> threading.arc_mutex_lock
00:08:10 v #10431 > >                                 |> resultm.unwrap'
00:08:10 v #10432 > >                                 |> threading.mutex_guard_ref_mut
00:08:10 v #10433 > >                                 |> optionm'.take_ref_mut
00:08:10 v #10434 > >                                 |> optionm'.map' threading.new_arc_mutex
00:08:10 v #10435 > >                                 |> optionm'.unbox
00:08:10 v #10436 > >                                 |> function
00:08:10 v #10437 > >                                     | Some stdin =>
00:08:10 v #10438 > >                                         stdin |> stdin'
00:08:10 v #10439 > >                                         stdin
00:08:10 v #10440 > >                                         |> threading.arc_mutex_lock
00:08:10 v #10441 > >                                         |> resultm.unwrap'
00:08:10 v #10442 > >                                         |> stdin_flush
00:08:10 v #10443 > >                                     | None => ()
00:08:10 v #10444 > >                             | None => ()
00:08:10 v #10445 > >                             inl output =
00:08:10 v #10446 > >                                 child
00:08:10 v #10447 > >                                 |> threading.arc_mutex_lock
00:08:10 v #10448 > >                                 |> resultm.unwrap'
00:08:10 v #10449 > >                                 |> threading.mutex_guard_ref_mut
00:08:10 v #10450 > >                                 |> optionm'.take_ref_mut
00:08:10 v #10451 > >                                 |> optionm'.unwrap
00:08:10 v #10452 > >                                 |> child_wait_with_output
00:08:10 v #10453 > >                                 |> resultm.map_error' sm'.format'
00:08:10 v #10454 > >                             [[ stdout_handle; stderr_handle ]]
00:08:10 v #10455 > >                             |> am'.new_vec
00:08:10 v #10456 > >                             |> am'.vec_for_each' (threading.join' >>
00:08:10 v #10457 > > resultm.unwrap' >> resultm.unwrap')
00:08:10 v #10458 > >                             match output |> resultm.unbox with
00:08:10 v #10459 > >                             | Ok output =>
00:08:10 v #10460 > >                                 inl exit_code =
00:08:10 v #10461 > >                                     output
00:08:10 v #10462 > >                                     |> process_output_status
00:08:10 v #10463 > >                                     |> process_exit_status_code
00:08:10 v #10464 > >                                     |> optionm'.unbox
00:08:10 v #10465 > >                                 match exit_code with
00:08:10 v #10466 > >                                 | Some exit_code => exit_code, None, Some
00:08:10 v #10467 > > channel_receiver'
00:08:10 v #10468 > >                                 | None =>
00:08:10 v #10469 > >                                     -1,
00:08:10 v #10470 > >                                     ("runtime.execute_with_options
00:08:10 v #10471 > > exit_code=None" |> sm'.to_std_string |> Some),
00:08:10 v #10472 > >                                     Some channel_receiver'
00:08:10 v #10473 > >                             | Error error =>
00:08:10 v #10474 > >                                 trace Critical
00:08:10 v #10475 > >                                     fun () => "runtime.execute_with_options
00:08:10 v #10476 > > output error"
00:08:10 v #10477 > >                                     fun () => { error }
00:08:10 v #10478 > >                                 -2i32, error |> Some, None
00:08:10 v #10479 > >                         | Error error =>
00:08:10 v #10480 > >                             trace Critical
00:08:10 v #10481 > >                                 fun () => "runtime.execute_with_options / child
00:08:10 v #10482 > > error"
00:08:10 v #10483 > >                                 fun () => { error }
00:08:10 v #10484 > >                             -1i32, error |> Some, None
00:08:10 v #10485 > >                     |> function
00:08:10 v #10486 > >                         | exit_code, std_trace, channel_receiver =>
00:08:10 v #10487 > >                             inl std_trace =
00:08:10 v #10488 > >                                 channel_receiver
00:08:10 v #10489 > >                                 |> optionm'.box
00:08:10 v #10490 > >                                 |> optionm'.map' fun channel_receiver =>
00:08:10 v #10491 > >                                     channel_receiver
00:08:10 v #10492 > >                                     |> threading.arc_mutex_lock
00:08:10 v #10493 > >                                     |> resultm.unwrap'
00:08:10 v #10494 > >                                     |> iter.iter
00:08:10 v #10495 > >                                     |> iter_collect''
00:08:10 v #10496 > >                                     |> am'.vec_map sm'.from_std_string
00:08:10 v #10497 > >                                     |> am'.from_vec
00:08:10 v #10498 > >                                     |> fun x => x : _ i32 _
00:08:10 v #10499 > >                                     |> seq.of_array
00:08:10 v #10500 > >                                     |> sm'.concat "\n"
00:08:10 v #10501 > >                                 |> optionm'.default_value' (
00:08:10 v #10502 > >                                     std_trace
00:08:10 v #10503 > >                                     |> optionm.map sm'.from_std_string
00:08:10 v #10504 > >                                     |> optionm'.default_value ""
00:08:10 v #10505 > >                                 )
00:08:10 v #10506 > >                             trace Verbose
00:08:10 v #10507 > >                                 fun () => "runtime.execute_with_options
00:08:10 v #10508 > > result"
00:08:10 v #10509 > >                                 fun () => { exit_code std_trace_length =
00:08:10 v #10510 > > std_trace |> sm'.length : i32 }
00:08:10 v #10511 > >                             new_pair exit_code std_trace
00:08:10 v #10512 > >                 |> capture
00:08:10 v #10513 > >             // |> async.new_future_move
00:08:10 v #10514 > >             // |> async.block_on
00:08:10 v #10515 > >             |> fun x => x ()
00:08:10 v #10516 > >             |> from_pair
00:08:10 v #10517 > >         | _ => fun _ => null ()
00:08:10 v #10518 > >
00:08:10 v #10519 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:10 v #10520 > > │ #### execute
00:08:10 v #10521 > >
00:08:10 v #10522 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:10 v #10523 > > let execute command =
00:08:10 v #10524 > >     execution_options fun x => { x with
00:08:10 v #10525 > >         command = command
00:08:10 v #10526 > >     }
00:08:10 v #10527 > >     |> execute_with_options
00:08:10 v #10528 > >
00:08:10 v #10529 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:10 v #10530 > > │ #### tests
00:08:10 v #10531 > >
00:08:10 v #10532 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:10 v #10533 > > //// test
00:08:10 v #10534 > > ///! rust -d chrono encoding_rs encoding_rs_io regex sha2
00:08:10 v #10535 > >
00:08:10 v #10536 > > inl content = "╭─[[ 你好,世界!こんにちは世界! ]]─╮"
00:08:10 v #10537 > >
00:08:10 v #10538 > > inl file_name = join "test.txt"
00:08:10 v #10539 > > inl temp_dir, disposable =
00:08:10 v #10540 > >     (file_name, content)
00:08:10 v #10541 > >     |> sm'.format_debug
00:08:10 v #10542 > >     |> crypto.hash_text
00:08:10 v #10543 > >     |> file_system.create_temp_dir'
00:08:10 v #10544 > > disposable |> use |> ignore
00:08:10 v #10545 > > inl path = temp_dir </> file_name |> file_system.normalize_path
00:08:10 v #10546 > > inl exit_code, result =
00:08:10 v #10547 > >     execute $'\@$"pwsh -c ""[[IO.File]]::ReadAllText(\'{!path}\')"""'
00:08:10 v #10548 > > exit_code |> _assert_eq 1
00:08:10 v #10549 > > result |> _assert sm'.contains "not find file"
00:08:10 v #10550 > >
00:08:10 v #10551 > > content |> file_system.write_all_text path
00:08:10 v #10552 > >
00:08:10 v #10553 > > execution_options fun x => { x with
00:08:10 v #10554 > >     command = $'\@$"cat ""{!file_name}"""'
00:08:10 v #10555 > >     working_directory = Some temp_dir |> optionm'.box
00:08:10 v #10556 > > }
00:08:10 v #10557 > > |> execute_with_options
00:08:10 v #10558 > > |> ignore
00:08:10 v #10559 > >
00:08:10 v #10560 > > inl exit_code, output =
00:08:10 v #10561 > >     execution_options fun x => { x with
00:08:10 v #10562 > >         command = $'\@$"pwsh -c ""[[System.Console]]::OutputEncoding =
00:08:10 v #10563 > > [[System.Text.Encoding]]::UTF8; [[IO.File]]::ReadAllText(\'{!file_name}\')"""'
00:08:10 v #10564 > >         working_directory = Some temp_dir |> optionm'.box
00:08:10 v #10565 > >     }
00:08:10 v #10566 > >     |> execute_with_options
00:08:10 v #10567 > >
00:08:10 v #10568 > > exit_code |> _assert_eq 0i32
00:08:10 v #10569 > > output |> _assert_eq content
00:08:33 v #10570 > >
00:08:33 v #10571 > > ── [ 23.04s - return value ] ───────────────────────────────────────────────────
00:08:33 v #10572 > > │ 00:00:00 v #1 file_system.create_dir / { dir =
00:08:33 v #10573 > > /tmp/!create_temp_path_/spiral_48a2305935f69fb96eca24f75e31d0c8a2d2a57dbb75b58d9
00:08:33 v #10574 > > e053831e2b27f39/9242780b-ce0e-9155-5e07-f6ee5667aa16 }
00:08:33 v #10575 > > │ 00:00:00 d #2 runtime.execute_with_options / {
00:08:33 v #10576 > > file_name = pwsh; arguments = ["-c",
00:08:33 v #10577 > > "[IO.File]::ReadAllText('/tmp/!create_temp_path_/spiral_48a2305935f69fb96eca24f7
00:08:33 v #10578 > > 5e31d0c8a2d2a57dbb75b58d9e053831e2b27f39/9242780b-ce0e-9155-5e07-f6ee5667aa16/te
00:08:33 v #10579 > > st.txt')"]; options = { command = pwsh -c
00:08:33 v #10580 > > "[IO.File]::ReadAllText('/tmp/!create_temp_path_/spiral_48a2305935f69fb96eca24f7
00:08:33 v #10581 > > 5e31d0c8a2d2a57dbb75b58d9e053831e2b27f39/9242780b-ce0e-9155-5e07-f6ee5667aa16/te
00:08:33 v #10582 > > st.txt')"; cancellation_token = None; environment_variables =
00:08:33 v #10583 > > Array(MutCell([])); on_line = None; stdin = None; trace = true;
00:08:33 v #10584 > > working_directory = None } }
00:08:33 v #10585 > > │ 00:00:00 v #3 ! MethodInvocationException:
00:08:33 v #10586 > > Exception calling "ReadAllText" with "1" argument(s): "Could not find file
00:08:33 v #10587 > > '/tmp/!create_temp_path_/spiral_48a2305935f69fb96eca24f75e31d0c8a2d2a57dbb75b58d
00:08:33 v #10588 > > 9e053831e2b27f39/9242780b-ce0e-9155-5e07-f6ee5667aa16/test.txt'."
00:08:33 v #10589 > > │ 00:00:00 v #4 runtime.execute_with_options / result / {
00:08:33 v #10590 > > exit_code = 1; std_trace_length = 275 }
00:08:33 v #10591 > > │ __assert_eq / actual: 1 / expected: 1
00:08:33 v #10592 > > │ __assert / actual: "not find file" / expected:
00:08:33 v #10593 > > "MethodInvocationException: Exception calling "ReadAllText" with
00:08:33 v #10594 > > "1" argument(s): "Could not find file
00:08:33 v #10595 > > '/tmp/!create_temp_path_/spiral_48a2305935f69fb96eca24f75e31d0c8a2d2a57dbb75b58d
00:08:33 v #10596 > > 9e053831e2...aa16/test.txt'.""
00:08:33 v #10597 > > │ 00:00:00 d #5 runtime.execute_with_options / {
00:08:33 v #10598 > > file_name = cat; arguments = ["test.txt"]; options = { command = cat "test.txt";
00:08:33 v #10599 > > cancellation_token = None; environment_variables = Array(MutCell([])); on_line =
00:08:33 v #10600 > > None; stdin = None; trace = true; working_directory = Some(
00:08:33 v #10601 > > │
00:08:33 v #10602 > > "/tmp/!create_temp_path_/spiral_48a2305935f69fb96eca24f75e31d0c8a2d2a57dbb75b58d
00:08:33 v #10603 > > 9e053831e2b27f39/9242780b-ce0e-9155-5e07-f6ee5667aa16",
00:08:33 v #10604 > > │ ) } }
00:08:33 v #10605 > > │ 00:00:00 v #6 > ╭─[ 你好,世界!こんにちは世界! ]─╮
00:08:33 v #10606 > > │ 00:00:00 v #7 runtime.execute_with_options / result / {
00:08:33 v #10607 > > exit_code = 0; std_trace_length = 22 }
00:08:33 v #10608 > > │ 00:00:00 d #8 runtime.execute_with_options / {
00:08:33 v #10609 > > file_name = pwsh; arguments = ["-c", "[System.Console]::OutputEncoding =
00:08:33 v #10610 > > [System.Text.Encoding]::UTF8; [IO.File]::ReadAllText('test.txt')"]; options = {
00:08:33 v #10611 > > command = pwsh -c "[System.Console]::OutputEncoding =
00:08:33 v #10612 > > [System.Text.Encoding]::UTF8; [IO.File]::ReadAllText('test.txt')";
00:08:33 v #10613 > > cancellation_token = None; environment_variables = Array(MutCell([])); on_line =
00:08:33 v #10614 > > None; stdin = None; trace = true; working_directory = Some(
00:08:33 v #10615 > > │
00:08:33 v #10616 > > "/tmp/!create_temp_path_/spiral_48a2305935f69fb96eca24f75e31d0c8a2d2a57dbb75b58d
00:08:33 v #10617 > > 9e053831e2b27f39/9242780b-ce0e-9155-5e07-f6ee5667aa16",
00:08:33 v #10618 > > │ ) } }
00:08:33 v #10619 > > │ 00:00:00 v #9 > ╭─[ 你好,世界!こんにちは世界! ]─╮
00:08:33 v #10620 > > │ 00:00:00 v #10 runtime.execute_with_options / result
00:08:33 v #10621 > > { exit_code = 0; std_trace_length = 22 }
00:08:33 v #10622 > > │ __assert_eq / actual: 0 / expected: 0
00:08:33 v #10623 > > │ __assert_eq / actual: "╭─[ 你好,世界!こんにちは世界! ]─╮"
00:08:33 v #10624 > > / expected: "╭─[ 你好,世界!こんにちは世界! ]─╮"
00:08:33 v #10625 > > │
00:08:33 v #10626 > >
00:08:33 v #10627 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:33 v #10628 > > │ ### execute_retry
00:08:33 v #10629 > >
00:08:33 v #10630 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:33 v #10631 > > let execute_retry retries options =
00:08:33 v #10632 > >     fun () =>
00:08:33 v #10633 > >         inl exit_code, result = options |> execute_with_options
00:08:33 v #10634 > >         if exit_code = 0
00:08:33 v #10635 > >         then Ok (exit_code, result)
00:08:33 v #10636 > >         else Error (exit_code, result)
00:08:33 v #10637 > >     |> retry_fn' retries
00:08:33 v #10638 > >
00:08:33 v #10639 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:33 v #10640 > > │ ## main
00:08:33 v #10641 > >
00:08:33 v #10642 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:33 v #10643 > > inl main () =
00:08:33 v #10644 > >     init_trace_state None
00:08:33 v #10645 > >     $'let current_process_kill () = !current_process_kill ()' : ()
00:08:33 v #10646 > >     $'let execute_async x = !execute_async x' : ()
00:08:33 v #10647 > >     $'let execute_with_options_async x = !execute_with_options_async x' : ()
00:08:33 v #10648 > >     inl execution_options fn =
00:08:33 v #10649 > >         execution_options fun x =>
00:08:33 v #10650 > >             x
00:08:33 v #10651 > >             |> heap
00:08:33 v #10652 > >             |> fn
00:08:33 v #10653 > >             |> fun x => !x
00:08:33 v #10654 > >     $'let execution_options x = !execution_options x' : ()
00:08:33 v #10655 > >     inl split_args x = x |> split_args |> resultm.box
00:08:33 v #10656 > >     $'let split_args x = !split_args x' : ()
00:08:38 v #10657 > 00:01:56 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 95632 }
00:08:38 v #10658 > 00:01:56 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/runtime.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/runtime.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:08:39 v #10659 > 00:01:56 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/runtime.dib.ipynb to html
00:08:39 v #10660 > 00:01:56 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:08:39 v #10661 > 00:01:56 v #7 !   validate(nb)
00:08:39 v #10662 > 00:01:57 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:08:39 v #10663 > 00:01:57 v #9 !   return _pygments_highlight(
00:08:40 v #10664 > 00:01:58 v #10 ! [NbConvertApp] Writing 592522 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/runtime.dib.html
00:08:40 v #10665 > 00:01:58 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 898 }
00:08:40 v #10666 > 00:01:58 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 898 }
00:08:40 v #10667 > 00:01:58 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/runtime.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/runtime.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:08:41 v #10668 > 00:01:58 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:08:41 v #10669 > 00:01:58 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:08:41 v #10670 > 00:01:58 d #16 spiral.run / dib / { exit_code = 0; result_length = 96589 }
00:08:41 d #10671 runtime.execute_with_options_async / { exit_code = 0; output_length = 103539 }
00:08:41 d #12 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path runtime.dib --retries 3
00:08:41 d #10672 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path trace.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path trace.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:08:41 v #10673 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "trace.dib", "--retries", "3"])) }
00:08:41 v #10674 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/trace.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/trace.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/trace.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/trace.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:08:42 v #10675 > >
00:08:42 v #10676 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:42 v #10677 > > │ # trace
00:08:44 v #10678 > >
00:08:44 v #10679 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:44 v #10680 > > //// test
00:08:44 v #10681 > >
00:08:44 v #10682 > > open testing
00:08:45 v #10683 > >
00:08:45 v #10684 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:45 v #10685 > > │ ## trace
00:08:45 v #10686 > >
00:08:45 v #10687 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:45 v #10688 > > │ ### trace_level
00:08:45 v #10689 > >
00:08:45 v #10690 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:45 v #10691 > > union trace_level =
00:08:45 v #10692 > >     | Verbose
00:08:45 v #10693 > >     | Debug
00:08:45 v #10694 > >     | Info
00:08:45 v #10695 > >     | Warning
00:08:45 v #10696 > >     | Critical
00:08:45 v #10697 > >
00:08:45 v #10698 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:45 v #10699 > > │ ### read_state
00:08:45 v #10700 > >
00:08:45 v #10701 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:45 v #10702 > > inl read_state () =
00:08:45 v #10703 > >     run_target function
00:08:45 v #10704 > >         | Rust (Wasm) => fun () =>
00:08:45 v #10705 > >             {
00:08:45 v #10706 > >                 trace_level = None
00:08:45 v #10707 > >                 repl_start = None
00:08:45 v #10708 > >             }
00:08:45 v #10709 > >         | Rust (Contract) => fun () =>
00:08:45 v #10710 > >             {
00:08:45 v #10711 > >                 trace_level = None
00:08:45 v #10712 > >                 repl_start =
00:08:45 v #10713 > >                     open rust.rust_operators
00:08:45 v #10714 > >                     inl automation = env.get_environment_variable_comptime
00:08:45 v #10715 > > "AUTOMATION"
00:08:45 v #10716 > >                     if automation <>. "True"
00:08:45 v #10717 > >                     then None
00:08:45 v #10718 > >                     else
00:08:45 v #10719 > >                         inl timestamp : u64 =
00:08:45 v #10720 > > !\($'$"near_sdk::env::block_timestamp()"')
00:08:45 v #10721 > >                         timestamp |> i64 |> Some
00:08:45 v #10722 > >             }
00:08:45 v #10723 > >         | _ => fun () =>
00:08:45 v #10724 > >             join
00:08:45 v #10725 > >                 {
00:08:45 v #10726 > >                     trace_level =
00:08:45 v #10727 > >                         "TRACE_LEVEL"
00:08:45 v #10728 > >                         |> env.get_environment_variable
00:08:45 v #10729 > >                         |> reflection.union_try_pick
00:08:45 v #10730 > >                     repl_start =
00:08:45 v #10731 > >                         inl automation = env.get_environment_variable
00:08:45 v #10732 > > "AUTOMATION"
00:08:45 v #10733 > >                         if automation <>. "True"
00:08:45 v #10734 > >                         then None
00:08:45 v #10735 > >                         else
00:08:45 v #10736 > >                             date_time.now ()
00:08:45 v #10737 > >                             |> date_time.ticks
00:08:45 v #10738 > >                             |> fun (date_time.timestamp x) => x |> convert
00:08:45 v #10739 > >                             |> Some
00:08:45 v #10740 > >                 }
00:08:45 v #10741 > >
00:08:45 v #10742 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:45 v #10743 > > │ ### trace_state
00:08:45 v #10744 > >
00:08:45 v #10745 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:45 v #10746 > > type trace_state =
00:08:45 v #10747 > >     {
00:08:45 v #10748 > >         count : mut i64
00:08:45 v #10749 > >         trace_file : mut (string -> ())
00:08:45 v #10750 > >         enabled : mut bool
00:08:45 v #10751 > >         acc : mut string
00:08:45 v #10752 > >         level : mut trace_level
00:08:45 v #10753 > >         repl_start : optionm'.option' i64
00:08:45 v #10754 > >     }
00:08:45 v #10755 > >
00:08:45 v #10756 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:45 v #10757 > > │ ### new_trace_state
00:08:45 v #10758 > >
00:08:45 v #10759 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:45 v #10760 > > let new_trace_state trace_level' =
00:08:45 v #10761 > >     inl { repl_start trace_level } = read_state ()
00:08:45 v #10762 > >     {
00:08:45 v #10763 > >         count = mut 1i64
00:08:45 v #10764 > >         trace_file = mut ignore
00:08:45 v #10765 > >         enabled = mut true
00:08:45 v #10766 > >         acc = mut ""
00:08:45 v #10767 > >         level = trace_level |> optionm'.default_value trace_level' |> mut
00:08:45 v #10768 > >         repl_start = repl_start |> optionm'.box
00:08:45 v #10769 > >     } : trace_state
00:08:45 v #10770 > >
00:08:45 v #10771 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:45 v #10772 > > │ ### init_trace_state
00:08:45 v #10773 > >
00:08:45 v #10774 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:45 v #10775 > > inl init_trace_state trace_level : () =
00:08:45 v #10776 > >     inl trace_level = trace_level |> optionm'.default_value Verbose
00:08:45 v #10777 > >     backend_switch {
00:08:45 v #10778 > >         Fsharp = fun () =>
00:08:45 v #10779 > >             backend_switch {
00:08:45 v #10780 > >                 Fsharp = fun () =>
00:08:45 v #10781 > >                     global "module TraceState = let mutable trace_state = None"
00:08:45 v #10782 > >             }
00:08:45 v #10783 > >             fun () =>
00:08:45 v #10784 > >                 if $'TraceState.trace_state.IsNone' then
00:08:45 v #10785 > >                     inl trace_state = new_trace_state trace_level |>
00:08:45 v #10786 > > optionm'.some'
00:08:45 v #10787 > >                     $'TraceState.trace_state <- !trace_state ' : ()
00:08:45 v #10788 > >             |> exec_unit
00:08:45 v #10789 > >         Python = fun () =>
00:08:45 v #10790 > >             global "class TraceState: trace_state = None"
00:08:45 v #10791 > >             $'if TraceState.trace_state is None: TraceState.trace_state =
00:08:45 v #10792 > > !new_trace_state(!trace_level)' : ()
00:08:45 v #10793 > >     }
00:08:46 v #10794 > >
00:08:46 v #10795 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:46 v #10796 > > │ ### get_trace_state_or_init
00:08:46 v #10797 > >
00:08:46 v #10798 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:46 v #10799 > > inl get_trace_state_or_init trace_level : trace_state =
00:08:46 v #10800 > >     init_trace_state trace_level
00:08:46 v #10801 > >     backend_switch {
00:08:46 v #10802 > >         Fsharp = fun () =>
00:08:46 v #10803 > >             $'TraceState.trace_state.Value' : trace_state
00:08:46 v #10804 > >         Python = fun () =>
00:08:46 v #10805 > >             $'TraceState.trace_state' : trace_state
00:08:46 v #10806 > >     }
00:08:46 v #10807 > >
00:08:46 v #10808 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:46 v #10809 > > │ ### test_trace_level
00:08:46 v #10810 > >
00:08:46 v #10811 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:46 v #10812 > > let test_trace_level level : bool =
00:08:46 v #10813 > >     inl state = get_trace_state_or_init None
00:08:46 v #10814 > >     inl level' = *state.level
00:08:46 v #10815 > >     if *state.enabled |> not
00:08:46 v #10816 > >     then false
00:08:46 v #10817 > >     else
00:08:46 v #10818 > >         inl level : i32 = real real_core.union_tag level
00:08:46 v #10819 > >         inl level' : i32 = real real_core.union_tag level'
00:08:46 v #10820 > >         level >= level'
00:08:46 v #10821 > >
00:08:46 v #10822 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:46 v #10823 > > //// test
00:08:46 v #10824 > > ///! fsharp
00:08:46 v #10825 > > ///! cuda
00:08:46 v #10826 > > ///! rust
00:08:46 v #10827 > > ///! typescript
00:08:46 v #10828 > > ///! python
00:08:46 v #10829 > >
00:08:46 v #10830 > > test_trace_level Critical |> _assert_eq true
00:08:46 v #10831 > > test_trace_level Verbose |> _assert_eq true
00:08:46 v #10832 > >
00:08:46 v #10833 > > inl level = get_trace_state_or_init None .level
00:08:46 v #10834 > > level <- Debug
00:08:46 v #10835 > > test_trace_level Verbose |> _assert_eq false
00:08:46 v #10836 > > level <- Verbose
00:08:46 v #10837 > > test_trace_level Verbose |> _assert_eq true
00:08:56 v #10838 > >
00:08:56 v #10839 > > ── [ 10.23s - return value ] ───────────────────────────────────────────────────
00:08:56 v #10840 > > │
00:08:56 v #10841 > > │ .py output (Cuda):
00:08:56 v #10842 > > │ __assert_eq / actual: True / expected: True
00:08:56 v #10843 > > │ __assert_eq / actual: True / expected: True
00:08:56 v #10844 > > │ __assert_eq / actual: False / expected: False
00:08:56 v #10845 > > │ __assert_eq / actual: True / expected: True
00:08:56 v #10846 > > │
00:08:56 v #10847 > > │
00:08:56 v #10848 > > │ .rs output:
00:08:56 v #10849 > > │ __assert_eq / actual: true / expected: true
00:08:56 v #10850 > > │ __assert_eq / actual: true / expected: true
00:08:56 v #10851 > > │ __assert_eq / actual: false / expected: false
00:08:56 v #10852 > > │ __assert_eq / actual: true / expected: true
00:08:56 v #10853 > > │
00:08:56 v #10854 > > │
00:08:56 v #10855 > > │ .ts output:
00:08:56 v #10856 > > │ __assert_eq / actual: true / expected: true
00:08:56 v #10857 > > │ __assert_eq / actual: true / expected: true
00:08:56 v #10858 > > │ __assert_eq / actual: false / expected: false
00:08:56 v #10859 > > │ __assert_eq / actual: true / expected: true
00:08:56 v #10860 > > │
00:08:56 v #10861 > > │
00:08:56 v #10862 > > │ .py output:
00:08:56 v #10863 > > │ __assert_eq / actual: true / expected: true
00:08:56 v #10864 > > │ __assert_eq / actual: true / expected: true
00:08:56 v #10865 > > │ __assert_eq / actual: false / expected: false
00:08:56 v #10866 > > │ __assert_eq / actual: true / expected: true
00:08:56 v #10867 > > │
00:08:56 v #10868 > > │
00:08:56 v #10869 > > │
00:08:56 v #10870 > >
00:08:56 v #10871 > > ── [ 10.24s - stdout ] ─────────────────────────────────────────────────────────
00:08:56 v #10872 > > │ .fsx output:
00:08:56 v #10873 > > │ __assert_eq / actual: true / expected: true
00:08:56 v #10874 > > │ __assert_eq / actual: true / expected: true
00:08:56 v #10875 > > │ __assert_eq / actual: false / expected: false
00:08:56 v #10876 > > │ __assert_eq / actual: true / expected: true
00:08:56 v #10877 > > │
00:08:56 v #10878 > >
00:08:56 v #10879 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:56 v #10880 > > │ ### trace_raw
00:08:56 v #10881 > >
00:08:56 v #10882 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:56 v #10883 > > inl trace_raw level fn =
00:08:56 v #10884 > >     fun () =>
00:08:56 v #10885 > >         if level |> test_trace_level then
00:08:56 v #10886 > >             inl text = fn ()
00:08:56 v #10887 > >             join
00:08:56 v #10888 > >                 inl ({ count acc } & trace_state) = get_trace_state_or_init None
00:08:56 v #10889 > >                 fun () =>
00:08:56 v #10890 > >                     count <- *count + 1
00:08:56 v #10891 > >                 |> exec_unit
00:08:56 v #10892 > >                 open rust
00:08:56 v #10893 > >                 open rust.rust_operators
00:08:56 v #10894 > >                 run_target_args (fun () => text, console.write_line) function
00:08:56 v #10895 > >                     | Rust (Contract) => fun text, _ =>
00:08:56 v #10896 > >                         inl new_acc =
00:08:56 v #10897 > >                             if *acc = ""
00:08:56 v #10898 > >                             then text
00:08:56 v #10899 > >                             elif text = ""
00:08:56 v #10900 > >                             then *acc
00:08:56 v #10901 > >                             else *acc +. "\n" +. text
00:08:56 v #10902 > >
00:08:56 v #10903 > >                         inl chunks =
00:08:56 v #10904 > >                             new_acc
00:08:56 v #10905 > >                             |> sm'.as_str
00:08:56 v #10906 > >                             |> sm'.chars
00:08:56 v #10907 > >                             |> rust.from_mut
00:08:56 v #10908 > >                             |> iter_collect
00:08:56 v #10909 > >                             |> am'.vec_chunks 15000
00:08:56 v #10910 > >                             |> am'.vec_map sm'.from_iter
00:08:56 v #10911 > >
00:08:56 v #10912 > >                         inl chunks_len = chunks |> am'.vec_len |> i32
00:08:56 v #10913 > >
00:08:56 v #10914 > >                         if text <>. "" && chunks_len <= 1
00:08:56 v #10915 > >                         then acc <- new_acc
00:08:56 v #10916 > >                         else
00:08:56 v #10917 > >                             acc <- ""
00:08:56 v #10918 > >                             chunks
00:08:56 v #10919 > >                             |> am'.vec_for_each''' near.log
00:08:56 v #10920 > >                     | Rust _ => fun text, _ =>
00:08:56 v #10921 > >                         !\\(text, $'\@"println\!(""{}"", $0)"')
00:08:56 v #10922 > >                     | _ => fun text, write_line =>
00:08:56 v #10923 > >                         text |> write_line
00:08:56 v #10924 > >                 text |> *trace_state.trace_file
00:08:56 v #10925 > >     |> exec_unit
00:08:56 v #10926 > >
00:08:56 v #10927 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:56 v #10928 > > │ ### trace
00:08:56 v #10929 > >
00:08:56 v #10930 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:56 v #10931 > > inl trace (level : trace_level) (text_fn : () -> string) (locals : () -> _) =
00:08:56 v #10932 > >     fun () =>
00:08:56 v #10933 > >         inl trace_state = get_trace_state_or_init None
00:08:56 v #10934 > >         inl time =
00:08:56 v #10935 > >             join
00:08:56 v #10936 > >                 run_target fun target =>
00:08:56 v #10937 > >                     match target with
00:08:56 v #10938 > >                     | Rust (Contract) => fun () =>
00:08:56 v #10939 > >                         open rust.rust_operators
00:08:56 v #10940 > >                         open rust
00:08:56 v #10941 > >                         inl timestamp = near.block_timestamp ()
00:08:56 v #10942 > >                         inl timestamp =
00:08:56 v #10943 > >                             match trace_state.repl_start |> optionm'.unbox with
00:08:56 v #10944 > >                             | Some repl_start => timestamp - u64 repl_start
00:08:56 v #10945 > >                             | None => timestamp
00:08:56 v #10946 > >                         inl timestamp_s = timestamp / 1_000_000_000
00:08:56 v #10947 > >                         inl s = timestamp_s % 60
00:08:56 v #10948 > >                         inl m = (timestamp_s / 60) % 60
00:08:56 v #10949 > >                         inl h = (timestamp_s / 3600) % 24
00:08:56 v #10950 > >                         inl str : sm'.std_string =
00:08:56 v #10951 > >                             !\\((h, m, s),
00:08:56 v #10952 > > $'$"format\!(\\\"{{:02}}:{{:02}}:{{:02}}\\\", $0, $1, $2)"')
00:08:56 v #10953 > >                         str |> sm'.from_std_string
00:08:56 v #10954 > >                     | _ => fun () =>
00:08:56 v #10955 > >                         match trace_state.repl_start |> optionm'.unbox with
00:08:56 v #10956 > >                         | Some repl_start =>
00:08:56 v #10957 > >                             inl t =
00:08:56 v #10958 > >                                 date_time.now ()
00:08:56 v #10959 > >                                 |> date_time.ticks
00:08:56 v #10960 > >                                 |> fun (date_time.timestamp x) => x |> convert
00:08:56 v #10961 > >                                 |> flip (-) repl_start
00:08:56 v #10962 > >                                 |> date_time.time_span
00:08:56 v #10963 > >                             date_time.date_time_milliseconds
00:08:56 v #10964 > >                                 1i32 1i32 1i32
00:08:56 v #10965 > >                                 (t |> date_time.hours)
00:08:56 v #10966 > >                                 (t |> date_time.minutes)
00:08:56 v #10967 > >                                 (t |> date_time.seconds)
00:08:56 v #10968 > >                                 (t |> date_time.milliseconds)
00:08:56 v #10969 > >                         | None => date_time.now ()
00:08:56 v #10970 > >                         |> date_time.format (
00:08:56 v #10971 > >                             backend_switch {
00:08:56 v #10972 > >                                 Fsharp = fun () =>
00:08:56 v #10973 > >                                     match target with
00:08:56 v #10974 > >                                     | Rust _ => join "hh:mm:ss"
00:08:56 v #10975 > >                                     | _ => join "HH:mm:ss"
00:08:56 v #10976 > >                                 Python = fun () => "%H:%M:%S"
00:08:56 v #10977 > >                             }
00:08:56 v #10978 > >                         )
00:08:56 v #10979 > >         inl level_str =
00:08:56 v #10980 > >             join
00:08:56 v #10981 > >                 inl level_str =
00:08:56 v #10982 > >                     level
00:08:56 v #10983 > >                     |> reflection.union_to_string
00:08:56 v #10984 > >                     |> sm'.to_lower
00:08:56 v #10985 > >                     |> sm'.index 0i32
00:08:56 v #10986 > >                     |> sm'.format
00:08:56 v #10987 > >                 run_target function
00:08:56 v #10988 > >                 | Rust _ => fun () =>
00:08:56 v #10989 > >                     open rust
00:08:56 v #10990 > >                     open rust.rust_operators
00:08:56 v #10991 > >                     inl color : rust.ref sm'.str =
00:08:56 v #10992 > >                         match level with
00:08:56 v #10993 > >                         | Verbose =>
00:08:56 v #10994 > > !\($'"inline_colorization::color_bright_black"')
00:08:56 v #10995 > >                         | Debug =>
00:08:56 v #10996 > > !\($'"inline_colorization::color_bright_blue"')
00:08:56 v #10997 > >                         | Info =>
00:08:56 v #10998 > > !\($'"inline_colorization::color_bright_green"')
00:08:56 v #10999 > >                         | Warning => !\($'"inline_colorization::color_yellow"')
00:08:56 v #11000 > >                         | Critical =>
00:08:56 v #11001 > > !\($'"inline_colorization::color_bright_red"')
00:08:56 v #11002 > >                     inl level_str = level_str |> sm'.as_str
00:08:56 v #11003 > >                     inl color_reset : rust.ref sm'.str =
00:08:56 v #11004 > > !\($'"inline_colorization::color_reset"')
00:08:56 v #11005 > >                     !\\((color, level_str, color_reset),
00:08:56 v #11006 > > $'$"format\!(\\\"{{}}{{}}{{}}\\\", $0, $1, $2)"')
00:08:56 v #11007 > >                     |> sm'.from_std_string
00:08:56 v #11008 > >                 | _ => fun () =>
00:08:56 v #11009 > >                     inl color =
00:08:56 v #11010 > >                         match level with
00:08:56 v #11011 > >                         | Verbose => $'"\\u001b[[90m"'
00:08:56 v #11012 > >                         | Debug => $'"\\u001b[[94m"'
00:08:56 v #11013 > >                         | Info => $'"\\u001b[[92m"'
00:08:56 v #11014 > >                         | Warning => $'"\\u001b[[93m"'
00:08:56 v #11015 > >                         | Critical => $'"\\u001b[[91m"'
00:08:56 v #11016 > >                     inl color_reset = join $'"\\u001b[[0m"'
00:08:56 v #11017 > >                     color +. level_str +. color_reset
00:08:56 v #11018 > >         inl text = text_fn ()
00:08:56 v #11019 > >         if text = ""
00:08:56 v #11020 > >         then ""
00:08:56 v #11021 > >         else
00:08:56 v #11022 > >             inl locals = locals ()
00:08:56 v #11023 > >             join
00:08:56 v #11024 > >                 inl locals = locals |> sm'.format
00:08:56 v #11025 > >                 inl count = *trace_state.count
00:08:56 v #11026 > >                 backend_switch {
00:08:56 v #11027 > >                     Fsharp = fun () => $'$"{!time} {!level_str} #{!count}
00:08:56 v #11028 > > %s{!text} / {!locals}"' : string
00:08:56 v #11029 > >                     Python = fun () => $'f"{!time} {!level_str} #{!count}
00:08:56 v #11030 > > {!text} / {!locals}"' : string
00:08:56 v #11031 > >                 }
00:08:56 v #11032 > >                 |> fun x =>
00:08:56 v #11033 > >                     join
00:08:56 v #11034 > >                         x
00:08:56 v #11035 > >                         |> sm'.trim_start [[]]
00:08:56 v #11036 > >                         |> sm'.trim_end [[ ' '; '/' ]]
00:08:56 v #11037 > >     |> trace_raw level
00:08:57 v #11038 > >
00:08:57 v #11039 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:57 v #11040 > > //// test
00:08:57 v #11041 > > ///! fsharp
00:08:57 v #11042 > > ///! cuda
00:08:57 v #11043 > > ///! rust
00:08:57 v #11044 > > ///! typescript
00:08:57 v #11045 > > ///! python
00:08:57 v #11046 > >
00:08:57 v #11047 > > trace Debug (fun () => "test1") id
00:08:57 v #11048 > > trace Debug (fun () => "test2") id
00:08:57 v #11049 > > get_trace_state_or_init None .count
00:08:57 v #11050 > > |> fun x => *x
00:08:57 v #11051 > > |> _assert_eq 3
00:09:06 v #11052 > >
00:09:06 v #11053 > > ── [ 9.69s - return value ] ────────────────────────────────────────────────────
00:09:06 v #11054 > > │
00:09:06 v #11055 > > │ .py output (Cuda):
00:09:06 v #11056 > > │ 00:00:00 d #1 test1
00:09:06 v #11057 > > │ 00:00:00 d #2 test2
00:09:06 v #11058 > > │ __assert_eq / actual: 3 / expected: 3
00:09:06 v #11059 > > │
00:09:06 v #11060 > > │
00:09:06 v #11061 > > │ .rs output:
00:09:06 v #11062 > > │ 00:00:00 d #1 test1
00:09:06 v #11063 > > │ 00:00:00 d #2 test2
00:09:06 v #11064 > > │ __assert_eq / actual: 3 / expected: 3
00:09:06 v #11065 > > │
00:09:06 v #11066 > > │
00:09:06 v #11067 > > │ .ts output:
00:09:06 v #11068 > > │ 00:00:00 d #1 test1
00:09:06 v #11069 > > │ 00:00:00 d #2 test2
00:09:06 v #11070 > > │ __assert_eq / actual: 3 / expected: 3
00:09:06 v #11071 > > │
00:09:06 v #11072 > > │
00:09:06 v #11073 > > │ .py output:
00:09:06 v #11074 > > │ 00:00:00 d #1 test1
00:09:06 v #11075 > > │ 00:00:00 d #2 test2
00:09:06 v #11076 > > │ __assert_eq / actual: 3 / expected: 3
00:09:06 v #11077 > > │
00:09:06 v #11078 > > │
00:09:06 v #11079 > > │
00:09:06 v #11080 > >
00:09:06 v #11081 > > ── [ 9.69s - stdout ] ──────────────────────────────────────────────────────────
00:09:06 v #11082 > > │ .fsx output:
00:09:06 v #11083 > > │ 00:00:00 d #1 test1
00:09:06 v #11084 > > │ 00:00:00 d #2 test2
00:09:06 v #11085 > > │ __assert_eq / actual: 3L / expected: 3L
00:09:06 v #11086 > > │
00:09:06 v #11087 > >
00:09:06 v #11088 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:06 v #11089 > > │ ## main
00:09:06 v #11090 > >
00:09:06 v #11091 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:06 v #11092 > > inl main () =
00:09:06 v #11093 > >     init_trace_state None
00:09:06 v #11094 > >     inl trace level text_fn (locals : () -> string) = trace level text_fn locals
00:09:06 v #11095 > >     $'let trace x = !trace x' : ()
00:09:07 v #11096 > 00:00:26 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 17044 }
00:09:07 v #11097 > 00:00:26 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/trace.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/trace.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:09:07 v #11098 > 00:00:26 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/trace.dib.ipynb to html
00:09:07 v #11099 > 00:00:26 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:09:07 v #11100 > 00:00:26 v #7 !   validate(nb)
00:09:08 v #11101 > 00:00:27 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:09:08 v #11102 > 00:00:27 v #9 !   return _pygments_highlight(
00:09:08 v #11103 > 00:00:27 v #10 ! [NbConvertApp] Writing 324996 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/trace.dib.html
00:09:08 v #11104 > 00:00:27 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 894 }
00:09:08 v #11105 > 00:00:27 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 894 }
00:09:08 v #11106 > 00:00:27 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/trace.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/trace.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:09:08 v #11107 > 00:00:27 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:09:08 v #11108 > 00:00:27 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:09:08 v #11109 > 00:00:27 d #16 spiral.run / dib / { exit_code = 0; result_length = 17997 }
00:09:08 d #11110 runtime.execute_with_options_async / { exit_code = 0; output_length = 21485 }
00:09:08 d #13 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path trace.dib --retries 3
00:09:08 d #11111 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path am'.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path am'.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:09:08 v #11112 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "am'.dib", "--retries", "3"])) }
00:09:08 v #11113 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/am'.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/am'.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/am'.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/am'.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:09:10 v #11114 > >
00:09:10 v #11115 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:10 v #11116 > > │ # am'
00:09:12 v #11117 > >
00:09:12 v #11118 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:12 v #11119 > > //// test
00:09:12 v #11120 > >
00:09:12 v #11121 > > open testing
00:09:13 v #11122 > >
00:09:13 v #11123 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:13 v #11124 > > open rust
00:09:13 v #11125 > > open rust_operators
00:09:13 v #11126 > >
00:09:13 v #11127 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:13 v #11128 > > │ ## am'
00:09:13 v #11129 > >
00:09:13 v #11130 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:13 v #11131 > > │ ### length
00:09:13 v #11132 > >
00:09:13 v #11133 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:13 v #11134 > > inl length forall dim {int} el. (a : a dim el) : dim =
00:09:13 v #11135 > >     a |> length
00:09:13 v #11136 > >
00:09:13 v #11137 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:13 v #11138 > > │ ### index
00:09:13 v #11139 > >
00:09:13 v #11140 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:13 v #11141 > > inl index forall dim {int} el. (i : dim) (a : a dim el) : el =
00:09:13 v #11142 > >     backend_switch {
00:09:13 v #11143 > >         Fsharp = fun () => index a i
00:09:13 v #11144 > >         Python = fun () => $'!a[[!i]]' : el
00:09:13 v #11145 > >     }
00:09:13 v #11146 > >
00:09:13 v #11147 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:13 v #11148 > > │ ### index_base
00:09:13 v #11149 > >
00:09:13 v #11150 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:13 v #11151 > > inl index_base forall el. (i : int) (ar : array_base el) : el =
00:09:13 v #11152 > >     ar |> a |> index i
00:09:13 v #11153 > >
00:09:13 v #11154 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:13 v #11155 > > │ ### base
00:09:13 v #11156 > >
00:09:13 v #11157 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:13 v #11158 > > inl base forall dim {int} el. ((a a) : a dim el) : array_base el =
00:09:13 v #11159 > >     a
00:09:13 v #11160 > >
00:09:13 v #11161 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:13 v #11162 > > │ ### base'
00:09:13 v #11163 > >
00:09:13 v #11164 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:13 v #11165 > > inl base' forall el. ((a a) : a int el) : array_base el =
00:09:13 v #11166 > >     a
00:09:14 v #11167 > >
00:09:14 v #11168 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:14 v #11169 > > │ ### generic_equable
00:09:14 v #11170 > >
00:09:14 v #11171 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:14 v #11172 > > inl generic_equable x1 x2 =
00:09:14 v #11173 > >     if length x1 <>.. length x2
00:09:14 v #11174 > >     then false
00:09:14 v #11175 > >     else
00:09:14 v #11176 > >         let rec loop i =
00:09:14 v #11177 > >             if i < length x1
00:09:14 v #11178 > >             then index i x1 = index i x2 && loop (i + 1)
00:09:14 v #11179 > >             else true
00:09:14 v #11180 > >         loop 0
00:09:14 v #11181 > >
00:09:14 v #11182 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:14 v #11183 > > │ ### equable
00:09:14 v #11184 > >
00:09:14 v #11185 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:14 v #11186 > > instance equable a dim {number; int} t = generic_equable
00:09:14 v #11187 > >
00:09:14 v #11188 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:14 v #11189 > > │ ### append
00:09:14 v #11190 > >
00:09:14 v #11191 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:14 v #11192 > > instance append a dim {int; number} t = am.append
00:09:14 v #11193 > >
00:09:14 v #11194 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:14 v #11195 > > //// test
00:09:14 v #11196 > > ///! fsharp
00:09:14 v #11197 > > ///! cuda
00:09:14 v #11198 > > ///! rust
00:09:14 v #11199 > > ///! typescript
00:09:14 v #11200 > > ///! python
00:09:14 v #11201 > >
00:09:14 v #11202 > > a' ;[[ -1i64; 0 ]] ++ a' ;[[ 1; 2 ]]
00:09:14 v #11203 > > |> _assert_eq (a' ;[[ -1; 0; 1; 2 ]])
00:09:24 v #11204 > >
00:09:24 v #11205 > > ── [ 10.40s - return value ] ───────────────────────────────────────────────────
00:09:24 v #11206 > > │ .py output (Cuda):
00:09:24 v #11207 > > │ __assert_eq / actual: [-1  0  1  2] / expected: [-1  0  1  2]
00:09:24 v #11208 > > │
00:09:24 v #11209 > > │ .rs output:
00:09:24 v #11210 > > │ __assert_eq / actual: Array(MutCell([-1, 0, 1, 2]))
00:09:24 v #11211 > > expected: Array(MutCell([-1, 0, 1, 2]))
00:09:24 v #11212 > > │
00:09:24 v #11213 > > │ .ts output:
00:09:24 v #11214 > > │ __assert_eq / actual: -1,0,1,2 / expected: -1,0,1,2
00:09:24 v #11215 > > │
00:09:24 v #11216 > > │ .py output:
00:09:24 v #11217 > > │ __assert_eq / actual: [-1, 0, 1, 2] / expected: array('q',
00:09:24 v #11218 > > [-1, 0, 1, 2])
00:09:24 v #11219 > > │
00:09:24 v #11220 > > │
00:09:24 v #11221 > >
00:09:24 v #11222 > > ── [ 10.41s - stdout ] ─────────────────────────────────────────────────────────
00:09:24 v #11223 > > │ .fsx output:
00:09:24 v #11224 > > │ __assert_eq / actual: [|-1L; 0L; 1L; 2L|] / expected: [|-1L;
00:09:24 v #11225 > > 0L; 1L; 2L|]
00:09:24 v #11226 > > │
00:09:24 v #11227 > >
00:09:24 v #11228 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:24 v #11229 > > │ ### map_base
00:09:24 v #11230 > >
00:09:24 v #11231 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:24 v #11232 > > inl map_base forall t u. (fn : t -> u) (x : array_base t) : array_base u =
00:09:24 v #11233 > >     a x
00:09:24 v #11234 > >     |> am.map fn
00:09:24 v #11235 > >     |> fun (a x : _ int _) => x
00:09:25 v #11236 > >
00:09:25 v #11237 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:25 v #11238 > > │ ### collect
00:09:25 v #11239 > >
00:09:25 v #11240 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:25 v #11241 > > inl collect forall t r. (fn : t -> a int r) (items : a int t) : a int r =
00:09:25 v #11242 > >     items
00:09:25 v #11243 > >     |> am.map fn
00:09:25 v #11244 > >     |> am.fold (++) (a ;[[]])
00:09:25 v #11245 > >
00:09:25 v #11246 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:25 v #11247 > > │ ### init
00:09:25 v #11248 > >
00:09:25 v #11249 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:25 v #11250 > > inl init n : array_base _ =
00:09:25 v #11251 > >     am.init n id
00:09:25 v #11252 > >     |> fun (a x : _ int _) => x
00:09:25 v #11253 > >
00:09:25 v #11254 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:25 v #11255 > > │ ### choose
00:09:25 v #11256 > >
00:09:25 v #11257 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:25 v #11258 > > inl choose f l =
00:09:25 v #11259 > >     (l, [[]])
00:09:25 v #11260 > >     ||> am.foldBack fun x acc =>
00:09:25 v #11261 > >         match f x with
00:09:25 v #11262 > >         | Some y => y :: acc
00:09:25 v #11263 > >         | None => acc
00:09:25 v #11264 > >     |> listm.toArray
00:09:25 v #11265 > >
00:09:25 v #11266 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:25 v #11267 > > //// test
00:09:25 v #11268 > > ///! fsharp
00:09:25 v #11269 > > ///! cuda
00:09:25 v #11270 > > ////! rust // v0.get_mut()[[v2.get().clone() as usize]] = match
00:09:25 v #11271 > > v1.get().clone().as_ref() { ^ expected `i32`, found `usize`
00:09:25 v #11272 > > ///! typescript
00:09:25 v #11273 > > ///! python
00:09:25 v #11274 > >
00:09:25 v #11275 > > 10
00:09:25 v #11276 > > |> init
00:09:25 v #11277 > > |> fun x => a x : _ int _
00:09:25 v #11278 > > |> choose (fun x => if x % 2 = 0 then Some x else None)
00:09:25 v #11279 > > |> _assert_eq (a' ;[[ 0; 2; 4; 6; 8 ]])
00:09:32 v #11280 > >
00:09:32 v #11281 > > ── [ 6.59s - return value ] ────────────────────────────────────────────────────
00:09:32 v #11282 > > │ .py output (Cuda):
00:09:32 v #11283 > > │ __assert_eq / actual: [0 2 4 6 8] / expected: [0 2 4 6 8]
00:09:32 v #11284 > > │
00:09:32 v #11285 > > │ .ts output:
00:09:32 v #11286 > > │ __assert_eq / actual: 0,2,4,6,8 / expected: 0,2,4,6,8
00:09:32 v #11287 > > │
00:09:32 v #11288 > > │ .py output:
00:09:32 v #11289 > > │ __assert_eq / actual: [0, 2, 4, 6, 8] / expected: array('l',
00:09:32 v #11290 > > [0, 2, 4, 6, 8])
00:09:32 v #11291 > > │
00:09:32 v #11292 > > │
00:09:32 v #11293 > >
00:09:32 v #11294 > > ── [ 6.60s - stdout ] ──────────────────────────────────────────────────────────
00:09:32 v #11295 > > │ .fsx output:
00:09:32 v #11296 > > │ __assert_eq / actual: [|0; 2; 4; 6; 8|] / expected: [|0; 2;
00:09:32 v #11297 > > 4; 6; 8|]
00:09:32 v #11298 > > │
00:09:32 v #11299 > >
00:09:32 v #11300 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:32 v #11301 > > │ ### sum
00:09:32 v #11302 > >
00:09:32 v #11303 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:32 v #11304 > > inl sum a =
00:09:32 v #11305 > >     a |> am.fold (+) 0
00:09:32 v #11306 > >
00:09:32 v #11307 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:32 v #11308 > > //// test
00:09:32 v #11309 > > ///! fsharp
00:09:32 v #11310 > > ///! cuda
00:09:32 v #11311 > > ///! rust
00:09:32 v #11312 > > ///! typescript
00:09:32 v #11313 > > ///! python
00:09:32 v #11314 > >
00:09:32 v #11315 > > 10
00:09:32 v #11316 > > |> init
00:09:32 v #11317 > > |> fun x => a x : _ int _
00:09:32 v #11318 > > |> sum
00:09:32 v #11319 > > |> _assert_eq 45
00:09:40 v #11320 > >
00:09:40 v #11321 > > ── [ 8.24s - return value ] ────────────────────────────────────────────────────
00:09:40 v #11322 > > │ .py output (Cuda):
00:09:40 v #11323 > > │ __assert_eq / actual: 45 / expected: 45
00:09:40 v #11324 > > │
00:09:40 v #11325 > > │ .rs output:
00:09:40 v #11326 > > │ __assert_eq / actual: 45 / expected: 45
00:09:40 v #11327 > > │
00:09:40 v #11328 > > │ .ts output:
00:09:40 v #11329 > > │ __assert_eq / actual: 45 / expected: 45
00:09:40 v #11330 > > │
00:09:40 v #11331 > > │ .py output:
00:09:40 v #11332 > > │ __assert_eq / actual: 45 / expected: 45
00:09:40 v #11333 > > │
00:09:40 v #11334 > > │
00:09:40 v #11335 > >
00:09:40 v #11336 > > ── [ 8.24s - stdout ] ──────────────────────────────────────────────────────────
00:09:40 v #11337 > > │ .fsx output:
00:09:40 v #11338 > > │ __assert_eq / actual: 45 / expected: 45
00:09:40 v #11339 > > │
00:09:40 v #11340 > >
00:09:40 v #11341 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:40 v #11342 > > │ ### init_series
00:09:40 v #11343 > >
00:09:40 v #11344 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:40 v #11345 > > inl init_series start end inc : array_base _ =
00:09:40 v #11346 > >     inl total = conv ((end - start) / inc) + 1
00:09:40 v #11347 > >     am.init total (conv >> (*) inc >> (+) start)
00:09:40 v #11348 > >     |> fun (a x : _ int _) => x
00:09:40 v #11349 > >
00:09:40 v #11350 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:40 v #11351 > > //// test
00:09:40 v #11352 > > ///! fsharp
00:09:40 v #11353 > > ///! cuda
00:09:40 v #11354 > > ///! rust
00:09:40 v #11355 > > ///! typescript
00:09:40 v #11356 > > ///! python
00:09:40 v #11357 > >
00:09:40 v #11358 > > init_series 0i32 6 2
00:09:40 v #11359 > > |> a
00:09:40 v #11360 > > |> fun x => x : _ int _
00:09:40 v #11361 > > |> _assert_eq (a ;[[ 0i32; 2; 4; 6 ]])
00:09:48 v #11362 > >
00:09:48 v #11363 > > ── [ 7.95s - return value ] ────────────────────────────────────────────────────
00:09:48 v #11364 > > │ .py output (Cuda):
00:09:48 v #11365 > > │ __assert_eq / actual: [0 2 4 6] / expected: [0 2 4 6]
00:09:48 v #11366 > > │
00:09:48 v #11367 > > │ .rs output:
00:09:48 v #11368 > > │ __assert_eq / actual: Array(MutCell([0, 2, 4, 6]))
00:09:48 v #11369 > > expected: Array(MutCell([0, 2, 4, 6]))
00:09:48 v #11370 > > │
00:09:48 v #11371 > > │ .ts output:
00:09:48 v #11372 > > │ __assert_eq / actual: 0,2,4,6 / expected: 0,2,4,6
00:09:48 v #11373 > > │
00:09:48 v #11374 > > │ .py output:
00:09:48 v #11375 > > │ __assert_eq / actual: [0, 2, 4, 6] / expected: array('l', [0,
00:09:48 v #11376 > > 2, 4, 6])
00:09:48 v #11377 > > │
00:09:48 v #11378 > > │
00:09:48 v #11379 > >
00:09:48 v #11380 > > ── [ 7.95s - stdout ] ──────────────────────────────────────────────────────────
00:09:48 v #11381 > > │ .fsx output:
00:09:48 v #11382 > > │ __assert_eq / actual: [|0; 2; 4; 6|] / expected: [|0; 2; 4;
00:09:48 v #11383 > > 6|]
00:09:48 v #11384 > > │
00:09:48 v #11385 > >
00:09:48 v #11386 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:48 v #11387 > > │ ### head
00:09:48 v #11388 > >
00:09:48 v #11389 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:48 v #11390 > > inl head (ar : a _ _) =
00:09:48 v #11391 > >     if var_is ar || length ar > 0
00:09:48 v #11392 > >     then ar |> index 0
00:09:48 v #11393 > >     else error_type "The length of the array should be greater than 0."
00:09:48 v #11394 > >
00:09:48 v #11395 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:48 v #11396 > > │ ### last
00:09:48 v #11397 > >
00:09:48 v #11398 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:48 v #11399 > > inl last (ar : a _ _) =
00:09:48 v #11400 > >     inl len = length ar
00:09:48 v #11401 > >     if var_is ar || len > 0
00:09:48 v #11402 > >     then ar |> index (len - 1)
00:09:48 v #11403 > >     else error_type "The length of the array should be greater than 0."
00:09:48 v #11404 > >
00:09:48 v #11405 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:48 v #11406 > > //// test
00:09:48 v #11407 > > ///! fsharp
00:09:48 v #11408 > > ///! cuda
00:09:48 v #11409 > > ///! rust
00:09:48 v #11410 > > ///! typescript
00:09:48 v #11411 > > ///! python
00:09:48 v #11412 > >
00:09:48 v #11413 > > 10
00:09:48 v #11414 > > |> init
00:09:48 v #11415 > > |> fun x => a x : _ int _
00:09:48 v #11416 > > |> last
00:09:48 v #11417 > > |> _assert_eq 9
00:09:56 v #11418 > >
00:09:56 v #11419 > > ── [ 7.77s - return value ] ────────────────────────────────────────────────────
00:09:56 v #11420 > > │ .py output (Cuda):
00:09:56 v #11421 > > │ __assert_eq / actual: 9 / expected: 9
00:09:56 v #11422 > > │
00:09:56 v #11423 > > │ .rs output:
00:09:56 v #11424 > > │ __assert_eq / actual: 9 / expected: 9
00:09:56 v #11425 > > │
00:09:56 v #11426 > > │ .ts output:
00:09:56 v #11427 > > │ __assert_eq / actual: 9 / expected: 9
00:09:56 v #11428 > > │
00:09:56 v #11429 > > │ .py output:
00:09:56 v #11430 > > │ __assert_eq / actual: 9 / expected: 9
00:09:56 v #11431 > > │
00:09:56 v #11432 > > │
00:09:56 v #11433 > >
00:09:56 v #11434 > > ── [ 7.77s - stdout ] ──────────────────────────────────────────────────────────
00:09:56 v #11435 > > │ .fsx output:
00:09:56 v #11436 > > │ __assert_eq / actual: 9 / expected: 9
00:09:56 v #11437 > > │
00:09:56 v #11438 > >
00:09:56 v #11439 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:56 v #11440 > > │ ### try_pick
00:09:56 v #11441 > >
00:09:56 v #11442 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:56 v #11443 > > inl try_pick forall t u. (fn : t -> option u) (array : a _ t) : option u =
00:09:56 v #11444 > >     (array, None)
00:09:56 v #11445 > >     ||> am.foldBack fun x acc =>
00:09:56 v #11446 > >         match acc with
00:09:56 v #11447 > >         | Some _ => acc
00:09:56 v #11448 > >         | None => x |> fn
00:09:56 v #11449 > >
00:09:56 v #11450 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:56 v #11451 > > //// test
00:09:56 v #11452 > > ///! fsharp
00:09:56 v #11453 > > ///! cuda
00:09:56 v #11454 > > ////! rust // match &v23 { Spiral_builder::US0::US0_0(x) => x.clone(), _ =>
00:09:56 v #11455 > > unreachable!(), } == 5_i32
00:09:56 v #11456 > > ///! typescript
00:09:56 v #11457 > > ///! python
00:09:56 v #11458 > >
00:09:56 v #11459 > > 10
00:09:56 v #11460 > > |> init
00:09:56 v #11461 > > |> fun x => a x : _ int _
00:09:56 v #11462 > > |> try_pick (fun x => if x = 5i32 then Some x else None)
00:09:56 v #11463 > > |> _assert_eq (Some 5i32)
00:10:02 v #11464 > >
00:10:02 v #11465 > > ── [ 5.84s - return value ] ────────────────────────────────────────────────────
00:10:02 v #11466 > > │ .py output (Cuda):
00:10:02 v #11467 > > │ __assert_eq / actual: US0_0(v0=5) / expected: US0_0(v0=5)
00:10:02 v #11468 > > │
00:10:02 v #11469 > > │ .ts output:
00:10:02 v #11470 > > │ __assert_eq / actual: US0_0 5 / expected: US0_0 5
00:10:02 v #11471 > > │
00:10:02 v #11472 > > │ .py output:
00:10:02 v #11473 > > │ __assert_eq / actual: US0_0 5 / expected: US0_0 5
00:10:02 v #11474 > > │
00:10:02 v #11475 > > │
00:10:02 v #11476 > >
00:10:02 v #11477 > > ── [ 5.84s - stdout ] ──────────────────────────────────────────────────────────
00:10:02 v #11478 > > │ .fsx output:
00:10:02 v #11479 > > │ __assert_eq / actual: US0_0 5 / expected: US0_0 5
00:10:02 v #11480 > > │
00:10:02 v #11481 > >
00:10:02 v #11482 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:02 v #11483 > > │ ### indexed
00:10:02 v #11484 > >
00:10:02 v #11485 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:02 v #11486 > > inl indexed forall t u {number}. (ar : array_base t) : array_base (u * t) =
00:10:02 v #11487 > >     ((0, a ;[[]]), (a ar : _ int _))
00:10:02 v #11488 > >     ||> am.fold fun (i, acc) x =>
00:10:02 v #11489 > >         i + 1, acc ++ a ;[[i, x]]
00:10:02 v #11490 > >     |> snd
00:10:02 v #11491 > >     |> fun (a x : _ int _) => x
00:10:02 v #11492 > >
00:10:02 v #11493 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:02 v #11494 > > //// test
00:10:02 v #11495 > > ///! fsharp
00:10:02 v #11496 > > ////! cuda // Only stack allocated primitive types (i8,i16,i32,i64 and
00:10:02 v #11497 > > u8,u16,u32,u64 and f32,f64 and bool) are allowed in CuPy arrays.
00:10:02 v #11498 > > ///! rust
00:10:02 v #11499 > > ///! typescript
00:10:02 v #11500 > > ///! python
00:10:02 v #11501 > >
00:10:02 v #11502 > > am.init 3i32 ((*) 2)
00:10:02 v #11503 > > |> fun (a x : _ int _) => x
00:10:02 v #11504 > > |> indexed
00:10:02 v #11505 > > |> _assert_eq' ;[[0i32, 0; 1, 2; 2, 4]]
00:10:10 v #11506 > >
00:10:10 v #11507 > > ── [ 8.04s - return value ] ────────────────────────────────────────────────────
00:10:10 v #11508 > > │ .rs output:
00:10:10 v #11509 > > │ __assert_eq' / actual: Array(MutCell([(0, 0), (1, 2), (2,
00:10:10 v #11510 > > 4)])) / expected: Array(MutCell([(0, 0), (1, 2), (2, 4)]))
00:10:10 v #11511 > > │
00:10:10 v #11512 > > │ .ts output:
00:10:10 v #11513 > > │ __assert_eq' / actual: 0,0,1,2,2,4 / expected: 0,0,1,2,2,4
00:10:10 v #11514 > > │
00:10:10 v #11515 > > │ .py output:
00:10:10 v #11516 > > │ __assert_eq' / actual: [(0, 0), (1, 2), (2, 4)] / expected:
00:10:10 v #11517 > > [(0, 0), (1, 2), (2, 4)]
00:10:10 v #11518 > > │
00:10:10 v #11519 > > │
00:10:10 v #11520 > >
00:10:10 v #11521 > > ── [ 8.04s - stdout ] ──────────────────────────────────────────────────────────
00:10:10 v #11522 > > │ .fsx output:
00:10:10 v #11523 > > │ __assert_eq' / actual: [|struct (0, 0); struct (1, 2); struct
00:10:10 v #11524 > > (2, 4)|] / expected: [|struct (0, 0); struct (1, 2); struct (2, 4)|]
00:10:10 v #11525 > > │
00:10:10 v #11526 > >
00:10:10 v #11527 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:10 v #11528 > > │ ### slice
00:10:10 v #11529 > >
00:10:10 v #11530 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:10 v #11531 > > inl slice forall dim {int; number} el. from nearTo s : a dim el =
00:10:10 v #11532 > >     am.slice { from nearTo } s
00:10:11 v #11533 > >
00:10:11 v #11534 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:11 v #11535 > > //// test
00:10:11 v #11536 > > ///! fsharp
00:10:11 v #11537 > > ///! cuda
00:10:11 v #11538 > > ///! rust
00:10:11 v #11539 > > ///! typescript
00:10:11 v #11540 > > ///! python
00:10:11 v #11541 > >
00:10:11 v #11542 > > inl x : _ i32 _ = a ;[[ 1i32; 2; 3 ]]
00:10:11 v #11543 > > x |> slice 0 0 |> _assert_eq (a ;[[]])
00:10:11 v #11544 > > x |> slice 0 1 |> _assert_eq (a ;[[ 1 ]])
00:10:11 v #11545 > > x |> slice 1 1 |> _assert_eq (a ;[[]])
00:10:11 v #11546 > > x |> slice 1 2 |> _assert_eq (a ;[[ 2 ]])
00:10:11 v #11547 > > x |> slice 2 2 |> _assert_eq (a ;[[]])
00:10:11 v #11548 > > x |> slice 0 2 |> _assert_eq (a ;[[ 1; 2 ]])
00:10:19 v #11549 > >
00:10:19 v #11550 > > ── [ 8.11s - return value ] ────────────────────────────────────────────────────
00:10:19 v #11551 > > │
00:10:19 v #11552 > > │ .py output (Cuda):
00:10:19 v #11553 > > │ __assert_eq / actual: [] / expected: []
00:10:19 v #11554 > > │ __assert_eq / actual: [1] / expected: [1]
00:10:19 v #11555 > > │ __assert_eq / actual: [] / expected: []
00:10:19 v #11556 > > │ __assert_eq / actual: [2] / expected: [2]
00:10:19 v #11557 > > │ __assert_eq / actual: [] / expected: []
00:10:19 v #11558 > > │ __assert_eq / actual: [1 2] / expected: [1 2]
00:10:19 v #11559 > > │
00:10:19 v #11560 > > │
00:10:19 v #11561 > > │ .rs output:
00:10:19 v #11562 > > │ __assert_eq / actual: Array(MutCell([])) / expected:
00:10:19 v #11563 > > Array(MutCell([]))
00:10:19 v #11564 > > │ __assert_eq / actual: Array(MutCell([1])) / expected:
00:10:19 v #11565 > > Array(MutCell([1]))
00:10:19 v #11566 > > │ __assert_eq / actual: Array(MutCell([])) / expected:
00:10:19 v #11567 > > Array(MutCell([]))
00:10:19 v #11568 > > │ __assert_eq / actual: Array(MutCell([2])) / expected:
00:10:19 v #11569 > > Array(MutCell([2]))
00:10:19 v #11570 > > │ __assert_eq / actual: Array(MutCell([])) / expected:
00:10:19 v #11571 > > Array(MutCell([]))
00:10:19 v #11572 > > │ __assert_eq / actual: Array(MutCell([1, 2])) / expected:
00:10:19 v #11573 > > Array(MutCell([1, 2]))
00:10:19 v #11574 > > │
00:10:19 v #11575 > > │
00:10:19 v #11576 > > │ .ts output:
00:10:19 v #11577 > > │ __assert_eq / actual:  / expected:
00:10:19 v #11578 > > │ __assert_eq / actual: 1 / expected: 1
00:10:19 v #11579 > > │ __assert_eq / actual:  / expected:
00:10:19 v #11580 > > │ __assert_eq / actual: 2 / expected: 2
00:10:19 v #11581 > > │ __assert_eq / actual:  / expected:
00:10:19 v #11582 > > │ __assert_eq / actual: 1,2 / expected: 1,2
00:10:19 v #11583 > > │
00:10:19 v #11584 > > │
00:10:19 v #11585 > > │ .py output:
00:10:19 v #11586 > > │ __assert_eq / actual: [] / expected: array('l')
00:10:19 v #11587 > > │ __assert_eq / actual: [1] / expected: array('l', [1])
00:10:19 v #11588 > > │ __assert_eq / actual: [] / expected: array('l')
00:10:19 v #11589 > > │ __assert_eq / actual: [2] / expected: array('l', [2])
00:10:19 v #11590 > > │ __assert_eq / actual: [] / expected: array('l')
00:10:19 v #11591 > > │ __assert_eq / actual: [1, 2] / expected: array('l', [1, 2])
00:10:19 v #11592 > > │
00:10:19 v #11593 > > │
00:10:19 v #11594 > > │
00:10:19 v #11595 > >
00:10:19 v #11596 > > ── [ 8.11s - stdout ] ──────────────────────────────────────────────────────────
00:10:19 v #11597 > > │ .fsx output:
00:10:19 v #11598 > > │ __assert_eq / actual: [||] / expected: [||]
00:10:19 v #11599 > > │ __assert_eq / actual: [|1|] / expected: [|1|]
00:10:19 v #11600 > > │ __assert_eq / actual: [||] / expected: [||]
00:10:19 v #11601 > > │ __assert_eq / actual: [|2|] / expected: [|2|]
00:10:19 v #11602 > > │ __assert_eq / actual: [||] / expected: [||]
00:10:19 v #11603 > > │ __assert_eq / actual: [|1; 2|] / expected: [|1; 2|]
00:10:19 v #11604 > > │
00:10:19 v #11605 > >
00:10:19 v #11606 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:19 v #11607 > > │ ### range
00:10:19 v #11608 > >
00:10:19 v #11609 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:19 v #11610 > > union range dim =
00:10:19 v #11611 > >     | Start : dim
00:10:19 v #11612 > >     | End : (() -> dim) -> dim
00:10:19 v #11613 > >
00:10:19 v #11614 > > inl range start end s =
00:10:19 v #11615 > >     inl start, end =
00:10:19 v #11616 > >         inl len () =
00:10:19 v #11617 > >             s |> length |> conv
00:10:19 v #11618 > >         match start, end with
00:10:19 v #11619 > >         | Start start, End fn =>
00:10:19 v #11620 > >             start, fn len
00:10:19 v #11621 > >         | End start_fn, End end_fn =>
00:10:19 v #11622 > >             start_fn len, end_fn len
00:10:19 v #11623 > >     s |> slice (start |> unbox) (end |> unbox)
00:10:19 v #11624 > >
00:10:19 v #11625 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:19 v #11626 > > │ ## rust
00:10:19 v #11627 > >
00:10:19 v #11628 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:19 v #11629 > > │ ### vec
00:10:19 v #11630 > >
00:10:19 v #11631 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:19 v #11632 > > nominal vec t =
00:10:19 v #11633 > >     `(
00:10:19 v #11634 > >         backend_switch `(()) `({}) {
00:10:19 v #11635 > >             Fsharp =
00:10:19 v #11636 > >                 (fun () =>
00:10:19 v #11637 > >                     global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:10:19 v #11638 > > Fable.Core.Emit(\"Vec<$0>\")>]]\n#endif\ntype Vec<'T> = class end"
00:10:19 v #11639 > >                 ) : () -> ()
00:10:19 v #11640 > >         }
00:10:19 v #11641 > >         $'' : $'Vec<`t>'
00:10:19 v #11642 > >     )
00:10:19 v #11643 > >
00:10:19 v #11644 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:19 v #11645 > > │ ### from_vec
00:10:19 v #11646 > >
00:10:19 v #11647 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:19 v #11648 > > inl from_vec forall dim el. (vec : vec el) : a dim el =
00:10:19 v #11649 > >     !\\(vec, $'"fable_library_rust::NativeArray_::array_from($0.clone())"')
00:10:19 v #11650 > >
00:10:19 v #11651 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:19 v #11652 > > │ ### from_vec_base
00:10:19 v #11653 > >
00:10:19 v #11654 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:19 v #11655 > > inl from_vec_base forall el. (vec : vec el) : array_base el =
00:10:19 v #11656 > >     !\\(vec, $'"fable_library_rust::NativeArray_::array_from($0.clone())"')
00:10:19 v #11657 > >
00:10:19 v #11658 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:19 v #11659 > > │ ### to_vec
00:10:19 v #11660 > >
00:10:19 v #11661 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:19 v #11662 > > inl to_vec forall t. (ab : array_base t) : vec t =
00:10:19 v #11663 > >     !\\(ab, $'"$0.to_vec()"')
00:10:19 v #11664 > >
00:10:19 v #11665 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:19 v #11666 > > │ ### to_vec'
00:10:19 v #11667 > >
00:10:19 v #11668 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:19 v #11669 > > inl to_vec' forall (t : * -> * -> *) u v. (x : t u v) : vec u =
00:10:19 v #11670 > >     !\($'$"!x.to_vec()"')
00:10:20 v #11671 > >
00:10:20 v #11672 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:20 v #11673 > > │ ### to_vec''
00:10:20 v #11674 > >
00:10:20 v #11675 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:20 v #11676 > > inl to_vec'' forall (t : * -> *) (u : * -> *) v. (x : t (u v)) : vec v =
00:10:20 v #11677 > >     !\($'$"!x.to_vec()"')
00:10:20 v #11678 > >
00:10:20 v #11679 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:20 v #11680 > > │ ### to_vec'''
00:10:20 v #11681 > >
00:10:20 v #11682 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:20 v #11683 > > inl to_vec''' forall t. (ab : array_base t) : vec t =
00:10:20 v #11684 > >     !\\(ab, $'"to_vec($0)"')
00:10:20 v #11685 > >
00:10:20 v #11686 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:20 v #11687 > > │ ### vec_push
00:10:20 v #11688 > >
00:10:20 v #11689 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:20 v #11690 > > inl vec_push forall el. (el : el) (vec : vec el) : vec el =
00:10:20 v #11691 > >     inl el = join el
00:10:20 v #11692 > >     inl vec = join vec
00:10:20 v #11693 > >     (!\($'"true; let mut !vec = !vec"') : bool) |> ignore
00:10:20 v #11694 > >     // inl vec = vec |> rust.to_mut
00:10:20 v #11695 > >     (!\($'"true; !vec.push(!el)"') : bool) |> ignore
00:10:20 v #11696 > >     !\($'"!vec"')
00:10:20 v #11697 > >
00:10:20 v #11698 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:20 v #11699 > > │ ### vec_reverse
00:10:20 v #11700 > >
00:10:20 v #11701 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:20 v #11702 > > inl vec_reverse forall el. (vec : vec el) : vec el =
00:10:20 v #11703 > >     inl vec = join vec
00:10:20 v #11704 > >     (!\($'"true; let mut !vec = !vec"') : bool) |> ignore
00:10:20 v #11705 > >     (!\($'"true; !vec.reverse()"') : bool) |> ignore
00:10:20 v #11706 > >     !\($'"!vec"')
00:10:20 v #11707 > >
00:10:20 v #11708 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:20 v #11709 > > │ ### vec_retain
00:10:20 v #11710 > >
00:10:20 v #11711 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:20 v #11712 > > inl vec_retain forall el. (fn : el -> bool) (vec : vec el) : vec el =
00:10:20 v #11713 > >     inl vec = join vec
00:10:20 v #11714 > >     inl fn = join fn
00:10:20 v #11715 > >     (!\($'"true; let mut !vec = !vec"') : bool) |> ignore
00:10:20 v #11716 > >     // inl vec = vec |> rust.to_mut
00:10:20 v #11717 > >     (!\($'"true; !vec.retain(|x| !fn(x.clone()))"') : bool) |> ignore
00:10:20 v #11718 > >     !\($'"!vec"')
00:10:20 v #11719 > >
00:10:20 v #11720 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:20 v #11721 > > │ ### vec_sort_by_key
00:10:20 v #11722 > >
00:10:20 v #11723 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:20 v #11724 > > inl vec_sort_by_key forall el t. (fn : el -> t) (vec : vec el) : vec el =
00:10:20 v #11725 > >     inl vec = join vec
00:10:20 v #11726 > >     inl fn = join fn
00:10:20 v #11727 > >     (!\($'"true; let mut !vec = !vec"') : bool) |> ignore
00:10:20 v #11728 > >     // inl vec = vec |> rust.to_mut
00:10:20 v #11729 > >     (!\($'"true; !vec.sort_by_key(|x| !fn(x.clone()))"') : bool) |> ignore
00:10:20 v #11730 > >     !\($'"!vec"')
00:10:20 v #11731 > >
00:10:20 v #11732 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:20 v #11733 > > │ ### vec_extend
00:10:20 v #11734 > >
00:10:20 v #11735 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:20 v #11736 > > inl vec_extend forall el. (el : vec el) (vec : vec el) : vec el =
00:10:20 v #11737 > >     inl el = join el
00:10:20 v #11738 > >     inl vec = join vec
00:10:20 v #11739 > >     (!\($'"true; let mut !vec = !vec"') : bool) |> ignore
00:10:20 v #11740 > >     // inl vec = vec |> rust.to_mut
00:10:20 v #11741 > >     (!\($'"true; !vec.extend(!el)"') : bool) |> ignore
00:10:20 v #11742 > >     !\($'"!vec"')
00:10:21 v #11743 > >
00:10:21 v #11744 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:21 v #11745 > > │ ### vec_mapi
00:10:21 v #11746 > >
00:10:21 v #11747 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:21 v #11748 > > inl vec_mapi forall dim t u. (fn : dim -> t -> u) (ar : vec t) : vec u =
00:10:21 v #11749 > >     inl fn = join fn
00:10:21 v #11750 > >     inl ar = join ar
00:10:21 v #11751 > >     !\($'"!ar.iter().enumerate().map(|(i, x)|
00:10:21 v #11752 > > !fn(i.try_into().unwrap())(x.clone())).collect::<Vec<_>>()"')
00:10:21 v #11753 > >
00:10:21 v #11754 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:21 v #11755 > > │ ### vec_map
00:10:21 v #11756 > >
00:10:21 v #11757 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:21 v #11758 > > inl vec_map forall t u. (fn : t -> u) (ar : vec t) : vec u =
00:10:21 v #11759 > >     (!\\(ar, $'"true; let _vec_map : Vec<_> = $0.into_iter().map(|x| { //"') :
00:10:21 v #11760 > > bool) |> ignore
00:10:21 v #11761 > >     inl result = fn !\($'"x"')
00:10:21 v #11762 > >     inl is_unit =
00:10:21 v #11763 > >         real
00:10:21 v #11764 > >             typecase u with
00:10:21 v #11765 > >             | () => true
00:10:21 v #11766 > >             | _ => false
00:10:21 v #11767 > >     if is_unit
00:10:21 v #11768 > >     then (!\($'"true; }}).collect::<Vec<_>>()"') : bool) |> ignore
00:10:21 v #11769 > >     else (!\\(result, $'"true; $0 }).collect::<Vec<_>>()"') : bool) |> ignore
00:10:21 v #11770 > >     !\($'"_vec_map"')
00:10:21 v #11771 > >
00:10:21 v #11772 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:21 v #11773 > > │ ### vec_map'
00:10:21 v #11774 > >
00:10:21 v #11775 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:21 v #11776 > > inl vec_map' forall t u. (fn : t -> u) (ar : vec t) : vec u =
00:10:21 v #11777 > >     inl fn = fn |> rust.func1_from
00:10:21 v #11778 > >     inl fn x =
00:10:21 v #11779 > >         fn |> rust.func1_move x
00:10:21 v #11780 > >     !\\((ar, fn), $'"$0.into_iter().map(|x|
00:10:21 v #11781 > > $1(x.clone())).collect::<Vec<_>>()"')
00:10:21 v #11782 > >
00:10:21 v #11783 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:21 v #11784 > > │ ### vec_fold'
00:10:21 v #11785 > >
00:10:21 v #11786 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:21 v #11787 > > inl vec_fold' forall t u. (fn : u -> t -> u) (init : u) (ar : vec t) : u =
00:10:21 v #11788 > >     (!\\(ar, $'"true; let _vec_fold_ = $0.into_iter().fold(!init, |acc, x| {
00:10:21 v #11789 > > //"') : bool) |> ignore
00:10:21 v #11790 > >     (!\\(fn !\($'"acc"') !\($'"x"'), $'"true; $0 })"') : bool) |> ignore
00:10:21 v #11791 > >     !\($'"_vec_fold_"')
00:10:21 v #11792 > >
00:10:21 v #11793 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:21 v #11794 > > │ ### vec_for_each
00:10:21 v #11795 > >
00:10:21 v #11796 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:21 v #11797 > > inl vec_for_each forall t. (fn : t -> ()) (ar : vec t) : () =
00:10:21 v #11798 > >     (!\\((ar, fn), $'"true; $0.iter().for_each(|x| { $1(x.clone()); }); //"') :
00:10:21 v #11799 > > bool) |> ignore
00:10:21 v #11800 > >
00:10:21 v #11801 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:21 v #11802 > > │ ### vec_for_each'
00:10:21 v #11803 > >
00:10:21 v #11804 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:21 v #11805 > > inl vec_for_each' forall t. (fn : t -> ()) (ar : vec t) : () =
00:10:21 v #11806 > >     (!\\(ar, $'"true; $0.into_iter().for_each(|x| { //"') : bool) |> ignore
00:10:21 v #11807 > >     (!\\(fn !\($'"x"'), $'$"true"') : bool) |> ignore
00:10:21 v #11808 > >     (!\($'"true; }}); { //"') : bool) |> ignore
00:10:22 v #11809 > >
00:10:22 v #11810 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:22 v #11811 > > │ ### vec_for_each''
00:10:22 v #11812 > >
00:10:22 v #11813 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:22 v #11814 > > inl vec_for_each'' forall t. (fn : t -> ()) (ar : vec t) : () =
00:10:22 v #11815 > >     (!\\(ar, $'"true; $0.into_iter().for_each(|x| { //"') : bool) |> ignore
00:10:22 v #11816 > >     (!\\(fn !\($'"x"'), $'$"true"') : bool) |> ignore
00:10:22 v #11817 > >     (!\($'"true; }}); //"') : bool) |> ignore
00:10:22 v #11818 > >
00:10:22 v #11819 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:22 v #11820 > > │ ### vec_for_each'''
00:10:22 v #11821 > >
00:10:22 v #11822 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:22 v #11823 > > inl vec_for_each''' forall t. (fn : t -> ()) (ar : vec t) : () =
00:10:22 v #11824 > >     (!\\(ar, $'"true; $0.into_iter().for_each(|x| { //"') : bool) |> ignore
00:10:22 v #11825 > >     (!\\(fn !\($'"x"'), $'$"true"') : bool) |> ignore
00:10:22 v #11826 > >     (!\($'"true; }); //"') : bool) |> ignore
00:10:22 v #11827 > >
00:10:22 v #11828 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:22 v #11829 > > │ ### vec_filter
00:10:22 v #11830 > >
00:10:22 v #11831 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:22 v #11832 > > inl vec_filter forall t. (fn : t -> bool) (ar : vec t) : vec t =
00:10:22 v #11833 > >     inl fn = join fn
00:10:22 v #11834 > >     inl ar = join ar
00:10:22 v #11835 > >     !\($'"!ar.into_iter().filter(|x|
00:10:22 v #11836 > > !fn(x.clone().clone())).collect::<Vec<_>>()"')
00:10:22 v #11837 > >
00:10:22 v #11838 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:22 v #11839 > > │ ### vec_len
00:10:22 v #11840 > >
00:10:22 v #11841 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:22 v #11842 > > inl vec_len forall t. (vec : vec t) : unativeint =
00:10:22 v #11843 > >     !\\(vec, $'"$0.len()"')
00:10:22 v #11844 > >
00:10:22 v #11845 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:22 v #11846 > > │ ### vec_chunks
00:10:22 v #11847 > >
00:10:22 v #11848 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:22 v #11849 > > inl vec_chunks forall t. (n : i32) (vec : vec t) : vec (vec t) =
00:10:22 v #11850 > >     !\\(vec, $'"$0.chunks(!n).map(|x| x.into_iter().map(|x|
00:10:22 v #11851 > > x.clone()).collect::<Vec<_>>()).collect::<Vec<_>>()"')
00:10:22 v #11852 > >
00:10:22 v #11853 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:22 v #11854 > > │ ### slice
00:10:22 v #11855 > >
00:10:22 v #11856 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:22 v #11857 > > nominal slice t =
00:10:22 v #11858 > >     `(
00:10:22 v #11859 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:10:22 v #11860 > > Fable.Core.Emit(\"[[$0]]\")>]]\n#endif\ntype Slice<'T> = class end"
00:10:22 v #11861 > >         $'' : $'Slice<`t>'
00:10:22 v #11862 > >     )
00:10:22 v #11863 > >
00:10:22 v #11864 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:22 v #11865 > > │ ### slice'
00:10:22 v #11866 > >
00:10:22 v #11867 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:22 v #11868 > > nominal slice' el dim =
00:10:22 v #11869 > >     `(
00:10:22 v #11870 > >         backend_switch `(()) `({}) {
00:10:22 v #11871 > >             Fsharp =
00:10:22 v #11872 > >                 (fun () =>
00:10:22 v #11873 > >                     global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:10:22 v #11874 > > Fable.Core.Emit(\"_\")>]]\n#endif\ntype Slice'<'T> = class end"
00:10:22 v #11875 > >                 ) : () -> ()
00:10:22 v #11876 > >         }
00:10:22 v #11877 > >         $'' : $'Slice\'<`el>'
00:10:22 v #11878 > >     )
00:10:23 v #11879 > >
00:10:23 v #11880 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:23 v #11881 > > │ ### slice''
00:10:23 v #11882 > >
00:10:23 v #11883 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:23 v #11884 > > nominal slice'' el dim =
00:10:23 v #11885 > >     `(
00:10:23 v #11886 > >         backend_switch `(()) `({}) {
00:10:23 v #11887 > >             Fsharp =
00:10:23 v #11888 > >                 (fun () =>
00:10:23 v #11889 > >                     global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:10:23 v #11890 > > Fable.Core.Emit(\"[[$0; 10]]\")>]]\n#endif\ntype Slice'_<'T> = class end"
00:10:23 v #11891 > >                 ) : () -> ()
00:10:23 v #11892 > >         }
00:10:23 v #11893 > >         $'' : $'Slice\'_<`el>'
00:10:23 v #11894 > >     )
00:10:23 v #11895 > >
00:10:23 v #11896 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:23 v #11897 > > │ ### slice_singleton
00:10:23 v #11898 > >
00:10:23 v #11899 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:23 v #11900 > > inl slice_singleton forall dim el. (x : option el) : slice' el dim =
00:10:23 v #11901 > >     match x with
00:10:23 v #11902 > >     | Some x => !\($'"[[!x]]"')
00:10:23 v #11903 > >     | None =>
00:10:23 v #11904 > >         !\($'"[[\\\"\\\".to_string()]]"') : slice' el dim
00:10:23 v #11905 > >             // emit_expr `(()) `(slice' el dim) () ($'"[[@dim]]"' : string) :
00:10:23 v #11906 > > slice' el 10
00:10:23 v #11907 > >             // !\( : string) : slice' el i32 // !\($'"[[]]"')
00:10:23 v #11908 > >
00:10:23 v #11909 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:23 v #11910 > > │ ### slice_length
00:10:23 v #11911 > >
00:10:23 v #11912 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:23 v #11913 > > inl slice_length forall t dim. (x : slice' t dim) : unativeint =
00:10:23 v #11914 > >     !\($'"!x.len()"')
00:10:23 v #11915 > >
00:10:23 v #11916 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:23 v #11917 > > │ ### slice_range
00:10:23 v #11918 > >
00:10:23 v #11919 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:23 v #11920 > > inl slice_range forall t dim. (start : range t) (end : range t) (s : slice' t
00:10:23 v #11921 > > dim) : rust.ref (slice' t dim) =
00:10:23 v #11922 > >     inl len () =
00:10:23 v #11923 > >         s |> slice_length
00:10:23 v #11924 > >     inl start, (end : unativeint) =
00:10:23 v #11925 > >         match start, end with
00:10:23 v #11926 > >         | Start start, End fn => start, (len >> convert) |> fn |> convert
00:10:23 v #11927 > >         | End start_fn, End end_fn => (len >> convert) |> start_fn, (len >>
00:10:23 v #11928 > > convert) |> end_fn |> convert
00:10:23 v #11929 > >     match start, end with
00:10:23 v #11930 > >     | start, end when unbox end =. len () => !\($'"&!s[[!start..]]"')
00:10:23 v #11931 > >     | start, end => !\\((start, end), $'"&!s[[$0..$1]]"')
00:10:23 v #11932 > >
00:10:23 v #11933 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:23 v #11934 > > │ ### new_slice
00:10:23 v #11935 > >
00:10:23 v #11936 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:23 v #11937 > > inl new_slice forall el dim. (el : el) : slice' el dim =
00:10:23 v #11938 > >     !\\(el, $'"[[$0; @dim]]"')
00:10:23 v #11939 > >
00:10:23 v #11940 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:23 v #11941 > > │ ### as_slice
00:10:23 v #11942 > >
00:10:23 v #11943 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:23 v #11944 > > inl as_slice forall t. (x : array_base t) : rust.ref (slice t) =
00:10:23 v #11945 > >     inl x = x |> to_vec
00:10:23 v #11946 > >     !\($'"!x.as_slice()"')
00:10:24 v #11947 > >
00:10:24 v #11948 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:24 v #11949 > > │ ### slice_to_vec
00:10:24 v #11950 > >
00:10:24 v #11951 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:24 v #11952 > > inl slice_to_vec forall t. (slice : rust.ref (slice t)) : vec t =
00:10:24 v #11953 > >     !\\(slice, $'"$0.iter().map(|x| *x).collect::<Vec<_>>()"')
00:10:24 v #11954 > >
00:10:24 v #11955 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:24 v #11956 > > │ ### to_le_bytes
00:10:24 v #11957 > >
00:10:24 v #11958 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:24 v #11959 > > inl to_le_bytes forall t. (x : t) : slice' u8 8 =
00:10:24 v #11960 > >     !\($'$"!x.to_le_bytes()"')
00:10:24 v #11961 > >
00:10:24 v #11962 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:24 v #11963 > > │ ### as_bytes
00:10:24 v #11964 > >
00:10:24 v #11965 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:24 v #11966 > > inl as_bytes forall t. (x : t) : rust.ref (slice u8) =
00:10:24 v #11967 > >     !\($'$"!x.as_bytes()"')
00:10:24 v #11968 > >
00:10:24 v #11969 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:24 v #11970 > > │ ### any
00:10:24 v #11971 > >
00:10:24 v #11972 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:24 v #11973 > > inl any forall t. (fn : t -> bool) (source : array_base t) : bool =
00:10:24 v #11974 > >     !\($'"!source.any(|x| !fn(x))"')
00:10:24 v #11975 > >
00:10:24 v #11976 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:24 v #11977 > > │ ### iter_collect vec
00:10:24 v #11978 > >
00:10:24 v #11979 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:24 v #11980 > > instance iter_collect vec = fun (iter : into_iterator u) =>
00:10:24 v #11981 > >     !\\(iter, $'"$0.collect::<Vec<_>>()"')
00:10:24 v #11982 > >
00:10:24 v #11983 > > instance iter_collect'' vec = fun (iter : into_iterator (t (u v))) =>
00:10:24 v #11984 > >     !\\(iter, $'"$0.collect::<Vec<_>>()"')
00:10:24 v #11985 > >
00:10:24 v #11986 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:24 v #11987 > > │ ### new_vec
00:10:24 v #11988 > >
00:10:24 v #11989 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:24 v #11990 > > inl new_vec forall t. (items : list t) : vec t =
00:10:24 v #11991 > >     inl items =
00:10:24 v #11992 > >         (items, ("", 0i32))
00:10:24 v #11993 > >         ||> listm.foldBack fun (x : t) (acc, i) =>
00:10:24 v #11994 > >             $'"!x"' +. (if i = 0 then "" else ", ") +. acc, i + 1
00:10:24 v #11995 > >         |> fst
00:10:24 v #11996 > >     !\($'"vec\![[" + !items + "]]"')
00:10:25 v #11997 > >
00:10:25 v #11998 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:25 v #11999 > > //// test
00:10:25 v #12000 > > ///! rust
00:10:25 v #12001 > >
00:10:25 v #12002 > > [[ 0i32; 1 ]]
00:10:25 v #12003 > > |> new_vec
00:10:25 v #12004 > > |> sm'.format_debug'
00:10:25 v #12005 > > |> sm'.from_std_string
00:10:25 v #12006 > > |> _assert_eq "[[0, 1]]"
00:10:30 v #12007 > >
00:10:30 v #12008 > > ── [ 5.33s - return value ] ────────────────────────────────────────────────────
00:10:30 v #12009 > > │ __assert_eq / actual: "[0, 1]" / expected: "[0, 1]"
00:10:30 v #12010 > > │
00:10:30 v #12011 > >
00:10:30 v #12012 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:30 v #12013 > > │ ## fsharp
00:10:30 v #12014 > >
00:10:30 v #12015 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:30 v #12016 > > │ ### average
00:10:30 v #12017 > >
00:10:30 v #12018 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:30 v #12019 > > inl average forall el {number}. (a : a _ el) : el =
00:10:30 v #12020 > >     $'!a |> Array.average'
00:10:30 v #12021 > >
00:10:30 v #12022 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:30 v #12023 > > │ ### distinct
00:10:30 v #12024 > >
00:10:30 v #12025 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:30 v #12026 > > inl distinct forall dim el. (a : a dim el) : a dim el =
00:10:30 v #12027 > >     $'!a |> Array.distinct'
00:10:30 v #12028 > >
00:10:30 v #12029 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:30 v #12030 > > │ ### skip
00:10:30 v #12031 > >
00:10:30 v #12032 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:30 v #12033 > > inl skip forall dim el. (n : dim) (a : a dim el) : a dim el =
00:10:30 v #12034 > >     $'!a |> Array.skip !n '
00:10:30 v #12035 > >
00:10:30 v #12036 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:30 v #12037 > > │ ### skip_while
00:10:30 v #12038 > >
00:10:30 v #12039 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:30 v #12040 > > inl skip_while forall dim el. (fn : el -> bool) (a : a dim el) : a dim el =
00:10:30 v #12041 > >     $'!a |> Array.skipWhile !fn '
00:10:31 v #12042 > >
00:10:31 v #12043 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:31 v #12044 > > │ ### to_list_base'
00:10:31 v #12045 > >
00:10:31 v #12046 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:31 v #12047 > > inl to_list_base' forall t. (items : array_base t) : listm'.list' t =
00:10:31 v #12048 > >     backend_switch {
00:10:31 v #12049 > >         Fsharp = fun () => $'!items |> Array.toList' : listm'.list' t
00:10:31 v #12050 > >         Python = fun () => items |> to : listm'.list' t
00:10:31 v #12051 > >     }
00:10:31 v #12052 > >
00:10:31 v #12053 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:31 v #12054 > > │ ### to_list'
00:10:31 v #12055 > >
00:10:31 v #12056 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:31 v #12057 > > inl to_list' forall dim {int} t. (items : a dim t) : listm'.list' t =
00:10:31 v #12058 > >     items |> base |> to_list_base'
00:10:31 v #12059 > >
00:10:31 v #12060 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:31 v #12061 > > //// test
00:10:31 v #12062 > > ///! fsharp
00:10:31 v #12063 > > ///! cuda
00:10:31 v #12064 > > ///! rust
00:10:31 v #12065 > > ///! typescript
00:10:31 v #12066 > > ///! python
00:10:31 v #12067 > >
00:10:31 v #12068 > > a' ;[[ -3i32; 6 ]]
00:10:31 v #12069 > > |> to_list'
00:10:31 v #12070 > > |> listm'.unbox
00:10:31 v #12071 > > |> _assert_eq [[ -3; 6 ]]
00:10:39 v #12072 > >
00:10:39 v #12073 > > ── [ 7.71s - return value ] ────────────────────────────────────────────────────
00:10:39 v #12074 > > │ .py output (Cuda):
00:10:39 v #12075 > > │ __assert_eq / actual: UH0_1(v0=np.int32(-3),
00:10:39 v #12076 > > v1=UH0_1(v0=np.int32(6), v1=UH0_0())) / expected: UH0_1(v0=-3, v1=UH0_1(v0=6,
00:10:39 v #12077 > > v1=UH0_0()))
00:10:39 v #12078 > > │
00:10:39 v #12079 > > │ .rs output:
00:10:39 v #12080 > > │ __assert_eq / actual: UH0_1(-3, UH0_1(6, UH0_0)) / expected:
00:10:39 v #12081 > > UH0_1(-3, UH0_1(6, UH0_0))
00:10:39 v #12082 > > │
00:10:39 v #12083 > > │ .ts output:
00:10:39 v #12084 > > │ __assert_eq / actual: UH0_1 (-3, UH0_1 (6, UH0_0))
00:10:39 v #12085 > > expected: UH0_1 (-3, UH0_1 (6, UH0_0))
00:10:39 v #12086 > > │
00:10:39 v #12087 > > │ .py output:
00:10:39 v #12088 > > │ __assert_eq / actual: UH0_1 (-3, UH0_1 (6, UH0_0))
00:10:39 v #12089 > > expected: UH0_1 (-3, UH0_1 (6, UH0_0))
00:10:39 v #12090 > > │
00:10:39 v #12091 > > │
00:10:39 v #12092 > >
00:10:39 v #12093 > > ── [ 7.72s - stdout ] ──────────────────────────────────────────────────────────
00:10:39 v #12094 > > │ .fsx output:
00:10:39 v #12095 > > │ __assert_eq / actual: UH0_1 (-3, UH0_1 (6, UH0_0))
00:10:39 v #12096 > > expected: UH0_1 (-3, UH0_1 (6, UH0_0))
00:10:39 v #12097 > > │
00:10:39 v #12098 > >
00:10:39 v #12099 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:39 v #12100 > > │ ### vec_collect
00:10:39 v #12101 > >
00:10:39 v #12102 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:39 v #12103 > > inl vec_collect fn vec =
00:10:39 v #12104 > >     ((;[[]] |> to_vec), ((vec |> from_vec : _ int _) |> to_list' |>
00:10:39 v #12105 > > listm'.unbox))
00:10:39 v #12106 > >     ||> listm.fold fun acc x =>
00:10:39 v #12107 > >         acc |> vec_extend (fn x)
00:10:39 v #12108 > >
00:10:39 v #12109 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:39 v #12110 > > │ ### vec_collect_option
00:10:39 v #12111 > >
00:10:39 v #12112 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:39 v #12113 > > inl vec_collect_option vec =
00:10:39 v #12114 > >     ((;[[]] |> to_vec |> Ok), ((vec |> from_vec : _ int _) |> am.toList))
00:10:39 v #12115 > >     ||> listm.fold fun acc x =>
00:10:39 v #12116 > >         x
00:10:39 v #12117 > >         |> resultm.unbox
00:10:39 v #12118 > >         |> fun x =>
00:10:39 v #12119 > >             match acc, x |> resultm.map optionm'.unbox with
00:10:39 v #12120 > >             | Ok acc, Ok (Some x) => acc |> vec_extend x |> Ok
00:10:39 v #12121 > >             | _, Error error => error |> Error
00:10:39 v #12122 > >             | _ => acc
00:10:39 v #12123 > >
00:10:39 v #12124 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:39 v #12125 > > │ ### vec_collect_into
00:10:39 v #12126 > >
00:10:39 v #12127 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:39 v #12128 > > inl vec_collect_into forall (c : * -> * -> *) t e.
00:10:39 v #12129 > >     (x : vec (c t e))
00:10:39 v #12130 > >     : c (vec t) e
00:10:39 v #12131 > >     =
00:10:39 v #12132 > >     !\($'"!x.into_iter().collect()"')
00:10:39 v #12133 > >
00:10:39 v #12134 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:39 v #12135 > > │ ### parallel_map
00:10:39 v #12136 > >
00:10:39 v #12137 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:39 v #12138 > > inl parallel_map forall dim el el'. (fn : el -> el') (a : a dim el) : a dim el'
00:10:39 v #12139 > > =
00:10:39 v #12140 > >     $'!a |> Array.Parallel.map !fn '
00:10:39 v #12141 > >
00:10:39 v #12142 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:39 v #12143 > > │ ### map'
00:10:39 v #12144 > >
00:10:39 v #12145 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:39 v #12146 > > inl map' forall dim el el'. (fn : el -> el') (a : a dim el) : a dim el' =
00:10:39 v #12147 > >     $'!a |> Array.map !fn '
00:10:39 v #12148 > >
00:10:39 v #12149 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:39 v #12150 > > │ ### sort_by
00:10:39 v #12151 > >
00:10:39 v #12152 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:39 v #12153 > > inl sort_by forall dim el. (fn : el -> _) (a : a dim el) : a dim el =
00:10:39 v #12154 > >     $'!a |> Array.sortBy !fn '
00:10:40 v #12155 > >
00:10:40 v #12156 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:40 v #12157 > > │ ### sort
00:10:40 v #12158 > >
00:10:40 v #12159 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:40 v #12160 > > inl sort forall dim el. (a : a dim el) : a dim el =
00:10:40 v #12161 > >     $'!a |> Array.sort'
00:10:40 v #12162 > >
00:10:40 v #12163 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:40 v #12164 > > │ ### sort_descending
00:10:40 v #12165 > >
00:10:40 v #12166 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:40 v #12167 > > inl sort_descending forall dim el. (a : a dim el) : a dim el =
00:10:40 v #12168 > >     $'!a |> Array.sortDescending'
00:10:40 v #12169 > >
00:10:40 v #12170 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:40 v #12171 > > │ ### transpose
00:10:40 v #12172 > >
00:10:40 v #12173 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:40 v #12174 > > inl transpose forall el. (a : array_base (array_base el)) : array_base
00:10:40 v #12175 > > (array_base el) =
00:10:40 v #12176 > >     $'!a |> Array.transpose'
00:10:40 v #12177 > >
00:10:40 v #12178 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:40 v #12179 > > │ ### try_item
00:10:40 v #12180 > >
00:10:40 v #12181 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:40 v #12182 > > inl try_item forall dim el. (i : i32) (a : a dim el) : option el =
00:10:40 v #12183 > >     $'!a |> Array.tryItem !i ' |> optionm'.unbox
00:10:40 v #12184 > 00:01:31 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 43697 }
00:10:40 v #12185 > 00:01:31 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/am'.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/am'.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:10:41 v #12186 > 00:01:32 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/am'.dib.ipynb to html
00:10:41 v #12187 > 00:01:32 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:10:41 v #12188 > 00:01:32 v #7 !   validate(nb)
00:10:41 v #12189 > 00:01:33 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:10:41 v #12190 > 00:01:33 v #9 !   return _pygments_highlight(
00:10:42 v #12191 > 00:01:33 v #10 ! [NbConvertApp] Writing 455159 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/am'.dib.html
00:10:42 v #12192 > 00:01:33 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 890 }
00:10:42 v #12193 > 00:01:33 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 890 }
00:10:42 v #12194 > 00:01:33 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/am''.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/am''.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:10:42 v #12195 > 00:01:34 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:10:42 v #12196 > 00:01:34 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:10:42 v #12197 > 00:01:34 d #16 spiral.run / dib / { exit_code = 0; result_length = 44646 }
00:10:42 d #12198 runtime.execute_with_options_async / { exit_code = 0; output_length = 49416 }
00:10:42 d #14 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path am'.dib --retries 3
00:10:42 d #12199 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path crypto.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path crypto.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:10:42 v #12200 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "crypto.dib", "--retries", "3"])) }
00:10:42 v #12201 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/crypto.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/crypto.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/crypto.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/crypto.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:10:44 v #12202 > >
00:10:44 v #12203 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:44 v #12204 > > │ # crypto
00:10:46 v #12205 > >
00:10:46 v #12206 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:46 v #12207 > > open rust
00:10:46 v #12208 > > open rust_operators
00:10:47 v #12209 > >
00:10:47 v #12210 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:47 v #12211 > > //// test
00:10:47 v #12212 > >
00:10:47 v #12213 > > open testing
00:10:47 v #12214 > > open file_system_operators
00:10:47 v #12215 > >
00:10:47 v #12216 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:47 v #12217 > > │ ## fsharp
00:10:47 v #12218 > >
00:10:47 v #12219 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:47 v #12220 > > │ ### sha256
00:10:47 v #12221 > >
00:10:47 v #12222 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:47 v #12223 > > nominal sha256 = $'System.Security.Cryptography.SHA256'
00:10:47 v #12224 > >
00:10:47 v #12225 > > inl sha256 () : sha256 =
00:10:47 v #12226 > >     $'`sha256.Create' ()
00:10:47 v #12227 > >
00:10:47 v #12228 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:47 v #12229 > > │ ### sha256_compute_hash
00:10:47 v #12230 > >
00:10:47 v #12231 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:47 v #12232 > > inl sha256_compute_hash (x : sha256) (data : a i32 u8) : a i32 u8 =
00:10:47 v #12233 > >     data |> $'!x.ComputeHash'
00:10:47 v #12234 > >
00:10:47 v #12235 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:47 v #12236 > > │ ## rust
00:10:47 v #12237 > >
00:10:47 v #12238 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:47 v #12239 > > │ ### get_file_hash'
00:10:47 v #12240 > >
00:10:47 v #12241 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:47 v #12242 > > inl get_file_hash' (path : string) : result string string =
00:10:47 v #12243 > >     inl path = path |> file_system.normalize_path
00:10:47 v #12244 > >     inl exit_code, result =
00:10:47 v #12245 > >         runtime.execution_options fun x => { x with
00:10:47 v #12246 > >             command = $'$"pwsh -c \\\"(Get-FileHash \'{!path}\' -Algorithm
00:10:47 v #12247 > > SHA256).Hash\\\""'
00:10:47 v #12248 > >         }
00:10:47 v #12249 > >         |> runtime.execute_with_options
00:10:47 v #12250 > >     if exit_code = 0
00:10:47 v #12251 > >     then result |> sm'.to_lower |> Ok
00:10:47 v #12252 > >     else result |> Error
00:10:48 v #12253 > >
00:10:48 v #12254 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:48 v #12255 > > //// test
00:10:48 v #12256 > >
00:10:48 v #12257 > > inl file_name = "test.txt"
00:10:48 v #12258 > > inl text = "\n"
00:10:48 v #12259 > >
00:10:48 v #12260 > > inl temp_dir, disposable =
00:10:48 v #12261 > >     (file_name, text)
00:10:48 v #12262 > >     |> sm'.format_debug
00:10:48 v #12263 > >     |> crypto.hash_text
00:10:48 v #12264 > >     |> file_system.create_temp_dir'
00:10:48 v #12265 > > disposable |> use |> ignore
00:10:48 v #12266 > > inl path = temp_dir </> file_name
00:10:48 v #12267 > > text |> file_system.write_all_text_async path |> async.run_synchronously
00:10:48 v #12268 > > path
00:10:48 v #12269 > > |> get_file_hash'
00:10:48 v #12270 > > |> resultm.get
00:10:48 v #12271 > > |> _assert_eq "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b"
00:11:00 v #12272 > >
00:11:00 v #12273 > > ── [ 12.83s - stdout ] ─────────────────────────────────────────────────────────
00:11:00 v #12274 > > │ 00:00:00 d #1 runtime.execute_with_options_async / {
00:11:00 v #12275 > > file_name = pwsh; arguments = US2_0
00:11:00 v #12276 > > │   "-c "(Get-FileHash
00:11:00 v #12277 > > '/tmp/!create_temp_path_/dotnet-repl/9ca8b18d-ee77-4684-ad12-21e1354945fc/test.t
00:11:00 v #12278 > > xt' -Algorithm SHA256).Hash""; options = { command = pwsh -c "(Get-FileHash
00:11:00 v #12279 > > '/tmp/!create_temp_path_/dotnet-repl/9ca8b18d-ee77-4684-ad12-21e1354945fc/test.t
00:11:00 v #12280 > > xt' -Algorithm SHA256).Hash"; cancellation_token = None; environment_variables =
00:11:00 v #12281 > > [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:11:00 v #12282 > > │ 00:00:00 v #2 >
00:11:00 v #12283 > > 01BA4719C80B6FE911B091A7C05124B64EEECE964E09C058EF8F9805DACA546B
00:11:00 v #12284 > > │ 00:00:00 d #3 runtime.execute_with_options_async / {
00:11:00 v #12285 > > exit_code = 0; output_length = 64 }
00:11:00 v #12286 > > │ __assert_eq / actual:
00:11:00 v #12287 > > "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" / expected:
00:11:00 v #12288 > > "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b"
00:11:00 v #12289 > > │
00:11:00 v #12290 > >
00:11:00 v #12291 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:11:00 v #12292 > > //// test
00:11:00 v #12293 > > ///! rust -d chrono encoding_rs encoding_rs_io regex sha2
00:11:00 v #12294 > >
00:11:00 v #12295 > > inl file_name = "test.txt"
00:11:00 v #12296 > > inl text = "\n"
00:11:00 v #12297 > >
00:11:00 v #12298 > > inl temp_dir, disposable =
00:11:00 v #12299 > >     (file_name, text)
00:11:00 v #12300 > >     |> sm'.format_debug
00:11:00 v #12301 > >     |> crypto.hash_text
00:11:00 v #12302 > >     |> file_system.create_temp_dir'
00:11:00 v #12303 > > disposable |> use |> ignore
00:11:00 v #12304 > > inl path = temp_dir </> file_name
00:11:00 v #12305 > > text |> file_system.write_all_text path
00:11:00 v #12306 > > path
00:11:00 v #12307 > > |> get_file_hash'
00:11:00 v #12308 > > |> resultm.get
00:11:00 v #12309 > > |> _assert_eq "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b"
00:11:22 v #12310 > >
00:11:22 v #12311 > > ── [ 21.28s - return value ] ───────────────────────────────────────────────────
00:11:22 v #12312 > > │ 00:00:00 v #1 file_system.create_dir / { dir =
00:11:22 v #12313 > > /tmp/!create_temp_path_/spiral_81cc183bda4d713d69816eba3838f3f1760b59eeed10e12fc
00:11:22 v #12314 > > 728cd6c33b3720f/ba0aa16a-6c5a-be3f-b526-70110c680e36 }
00:11:22 v #12315 > > │ 00:00:00 d #2 runtime.execute_with_options / {
00:11:22 v #12316 > > file_name = pwsh; arguments = ["-c", "(Get-FileHash
00:11:22 v #12317 > > '/tmp/!create_temp_path_/spiral_81cc183bda4d713d69816eba3838f3f1760b59eeed10e12f
00:11:22 v #12318 > > c728cd6c33b3720f/ba0aa16a-6c5a-be3f-b526-70110c680e36/test.txt' -Algorithm
00:11:22 v #12319 > > SHA256).Hash"]; options = { command = pwsh -c "(Get-FileHash
00:11:22 v #12320 > > '/tmp/!create_temp_path_/spiral_81cc183bda4d713d69816eba3838f3f1760b59eeed10e12f
00:11:22 v #12321 > > c728cd6c33b3720f/ba0aa16a-6c5a-be3f-b526-70110c680e36/test.txt' -Algorithm
00:11:22 v #12322 > > SHA256).Hash"; cancellation_token = None; environment_variables =
00:11:22 v #12323 > > Array(MutCell([])); on_line = None; stdin = None; trace = true;
00:11:22 v #12324 > > working_directory = None } }
00:11:22 v #12325 > > │ 00:00:00 v #3 >
00:11:22 v #12326 > > 01BA4719C80B6FE911B091A7C05124B64EEECE964E09C058EF8F9805DACA546B
00:11:22 v #12327 > > │ 00:00:00 v #4 runtime.execute_with_options / result / {
00:11:22 v #12328 > > exit_code = 0; std_trace_length = 64 }
00:11:22 v #12329 > > │ __assert_eq / actual:
00:11:22 v #12330 > > "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" / expected:
00:11:22 v #12331 > > "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b"
00:11:22 v #12332 > > │
00:11:22 v #12333 > >
00:11:22 v #12334 > > ── markdown ────────────────────────────────────────────────────────────────────
00:11:22 v #12335 > > │ ### sha256'
00:11:22 v #12336 > >
00:11:22 v #12337 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:11:22 v #12338 > > nominal sha256' =
00:11:22 v #12339 > >     `(
00:11:22 v #12340 > >         backend_switch `(()) `({}) {
00:11:22 v #12341 > >             Fsharp =
00:11:22 v #12342 > >                 (fun () =>
00:11:22 v #12343 > >                     global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:11:22 v #12344 > > Fable.Core.Emit(\"sha2::Sha256\")>]]\n#endif\ntype sha2_Sha256 = class end"
00:11:22 v #12345 > >                 ) : () -> ()
00:11:22 v #12346 > >         }
00:11:22 v #12347 > >         $'' : $'sha2_Sha256'
00:11:22 v #12348 > >     )
00:11:22 v #12349 > >
00:11:22 v #12350 > > ── markdown ────────────────────────────────────────────────────────────────────
00:11:22 v #12351 > > │ ### new_sha256
00:11:22 v #12352 > >
00:11:22 v #12353 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:11:22 v #12354 > > inl new_sha256 () : sha256' =
00:11:22 v #12355 > >     !\($'"let result : sha2::Sha256 = sha2::Digest::new()"')
00:11:22 v #12356 > >     !\($'"result"')
00:11:22 v #12357 > >
00:11:22 v #12358 > > ── markdown ────────────────────────────────────────────────────────────────────
00:11:22 v #12359 > > │ ### hasher_update
00:11:22 v #12360 > >
00:11:22 v #12361 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:11:22 v #12362 > > inl hasher_update forall el dim. (slice : rust.ref (am'.slice' el dim)) (hasher
00:11:22 v #12363 > > : sha256') : () =
00:11:22 v #12364 > >     !\($'"sha2::Digest::update(&mut !hasher, !slice)"')
00:11:22 v #12365 > >
00:11:22 v #12366 > > ── markdown ────────────────────────────────────────────────────────────────────
00:11:22 v #12367 > > │ ### hasher_finalize
00:11:22 v #12368 > >
00:11:22 v #12369 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:11:22 v #12370 > > inl hasher_finalize (hasher : sha256') : rust.ref (am'.slice u8) =
00:11:22 v #12371 > >     !\($'"&sha2::Digest::finalize(!hasher)"')
00:11:22 v #12372 > >
00:11:22 v #12373 > > ── markdown ────────────────────────────────────────────────────────────────────
00:11:22 v #12374 > > │ ### hash_read
00:11:22 v #12375 > >
00:11:22 v #12376 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:11:22 v #12377 > > inl hash_read data : resultm.result' string stream.io_error =
00:11:22 v #12378 > >     inl reader = data |> stream.new_buf_reader
00:11:22 v #12379 > >     (!\($'"true; let mut !reader = !reader"') : bool) |> ignore
00:11:22 v #12380 > >     inl hasher = new_sha256 ()
00:11:22 v #12381 > >     (!\($'"true; let mut !hasher = !hasher"') : bool) |> ignore
00:11:22 v #12382 > >
00:11:22 v #12383 > >     real
00:11:22 v #12384 > >         inl size = 1024
00:11:22 v #12385 > >         inl zero = convert `i32 `unativeint 0
00:11:22 v #12386 > >         inl buffer = am'.new_slice `u8 `@size 0u8
00:11:22 v #12387 > >
00:11:22 v #12388 > >         rust.loop 2 fun () =>
00:11:22 v #12389 > >             inl count = stream.buf_reader_read `u8 `@size buffer reader
00:11:22 v #12390 > >             inl count = resultm.unwrap' `unativeint `(stream.io_error) count
00:11:22 v #12391 > >
00:11:22 v #12392 > >             if (=.) `unativeint count zero then rust.break ()
00:11:22 v #12393 > >
00:11:22 v #12394 > >             hasher_update `u8 `@size
00:11:22 v #12395 > >                 (
00:11:22 v #12396 > >                     am'.slice_range `u8 `@size
00:11:22 v #12397 > >                         (am'.Start `unativeint zero)
00:11:22 v #12398 > >                         (am'.End `unativeint ((fun _ => count) : (() ->
00:11:22 v #12399 > > unativeint) -> unativeint))
00:11:22 v #12400 > >                         buffer
00:11:22 v #12401 > >                 )
00:11:22 v #12402 > >                 hasher
00:11:22 v #12403 > >
00:11:22 v #12404 > >     hasher
00:11:22 v #12405 > >     |> hasher_finalize
00:11:22 v #12406 > >     |> am'.slice_to_vec
00:11:22 v #12407 > >     |> am'.vec_map (sm'.format_hex' >> sm'.from_std_string)
00:11:22 v #12408 > >     |> am'.from_vec
00:11:22 v #12409 > >     |> fun x => x : _ i32 _
00:11:22 v #12410 > >     |> seq.of_array'
00:11:22 v #12411 > >     |> sm'.concat (join "")
00:11:22 v #12412 > >     |> Ok
00:11:22 v #12413 > >     |> resultm.box
00:11:22 v #12414 > >
00:11:22 v #12415 > > ── markdown ────────────────────────────────────────────────────────────────────
00:11:22 v #12416 > > │ ### get_file_hash
00:11:22 v #12417 > >
00:11:22 v #12418 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:11:22 v #12419 > > inl get_file_hash (path : string) =
00:11:22 v #12420 > >     inl path = path |> file_system.normalize_path
00:11:22 v #12421 > >     inl file = path |> file_system.file_open |> resultm.unwrap'
00:11:22 v #12422 > >     inl reader = file |> stream.new_buf_reader
00:11:22 v #12423 > >     reader
00:11:22 v #12424 > >     |> hash_read
00:11:23 v #12425 > >
00:11:23 v #12426 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:11:23 v #12427 > > //// test
00:11:23 v #12428 > > ///! rust -d chrono regex sha2
00:11:23 v #12429 > >
00:11:23 v #12430 > > inl file_name = join "test.txt"
00:11:23 v #12431 > > inl text = "\n"
00:11:23 v #12432 > >
00:11:23 v #12433 > > inl temp_dir, disposable =
00:11:23 v #12434 > >     (file_name, text)
00:11:23 v #12435 > >     |> sm'.format_debug
00:11:23 v #12436 > >     |> crypto.hash_text
00:11:23 v #12437 > >     |> file_system.create_temp_dir'
00:11:23 v #12438 > > disposable |> use |> ignore
00:11:23 v #12439 > >
00:11:23 v #12440 > > inl path = temp_dir </> file_name
00:11:23 v #12441 > > text |> file_system.write_all_text path
00:11:23 v #12442 > >
00:11:23 v #12443 > > path
00:11:23 v #12444 > > |> get_file_hash
00:11:23 v #12445 > > |> resultm.unwrap'
00:11:23 v #12446 > > |> _assert_eq "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b"
00:11:32 v #12447 > >
00:11:32 v #12448 > > ── [ 9.41s - return value ] ────────────────────────────────────────────────────
00:11:32 v #12449 > > │ 00:00:00 v #1 file_system.create_dir / { dir =
00:11:32 v #12450 > > /tmp/!create_temp_path_/spiral_360a851aa9cd13986a48c376b2d693d996ee7200e22af2a33
00:11:32 v #12451 > > e757a006e1daa59/ba0aa16a-6c5a-be3f-b526-70110c680e36 }
00:11:32 v #12452 > > │ __assert_eq / actual:
00:11:32 v #12453 > > "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" / expected:
00:11:32 v #12454 > > "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b"
00:11:32 v #12455 > > │
00:11:32 v #12456 > >
00:11:32 v #12457 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:11:32 v #12458 > > //// test
00:11:32 v #12459 > > ///! rust -d chrono regex sha2
00:11:32 v #12460 > >
00:11:32 v #12461 > > inl file_name = join "test.txt"
00:11:32 v #12462 > > inl text = ""
00:11:32 v #12463 > >
00:11:32 v #12464 > > inl temp_dir, disposable =
00:11:32 v #12465 > >     (file_name, text)
00:11:32 v #12466 > >     |> sm'.format_debug
00:11:32 v #12467 > >     |> crypto.hash_text
00:11:32 v #12468 > >     |> file_system.create_temp_dir'
00:11:32 v #12469 > > disposable |> use |> ignore
00:11:32 v #12470 > >
00:11:32 v #12471 > > inl path = temp_dir </> file_name
00:11:32 v #12472 > > text |> file_system.write_all_text path
00:11:32 v #12473 > > path
00:11:32 v #12474 > > |> get_file_hash
00:11:32 v #12475 > > |> resultm.unwrap'
00:11:32 v #12476 > > |> _assert_eq "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
00:11:41 v #12477 > >
00:11:41 v #12478 > > ── [ 9.29s - return value ] ────────────────────────────────────────────────────
00:11:41 v #12479 > > │ 00:00:00 v #1 file_system.create_dir / { dir =
00:11:41 v #12480 > > /tmp/!create_temp_path_/spiral_e10e0edb161c9efbfcc1b90ec8ae48d11f5fe98d4f2ae850b
00:11:41 v #12481 > > 584b36056ff9117/c0e26dac-4cb1-4b09-be07-ff616700f056 }
00:11:41 v #12482 > > │ __assert_eq / actual:
00:11:41 v #12483 > > "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" / expected:
00:11:41 v #12484 > > "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
00:11:41 v #12485 > > │
00:11:41 v #12486 > >
00:11:41 v #12487 > > ── markdown ────────────────────────────────────────────────────────────────────
00:11:41 v #12488 > > │ ## typescript
00:11:41 v #12489 > >
00:11:41 v #12490 > > ── markdown ────────────────────────────────────────────────────────────────────
00:11:41 v #12491 > > │ ### create_hash
00:11:41 v #12492 > >
00:11:41 v #12493 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:11:41 v #12494 > > inl create_hash (x : string) : any =
00:11:41 v #12495 > >     open typescript_operators
00:11:41 v #12496 > >     global "type ICryptoCreateHash = abstract createHash: x: string -> obj"
00:11:41 v #12497 > >     inl crypto : $'ICryptoCreateHash' = typescript.import_all "crypto"
00:11:41 v #12498 > >     !\\(x, $'"!crypto.createHash($0)"')
00:11:41 v #12499 > >
00:11:41 v #12500 > > ── markdown ────────────────────────────────────────────────────────────────────
00:11:41 v #12501 > > │ ### hash_update
00:11:41 v #12502 > >
00:11:41 v #12503 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:11:41 v #12504 > > inl hash_update (s : string) (x : any) : any =
00:11:41 v #12505 > >     open typescript_operators
00:11:41 v #12506 > >     !\\((x, s), $'"$0.update($1, \'utf8\')"')
00:11:42 v #12507 > >
00:11:42 v #12508 > > ── markdown ────────────────────────────────────────────────────────────────────
00:11:42 v #12509 > > │ ### hash_digest
00:11:42 v #12510 > >
00:11:42 v #12511 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:11:42 v #12512 > > inl hash_digest (s : string) (x : any) : string =
00:11:42 v #12513 > >     open typescript_operators
00:11:42 v #12514 > >     !\\((x, s), $'"$0.digest($1)"')
00:11:42 v #12515 > >
00:11:42 v #12516 > > ── markdown ────────────────────────────────────────────────────────────────────
00:11:42 v #12517 > > │ ## python
00:11:42 v #12518 > >
00:11:42 v #12519 > > ── markdown ────────────────────────────────────────────────────────────────────
00:11:42 v #12520 > > │ ### py_sha256
00:11:42 v #12521 > >
00:11:42 v #12522 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:11:42 v #12523 > > nominal py_sha256 = any
00:11:42 v #12524 > >
00:11:42 v #12525 > > ── markdown ────────────────────────────────────────────────────────────────────
00:11:42 v #12526 > > │ ### hashlib_sha256
00:11:42 v #12527 > >
00:11:42 v #12528 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:11:42 v #12529 > > inl hashlib_sha256 () : py_sha256 =
00:11:42 v #12530 > >     backend_switch {
00:11:42 v #12531 > >         Fsharp = fun () =>
00:11:42 v #12532 > >             open python_operators
00:11:42 v #12533 > >             global "type IHashlibSha256 = abstract sha256: x: unit -> obj"
00:11:42 v #12534 > >             inl hashlib : $'IHashlibSha256' = python.import_all "hashlib"
00:11:42 v #12535 > >             !\($'"!hashlib.sha256()"') : py_sha256
00:11:42 v #12536 > >         Python = fun () =>
00:11:42 v #12537 > >             global "import hashlib"
00:11:42 v #12538 > >             $'hashlib.sha256()' : py_sha256
00:11:42 v #12539 > >     }
00:11:42 v #12540 > >
00:11:42 v #12541 > > ── markdown ────────────────────────────────────────────────────────────────────
00:11:42 v #12542 > > │ ### sha256_update
00:11:42 v #12543 > >
00:11:42 v #12544 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:11:42 v #12545 > > inl sha256_update (x : string) (sha256 : py_sha256) : py_sha256 =
00:11:42 v #12546 > >     backend_switch {
00:11:42 v #12547 > >         Fsharp = fun () =>
00:11:42 v #12548 > >             open python_operators
00:11:42 v #12549 > >             !\\(x, $'"!sha256.update($0)"') : ()
00:11:42 v #12550 > >         Python = fun () =>
00:11:42 v #12551 > >             $'!sha256.update(!x)' : ()
00:11:42 v #12552 > >     }
00:11:42 v #12553 > >     sha256
00:11:42 v #12554 > >
00:11:42 v #12555 > > ── markdown ────────────────────────────────────────────────────────────────────
00:11:42 v #12556 > > │ ### sha256_hexdigest
00:11:42 v #12557 > >
00:11:42 v #12558 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:11:42 v #12559 > > inl sha256_hexdigest (sha256 : py_sha256) : string =
00:11:42 v #12560 > >     backend_switch {
00:11:42 v #12561 > >         Fsharp = fun () =>
00:11:42 v #12562 > >             open python_operators
00:11:42 v #12563 > >             !\($'"!sha256.hexdigest()"') : string
00:11:42 v #12564 > >         Python = fun () =>
00:11:42 v #12565 > >             $'!sha256.hexdigest()' : string
00:11:42 v #12566 > >     }
00:11:42 v #12567 > >
00:11:42 v #12568 > > ── markdown ────────────────────────────────────────────────────────────────────
00:11:42 v #12569 > > │ ## crypto
00:11:42 v #12570 > >
00:11:42 v #12571 > > ── markdown ────────────────────────────────────────────────────────────────────
00:11:42 v #12572 > > │ ### hash_text
00:11:42 v #12573 > >
00:11:42 v #12574 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:11:42 v #12575 > > let hash_text (~input : string) =
00:11:42 v #12576 > >     run_target function
00:11:42 v #12577 > >         | Fsharp (Native) => fun () =>
00:11:42 v #12578 > >             inl sha256 = sha256 () |> use
00:11:42 v #12579 > >             input
00:11:42 v #12580 > >             |> sm'.utf8_get_bytes
00:11:42 v #12581 > >             |> sha256_compute_hash sha256
00:11:42 v #12582 > >             |> am.map (sm'.byte_to_string "x2")
00:11:42 v #12583 > >             |> seq.of_array'
00:11:42 v #12584 > >             |> sm'.concat (join "")
00:11:42 v #12585 > >         | TypeScript (Native) => fun () =>
00:11:42 v #12586 > >             create_hash "sha256"
00:11:42 v #12587 > >             |> hash_update input
00:11:42 v #12588 > >             |> hash_digest "hex"
00:11:42 v #12589 > >         | Rust (Native) => fun () =>
00:11:42 v #12590 > >             input
00:11:42 v #12591 > >             |> sm'.utf8_get_bytes
00:11:42 v #12592 > >             |> fun (a x) => x
00:11:42 v #12593 > >             |> am'.to_vec
00:11:42 v #12594 > >             |> stream.new_cursor
00:11:42 v #12595 > >             |> hash_read
00:11:42 v #12596 > >             |> resultm.unwrap'
00:11:42 v #12597 > >         | Python (Native) | Cuda (Native) => fun () =>
00:11:42 v #12598 > >             hashlib_sha256 ()
00:11:42 v #12599 > >             |> sha256_update (input |> sm'.encode_utf8)
00:11:42 v #12600 > >             |> sha256_hexdigest
00:11:42 v #12601 > >         | _ => fun () => null ()
00:11:43 v #12602 > >
00:11:43 v #12603 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:11:43 v #12604 > > //// test
00:11:43 v #12605 > > ///! fsharp
00:11:43 v #12606 > > ///! cuda
00:11:43 v #12607 > > ///! rust -d sha2
00:11:43 v #12608 > > ///! typescript
00:11:43 v #12609 > > ///! python
00:11:43 v #12610 > >
00:11:43 v #12611 > > "\n"
00:11:43 v #12612 > > |> hash_text
00:11:43 v #12613 > > |> _assert_eq "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b"
00:11:43 v #12614 > >
00:11:43 v #12615 > > ""
00:11:43 v #12616 > > |> hash_text
00:11:43 v #12617 > > |> _assert_eq "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
00:11:51 v #12618 > >
00:11:51 v #12619 > > ── [ 8.84s - return value ] ────────────────────────────────────────────────────
00:11:51 v #12620 > > │
00:11:51 v #12621 > > │ .py output (Cuda):
00:11:51 v #12622 > > │ __assert_eq / actual:
00:11:51 v #12623 > > 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b / expected:
00:11:51 v #12624 > > 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b
00:11:51 v #12625 > > │ __assert_eq / actual:
00:11:51 v #12626 > > e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 / expected:
00:11:51 v #12627 > > e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
00:11:51 v #12628 > > │
00:11:51 v #12629 > > │
00:11:51 v #12630 > > │ .rs output (rust -d sha2):
00:11:51 v #12631 > > │ __assert_eq / actual:
00:11:51 v #12632 > > "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" / expected:
00:11:51 v #12633 > > "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b"
00:11:51 v #12634 > > │ __assert_eq / actual:
00:11:51 v #12635 > > "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" / expected:
00:11:51 v #12636 > > "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
00:11:51 v #12637 > > │
00:11:51 v #12638 > > │
00:11:51 v #12639 > > │ .ts output:
00:11:51 v #12640 > > │ __assert_eq / actual:
00:11:51 v #12641 > > 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b / expected:
00:11:51 v #12642 > > 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b
00:11:51 v #12643 > > │ __assert_eq / actual:
00:11:51 v #12644 > > e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 / expected:
00:11:51 v #12645 > > e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
00:11:51 v #12646 > > │
00:11:51 v #12647 > > │
00:11:51 v #12648 > > │ .py output:
00:11:51 v #12649 > > │ __assert_eq / actual:
00:11:51 v #12650 > > 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b / expected:
00:11:51 v #12651 > > 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b
00:11:51 v #12652 > > │ __assert_eq / actual:
00:11:51 v #12653 > > e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 / expected:
00:11:51 v #12654 > > e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
00:11:51 v #12655 > > │
00:11:51 v #12656 > > │
00:11:51 v #12657 > > │
00:11:51 v #12658 > >
00:11:51 v #12659 > > ── [ 8.84s - stdout ] ──────────────────────────────────────────────────────────
00:11:51 v #12660 > > │ .fsx output:
00:11:51 v #12661 > > │ __assert_eq / actual:
00:11:51 v #12662 > > "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" / expected:
00:11:51 v #12663 > > "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b"
00:11:51 v #12664 > > │ __assert_eq / actual:
00:11:51 v #12665 > > "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" / expected:
00:11:51 v #12666 > > "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
00:11:51 v #12667 > > │
00:11:51 v #12668 > >
00:11:51 v #12669 > > ── markdown ────────────────────────────────────────────────────────────────────
00:11:51 v #12670 > > │ ### hash_to_port
00:11:51 v #12671 > >
00:11:51 v #12672 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:11:51 v #12673 > > inl hash_to_port (text : string) : u16 =
00:11:51 v #12674 > >     inl first_letter_code = text |> sm'.index 0i32 |> sm'.convert_to_utf32
00:11:51 v #12675 > >     inl hash_part = text |> sm'.slice 0i32 7
00:11:51 v #12676 > >     inl combined_value = convert_i32_base 16 hash_part + first_letter_code |>
00:11:51 v #12677 > > u16
00:11:51 v #12678 > >     trace Verbose
00:11:51 v #12679 > >         fun () => "crypto.hash_to_port"
00:11:51 v #12680 > >         fun () => { first_letter_code hash_part combined_value }
00:11:51 v #12681 > >     combined_value % 48128 + 1024
00:11:51 v #12682 > >
00:11:51 v #12683 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:11:51 v #12684 > > //// test
00:11:51 v #12685 > > ///! fsharp
00:11:51 v #12686 > > ///! cuda
00:11:51 v #12687 > > ///! rust -d sha2
00:11:51 v #12688 > > ///! typescript
00:11:51 v #12689 > > ///! python
00:11:51 v #12690 > >
00:11:51 v #12691 > > "\n"
00:11:51 v #12692 > > |> hash_text
00:11:51 v #12693 > > |> hash_to_port
00:11:51 v #12694 > > |> _assert_eq 19273
00:12:01 v #12695 > >
00:12:01 v #12696 > > ── [ 9.71s - return value ] ────────────────────────────────────────────────────
00:12:01 v #12697 > > │
00:12:01 v #12698 > > │ .py output (Cuda):
00:12:01 v #12699 > > │ 00:00:00 v #1 crypto.hash_to_port / { first_letter_code
00:12:01 v #12700 > > = 48; hash_part = 01ba4719; combined_value = 18249 }
00:12:01 v #12701 > > │ __assert_eq / actual: 19273 / expected: 19273
00:12:01 v #12702 > > │
00:12:01 v #12703 > > │
00:12:01 v #12704 > > │ .rs output (rust -d sha2):
00:12:01 v #12705 > > │ 00:00:00 v #1 crypto.hash_to_port / { first_letter_code
00:12:01 v #12706 > > = 48; hash_part = 01ba4719; combined_value = 18249 }
00:12:01 v #12707 > > │ __assert_eq / actual: 19273 / expected: 19273
00:12:01 v #12708 > > │
00:12:01 v #12709 > > │
00:12:01 v #12710 > > │ .ts output:
00:12:01 v #12711 > > │ 00:00:00 v #1 crypto.hash_to_port / { first_letter_code
00:12:01 v #12712 > > = 48; hash_part = 01ba4719; combined_value = 18249 }
00:12:01 v #12713 > > │ __assert_eq / actual: 19273 / expected: 19273
00:12:01 v #12714 > > │
00:12:01 v #12715 > > │
00:12:01 v #12716 > > │ .py output:
00:12:01 v #12717 > > │ 00:00:00 v #1 crypto.hash_to_port / { first_letter_code
00:12:01 v #12718 > > = 48; hash_part = 01ba4719; combined_value = 18249 }
00:12:01 v #12719 > > │ __assert_eq / actual: 19273 / expected: 19273
00:12:01 v #12720 > > │
00:12:01 v #12721 > > │
00:12:01 v #12722 > > │
00:12:01 v #12723 > >
00:12:01 v #12724 > > ── [ 9.71s - stdout ] ──────────────────────────────────────────────────────────
00:12:01 v #12725 > > │ .fsx output:
00:12:01 v #12726 > > │ 00:00:00 v #1 crypto.hash_to_port / { first_letter_code
00:12:01 v #12727 > > = 48; hash_part = 01ba4719; combined_value = 18249 }
00:12:01 v #12728 > > │ __assert_eq / actual: 19273us / expected: 19273us
00:12:01 v #12729 > > │
00:12:01 v #12730 > >
00:12:01 v #12731 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:01 v #12732 > > │ ## main
00:12:01 v #12733 > >
00:12:01 v #12734 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:01 v #12735 > > inl main () =
00:12:01 v #12736 > >     $'let hash_text x = !hash_text x' : ()
00:12:01 v #12737 > >     $'let hash_to_port x = !hash_to_port x' : ()
00:12:02 v #12738 > 00:01:19 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 21917 }
00:12:02 v #12739 > 00:01:19 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/crypto.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/crypto.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:12:02 v #12740 > 00:01:19 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/crypto.dib.ipynb to html
00:12:02 v #12741 > 00:01:19 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:12:02 v #12742 > 00:01:19 v #7 !   validate(nb)
00:12:03 v #12743 > 00:01:20 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:12:03 v #12744 > 00:01:20 v #9 !   return _pygments_highlight(
00:12:03 v #12745 > 00:01:20 v #10 ! [NbConvertApp] Writing 341380 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/crypto.dib.html
00:12:03 v #12746 > 00:01:20 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 896 }
00:12:03 v #12747 > 00:01:20 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 896 }
00:12:03 v #12748 > 00:01:20 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/crypto.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/crypto.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:12:03 v #12749 > 00:01:20 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:12:03 v #12750 > 00:01:20 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:12:03 v #12751 > 00:01:20 d #16 spiral.run / dib / { exit_code = 0; result_length = 22872 }
00:12:03 d #12752 runtime.execute_with_options_async / { exit_code = 0; output_length = 26599 }
00:12:03 d #15 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path crypto.dib --retries 3
00:12:03 d #12753 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path common.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path common.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:12:03 v #12754 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "common.dib", "--retries", "3"])) }
00:12:03 v #12755 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/common.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/common.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/common.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/common.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:12:05 v #12756 > >
00:12:05 v #12757 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:05 v #12758 > > │ # common
00:12:07 v #12759 > >
00:12:07 v #12760 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:07 v #12761 > > //// test
00:12:07 v #12762 > >
00:12:07 v #12763 > > open testing
00:12:08 v #12764 > >
00:12:08 v #12765 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:08 v #12766 > > │ ## common
00:12:08 v #12767 > >
00:12:08 v #12768 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:08 v #12769 > > │ ### retry_fn'
00:12:08 v #12770 > >
00:12:08 v #12771 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:08 v #12772 > > inl retry_fn' retries fn =
00:12:08 v #12773 > >     let rec loop retry =
00:12:08 v #12774 > >         inl is_error, result =
00:12:08 v #12775 > >             match fn () with
00:12:08 v #12776 > >             | Ok x => false, x
00:12:08 v #12777 > >             | Error x => true, x
00:12:08 v #12778 > >         if not is_error || retry >= retries
00:12:08 v #12779 > >         then result
00:12:08 v #12780 > >         else
00:12:08 v #12781 > >             trace Debug
00:12:08 v #12782 > >                 fun () => "common.retry_fn\' / loop"
00:12:08 v #12783 > >                 fun () => { is_error retry = $'$"{!retry}/{!retries}"' : string;
00:12:08 v #12784 > > result }
00:12:08 v #12785 > >             loop (retry + 1)
00:12:08 v #12786 > >     loop 1
00:12:08 v #12787 > >
00:12:08 v #12788 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:08 v #12789 > > │ ## fsharp
00:12:08 v #12790 > >
00:12:08 v #12791 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:08 v #12792 > > │ ### upcast
00:12:08 v #12793 > >
00:12:08 v #12794 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:08 v #12795 > > inl upcast forall t u. (x : t) : u =
00:12:08 v #12796 > >     $'!x :> `u '
00:12:08 v #12797 > >
00:12:08 v #12798 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:08 v #12799 > > │ ### downcast
00:12:08 v #12800 > >
00:12:08 v #12801 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:08 v #12802 > > inl downcast forall t u. (x : t) : u =
00:12:08 v #12803 > >     $'!x :?> `u '
00:12:08 v #12804 > >
00:12:08 v #12805 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:08 v #12806 > > │ ### random
00:12:08 v #12807 > >
00:12:08 v #12808 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:08 v #12809 > > nominal random = $'System.Random'
00:12:08 v #12810 > >
00:12:08 v #12811 > > inl random () : random =
00:12:08 v #12812 > >     $'`random ' ()
00:12:08 v #12813 > >
00:12:08 v #12814 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:08 v #12815 > > │ ### random_next
00:12:08 v #12816 > >
00:12:08 v #12817 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:08 v #12818 > > inl random_next (min : i32) (max : i32) (random : random) : i32 =
00:12:08 v #12819 > >     $'!random.Next (!min, !max)'
00:12:09 v #12820 > >
00:12:09 v #12821 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:09 v #12822 > > │ ### disposable
00:12:09 v #12823 > >
00:12:09 v #12824 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:09 v #12825 > > nominal disposable t = $"backend_switch `({ Fsharp : $'System.IDisposable';
00:12:09 v #12826 > > Python : $'object' })"
00:12:09 v #12827 > >
00:12:09 v #12828 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:09 v #12829 > > │ ### dispose
00:12:09 v #12830 > >
00:12:09 v #12831 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:09 v #12832 > > inl dispose (disposable : disposable _) : () =
00:12:09 v #12833 > >     backend_switch {
00:12:09 v #12834 > >         Fsharp = fun () => disposable |> $'_.Dispose()' : ()
00:12:09 v #12835 > >         Python = fun () => $'!disposable.__exit__(None, None, None)' : ()
00:12:09 v #12836 > >     }
00:12:09 v #12837 > >
00:12:09 v #12838 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:09 v #12839 > > │ ### yield
00:12:09 v #12840 > >
00:12:09 v #12841 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:09 v #12842 > > inl yield forall t. (x : t) : () =
00:12:09 v #12843 > >     $'yield !x '
00:12:09 v #12844 > >
00:12:09 v #12845 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:09 v #12846 > > │ ### return
00:12:09 v #12847 > >
00:12:09 v #12848 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:09 v #12849 > > inl return forall t. (x : t) : () =
00:12:09 v #12850 > >     $'return !x '
00:12:09 v #12851 > >
00:12:09 v #12852 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:09 v #12853 > > │ ### return'
00:12:09 v #12854 > >
00:12:09 v #12855 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:09 v #12856 > > inl return' forall t. (x : t) : t =
00:12:09 v #12857 > >     $'return !x '
00:12:09 v #12858 > >
00:12:09 v #12859 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:09 v #12860 > > │ ### retry_fn
00:12:09 v #12861 > >
00:12:09 v #12862 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:09 v #12863 > > inl retry_fn forall t. retries (fn : () -> t) : option t =
00:12:09 v #12864 > >     let rec loop retry =
00:12:09 v #12865 > >         try
00:12:09 v #12866 > >             fun () =>
00:12:09 v #12867 > >                 if retry < retries
00:12:09 v #12868 > >                 then fn () |> Some
00:12:09 v #12869 > >                 else None
00:12:09 v #12870 > >             fun ex =>
00:12:09 v #12871 > >                 trace Warning
00:12:09 v #12872 > >                     fun () => "common.retry_fn"
00:12:09 v #12873 > >                     fun () => { retry ex }
00:12:09 v #12874 > >                 None
00:12:09 v #12875 > >         |> function
00:12:09 v #12876 > >             | Some x => x
00:12:09 v #12877 > >             | None => loop (retry + 1)
00:12:09 v #12878 > >     loop 0
00:12:09 v #12879 > >
00:12:09 v #12880 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:09 v #12881 > > //// test
00:12:09 v #12882 > > ///! fsharp
00:12:09 v #12883 > > ///! cuda
00:12:09 v #12884 > > ///! rust
00:12:09 v #12885 > > ///! typescript
00:12:09 v #12886 > > ///! python
00:12:09 v #12887 > >
00:12:09 v #12888 > > inl retry_fn_test = mut 0i32
00:12:09 v #12889 > > fun () =>
00:12:09 v #12890 > >     retry_fn_test <- *retry_fn_test + 1
00:12:09 v #12891 > >     *retry_fn_test
00:12:09 v #12892 > > |> retry_fn 3i32
00:12:09 v #12893 > > |> _assert_eq' (Some 1i32)
00:12:20 v #12894 > >
00:12:20 v #12895 > > ── [ 11.04s - return value ] ───────────────────────────────────────────────────
00:12:20 v #12896 > > │ .py output (Cuda):
00:12:20 v #12897 > > │ __assert_eq' / actual: US0_0(v0=1) / expected: US0_0(v0=1)
00:12:20 v #12898 > > │
00:12:20 v #12899 > > │ .rs output:
00:12:20 v #12900 > > │ __assert_eq' / actual: US0_0(1) / expected: US0_0(1)
00:12:20 v #12901 > > │
00:12:20 v #12902 > > │ .ts output:
00:12:20 v #12903 > > │ __assert_eq' / actual: US0_0 1 / expected: US0_0 1
00:12:20 v #12904 > > │
00:12:20 v #12905 > > │ .py output:
00:12:20 v #12906 > > │ __assert_eq' / actual: US0_0 1 / expected: US0_0 1
00:12:20 v #12907 > > │
00:12:20 v #12908 > > │
00:12:20 v #12909 > >
00:12:20 v #12910 > > ── [ 11.04s - stdout ] ─────────────────────────────────────────────────────────
00:12:20 v #12911 > > │ .fsx output:
00:12:20 v #12912 > > │ __assert_eq' / actual: US0_0 1 / expected: US0_0 1
00:12:20 v #12913 > > │
00:12:20 v #12914 > >
00:12:20 v #12915 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:20 v #12916 > > //// test
00:12:20 v #12917 > > ///! fsharp
00:12:20 v #12918 > > ////! cuda // v3 = $"retry: {v0} / ex: %A{v1} / {v2 ()}"
00:12:20 v #12919 > > ///! rust
00:12:20 v #12920 > > ///! typescript
00:12:20 v #12921 > > ///! python
00:12:20 v #12922 > >
00:12:20 v #12923 > > inl retry_fn_test = mut 0i32
00:12:20 v #12924 > > fun () =>
00:12:20 v #12925 > >     if *retry_fn_test >= 2
00:12:20 v #12926 > >     then *retry_fn_test
00:12:20 v #12927 > >     else
00:12:20 v #12928 > >         retry_fn_test <- *retry_fn_test + 1
00:12:20 v #12929 > >         failwith "test"
00:12:20 v #12930 > > |> retry_fn 3i32
00:12:20 v #12931 > > |> _assert_eq' (Some 2i32)
00:12:30 v #12932 > >
00:12:30 v #12933 > > ── [ 9.29s - return value ] ────────────────────────────────────────────────────
00:12:30 v #12934 > > │
00:12:30 v #12935 > > │ .rs output:
00:12:30 v #12936 > > │ 00:00:00 w #1 common.retry_fn / { retry = 0; ex =
00:12:30 v #12937 > > Exception {
00:12:30 v #12938 > > │     message: "test",
00:12:30 v #12939 > > │ } }
00:12:30 v #12940 > > │ 00:00:00 w #2 common.retry_fn / { retry = 1; ex =
00:12:30 v #12941 > > Exception {
00:12:30 v #12942 > > │     message: "test",
00:12:30 v #12943 > > │ } }
00:12:30 v #12944 > > │ __assert_eq' / actual: US0_0(2) / expected: US0_0(2)
00:12:30 v #12945 > > │
00:12:30 v #12946 > > │
00:12:30 v #12947 > > │ .ts output:
00:12:30 v #12948 > > │ 00:00:00 w #1 common.retry_fn / { retry = 0; ex = Error:
00:12:30 v #12949 > > test }
00:12:30 v #12950 > > │ 00:00:00 w #2 common.retry_fn / { retry = 1; ex = Error:
00:12:30 v #12951 > > test }
00:12:30 v #12952 > > │ __assert_eq' / actual: US0_0 2 / expected: US0_0 2
00:12:30 v #12953 > > │
00:12:30 v #12954 > > │
00:12:30 v #12955 > > │ .py output:
00:12:30 v #12956 > > │ 00:00:00 w #1 common.retry_fn / { retry = 0; ex = test }
00:12:30 v #12957 > > │ 00:00:00 w #2 common.retry_fn / { retry = 1; ex = test }
00:12:30 v #12958 > > │ __assert_eq' / actual: US0_0 2 / expected: US0_0 2
00:12:30 v #12959 > > │
00:12:30 v #12960 > > │
00:12:30 v #12961 > > │
00:12:30 v #12962 > >
00:12:30 v #12963 > > ── [ 9.29s - stdout ] ──────────────────────────────────────────────────────────
00:12:30 v #12964 > > │ .fsx output:
00:12:30 v #12965 > > │ 00:00:00 w #1 common.retry_fn / { retry = 0; ex =
00:12:30 v #12966 > > System.Exception: test
00:12:30 v #12967 > > │    at FSI_0017.closure1(Mut0 v0, Int32 v1, Unit unitVar2)
00:12:30 v #12968 > > │    at FSI_0017.method1(Mut0 v0, Int32 v1) }
00:12:30 v #12969 > > │ 00:00:00 w #2 common.retry_fn / { retry = 1; ex =
00:12:30 v #12970 > > System.Exception: test
00:12:30 v #12971 > > │    at FSI_0017.closure1(Mut0 v0, Int32 v1, Unit unitVar2)
00:12:30 v #12972 > > │    at FSI_0017.method1(Mut0 v0, Int32 v1) }
00:12:30 v #12973 > > │ __assert_eq' / actual: US0_0 2 / expected: US0_0 2
00:12:30 v #12974 > > │
00:12:30 v #12975 > >
00:12:30 v #12976 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:30 v #12977 > > │ ## common
00:12:30 v #12978 > >
00:12:30 v #12979 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:30 v #12980 > > │ ### random'
00:12:30 v #12981 > >
00:12:30 v #12982 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:30 v #12983 > > inl random' forall t. (min : t) (max : t) : t =
00:12:30 v #12984 > >     run_target function
00:12:30 v #12985 > >         | Rust (Contract) => fun () =>
00:12:30 v #12986 > >             failwith "common.random' / target=Rust(Contract)"
00:12:30 v #12987 > >         | Rust _ => fun () =>
00:12:30 v #12988 > >             open rust.rust_operators
00:12:30 v #12989 > >             !\\((min, max), $'"rand::Rng::gen_range(&mut rand::thread_rng(),
00:12:30 v #12990 > > $0..$1)"')
00:12:30 v #12991 > >         | _ => fun () =>
00:12:30 v #12992 > >             random () |> random_next (i32 min) (i32 max) |> convert
00:12:30 v #12993 > >
00:12:30 v #12994 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:30 v #12995 > > │ ### new_disposable
00:12:30 v #12996 > >
00:12:30 v #12997 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:30 v #12998 > > inl new_disposable (fn : () -> ()) : disposable _ =
00:12:30 v #12999 > >     run_target function
00:12:30 v #13000 > >         | Rust _ => fun () =>
00:12:30 v #13001 > >             global "type Disposable (f : unit -> unit) = interface
00:12:30 v #13002 > > System.IDisposable with member _.Dispose () = f ()"
00:12:30 v #13003 > >             inl fn = join fn
00:12:30 v #13004 > >             $'new Disposable (fun () -> Fable.Core.RustInterop.emitRustExpr !fn
00:12:30 v #13005 > > "$0()" )'
00:12:30 v #13006 > >         | Fsharp _ | TypeScript _ | Python _ => fun () =>
00:12:30 v #13007 > >             inl fn = join fn
00:12:30 v #13008 > >             $'{ new System.IDisposable with member _.Dispose () = !fn () }'
00:12:30 v #13009 > >         | Cuda _ => fun () =>
00:12:30 v #13010 > >             $'class Disposable:'
00:12:30 v #13011 > >             $'    def __init__(self, fn):'
00:12:30 v #13012 > >             $'        self.fn = fn'
00:12:30 v #13013 > >             $'    def __exit__(self, exc_type, exc_value, traceback):'
00:12:30 v #13014 > >             $'        self.fn()'
00:12:30 v #13015 > >             $'        return False'
00:12:30 v #13016 > >             $'Disposable(!fn)'
00:12:30 v #13017 > >         | _ => fun () => null ()
00:12:30 v #13018 > >
00:12:30 v #13019 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:30 v #13020 > > //// test
00:12:30 v #13021 > > ///! fsharp
00:12:30 v #13022 > > ///! cuda
00:12:30 v #13023 > > ///! rust
00:12:30 v #13024 > > ///! typescript
00:12:30 v #13025 > > ///! python
00:12:30 v #13026 > >
00:12:30 v #13027 > > inl new_disposable_test = mut 0i32
00:12:30 v #13028 > > new_disposable fun () => new_disposable_test <- *new_disposable_test + 1
00:12:30 v #13029 > > |> fun x => x : disposable ()
00:12:30 v #13030 > > |> dispose
00:12:30 v #13031 > > *new_disposable_test |> _assert_eq 1
00:12:39 v #13032 > >
00:12:39 v #13033 > > ── [ 8.67s - return value ] ────────────────────────────────────────────────────
00:12:39 v #13034 > > │ .py output (Cuda):
00:12:39 v #13035 > > │ __assert_eq / actual: 1 / expected: 1
00:12:39 v #13036 > > │
00:12:39 v #13037 > > │ .rs output:
00:12:39 v #13038 > > │ __assert_eq / actual: 1 / expected: 1
00:12:39 v #13039 > > │
00:12:39 v #13040 > > │ .ts output:
00:12:39 v #13041 > > │ __assert_eq / actual: 1 / expected: 1
00:12:39 v #13042 > > │
00:12:39 v #13043 > > │ .py output:
00:12:39 v #13044 > > │ __assert_eq / actual: 1 / expected: 1
00:12:39 v #13045 > > │
00:12:39 v #13046 > > │
00:12:39 v #13047 > >
00:12:39 v #13048 > > ── [ 8.67s - stdout ] ──────────────────────────────────────────────────────────
00:12:39 v #13049 > > │ .fsx output:
00:12:39 v #13050 > > │ __assert_eq / actual: 1 / expected: 1
00:12:39 v #13051 > > │
00:12:39 v #13052 > >
00:12:39 v #13053 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:39 v #13054 > > //// test
00:12:39 v #13055 > >
00:12:39 v #13056 > > inl new_disposable_test = mut 0i32
00:12:39 v #13057 > > fun () =>
00:12:39 v #13058 > >     new_disposable fun () => new_disposable_test <- *new_disposable_test + 1
00:12:39 v #13059 > >     |> fun x => x : disposable ()
00:12:39 v #13060 > >     |> use
00:12:39 v #13061 > >     |> ignore
00:12:39 v #13062 > >     |> return
00:12:39 v #13063 > > |> async.new_task
00:12:39 v #13064 > > |> async.await_task
00:12:39 v #13065 > > |> async.run_synchronously
00:12:39 v #13066 > > *new_disposable_test |> _assert_eq 1
00:12:39 v #13067 > >
00:12:39 v #13068 > > ── [ 258.51ms - stdout ] ───────────────────────────────────────────────────────
00:12:39 v #13069 > > │ __assert_eq / actual: 1 / expected: 1
00:12:39 v #13070 > > │
00:12:39 v #13071 > >
00:12:39 v #13072 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:39 v #13073 > > //// test
00:12:39 v #13074 > >
00:12:39 v #13075 > > inl new_disposable_test = mut 0i32
00:12:39 v #13076 > > fun () =>
00:12:39 v #13077 > >     new_disposable fun () => new_disposable_test <- *new_disposable_test + 1
00:12:39 v #13078 > >     |> fun x => x : disposable ()
00:12:39 v #13079 > >     |> use
00:12:39 v #13080 > >     |> ignore
00:12:39 v #13081 > >     |> return
00:12:39 v #13082 > > |> async.new_async
00:12:39 v #13083 > > |> async.run_synchronously
00:12:39 v #13084 > > *new_disposable_test |> _assert_eq 1
00:12:39 v #13085 > >
00:12:39 v #13086 > > ── [ 307.98ms - stdout ] ───────────────────────────────────────────────────────
00:12:39 v #13087 > > │ __assert_eq / actual: 1 / expected: 1
00:12:39 v #13088 > > │
00:12:39 v #13089 > >
00:12:39 v #13090 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:39 v #13091 > > //// test
00:12:39 v #13092 > >
00:12:39 v #13093 > > inl new_disposable_test = mut 0i32
00:12:39 v #13094 > > fun () =>
00:12:39 v #13095 > >     new_disposable fun () => new_disposable_test <- *new_disposable_test + 1
00:12:39 v #13096 > >     |> fun x => x : disposable ()
00:12:39 v #13097 > >     |> ignore
00:12:39 v #13098 > >     |> return
00:12:39 v #13099 > > |> async.new_async
00:12:39 v #13100 > > |> async.run_synchronously
00:12:39 v #13101 > > *new_disposable_test |> _assert_eq 0
00:12:40 v #13102 > >
00:12:40 v #13103 > > ── [ 274.46ms - stdout ] ───────────────────────────────────────────────────────
00:12:40 v #13104 > > │ __assert_eq / actual: 0 / expected: 0
00:12:40 v #13105 > > │
00:12:40 v #13106 > >
00:12:40 v #13107 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:40 v #13108 > > │ ## main
00:12:40 v #13109 > >
00:12:40 v #13110 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:40 v #13111 > > inl main () =
00:12:40 v #13112 > >     init_trace_state None
00:12:40 v #13113 > >     inl new_disposable x : _ () = new_disposable x
00:12:40 v #13114 > >     $'let new_disposable x = !new_disposable x' : ()
00:12:40 v #13115 > >     inl retry_fn (r : i32) (x : () -> _) : optionm'.option' () = retry_fn r x |>
00:12:40 v #13116 > > optionm'.box
00:12:40 v #13117 > >     $'let retry_fn x = !retry_fn x' : ()
00:12:40 v #13118 > >     inl memoize (fn : () -> ()) : () -> () = memoize fn
00:12:40 v #13119 > >     $'let memoize x = !memoize x' : ()
00:12:40 v #13120 > 00:00:36 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 13805 }
00:12:40 v #13121 > 00:00:36 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/common.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/common.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:12:41 v #13122 > 00:00:37 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/common.dib.ipynb to html
00:12:41 v #13123 > 00:00:37 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:12:41 v #13124 > 00:00:37 v #7 !   validate(nb)
00:12:41 v #13125 > 00:00:37 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:12:41 v #13126 > 00:00:37 v #9 !   return _pygments_highlight(
00:12:41 v #13127 > 00:00:37 v #10 ! [NbConvertApp] Writing 318890 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/common.dib.html
00:12:41 v #13128 > 00:00:37 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 896 }
00:12:41 v #13129 > 00:00:37 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 896 }
00:12:41 v #13130 > 00:00:37 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/common.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/common.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:12:42 v #13131 > 00:00:38 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:12:42 v #13132 > 00:00:38 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:12:42 v #13133 > 00:00:38 d #16 spiral.run / dib / { exit_code = 0; result_length = 14760 }
00:12:42 d #13134 runtime.execute_with_options_async / { exit_code = 0; output_length = 18143 }
00:12:42 d #16 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path common.dib --retries 3
00:12:42 d #13135 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path resultm.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path resultm.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:12:42 v #13136 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "resultm.dib", "--retries", "3"])) }
00:12:42 v #13137 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/resultm.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/resultm.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/resultm.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/resultm.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:12:43 v #13138 > >
00:12:43 v #13139 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:43 v #13140 > > │ # resultm
00:12:45 v #13141 > >
00:12:45 v #13142 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:45 v #13143 > > open rust
00:12:45 v #13144 > > open rust_operators
00:12:46 v #13145 > >
00:12:46 v #13146 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:46 v #13147 > > //// test
00:12:46 v #13148 > >
00:12:46 v #13149 > > open testing
00:12:46 v #13150 > >
00:12:46 v #13151 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:46 v #13152 > > │ ## resultm
00:12:46 v #13153 > >
00:12:46 v #13154 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:46 v #13155 > > │ ### from_option_error
00:12:46 v #13156 > >
00:12:46 v #13157 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:46 v #13158 > > inl from_option_error error opt =
00:12:46 v #13159 > >     match opt with
00:12:46 v #13160 > >     | Some x => Ok x
00:12:46 v #13161 > >     | None => Error error
00:12:46 v #13162 > >
00:12:46 v #13163 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:46 v #13164 > > │ ### from_option
00:12:46 v #13165 > >
00:12:46 v #13166 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:46 v #13167 > > inl from_option opt =
00:12:46 v #13168 > >     opt |> from_option_error "resultm.from_option / Option does not have a
00:12:46 v #13169 > > value."
00:12:47 v #13170 > >
00:12:47 v #13171 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:47 v #13172 > > │ ### flatten_option
00:12:47 v #13173 > >
00:12:47 v #13174 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:47 v #13175 > > inl flatten_option forall t u. (x : option (result (option t) u)) : result
00:12:47 v #13176 > > (option t) u =
00:12:47 v #13177 > >     match x with
00:12:47 v #13178 > >     | Some (Error x) => Error x
00:12:47 v #13179 > >     | Some (Ok (Some x)) => Ok (Some x)
00:12:47 v #13180 > >     | _ => Ok None
00:12:47 v #13181 > >
00:12:47 v #13182 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:47 v #13183 > > │ ### flatten
00:12:47 v #13184 > >
00:12:47 v #13185 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:47 v #13186 > > inl flatten forall t u. (x : result (result t u) u) : result t u =
00:12:47 v #13187 > >     match x with
00:12:47 v #13188 > >     | Ok x => x
00:12:47 v #13189 > >     | Error x => Error x
00:12:47 v #13190 > >
00:12:47 v #13191 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:47 v #13192 > > │ ### get
00:12:47 v #13193 > >
00:12:47 v #13194 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:47 v #13195 > > inl get forall t e. (source : result t e) : t =
00:12:47 v #13196 > >     match source with
00:12:47 v #13197 > >     | Ok x => x
00:12:47 v #13198 > >     | Error x =>
00:12:47 v #13199 > >         backend_switch {
00:12:47 v #13200 > >             Fsharp = fun () => $'$"resultm.get / Result value was Error: {!x}"'
00:12:47 v #13201 > > : string
00:12:47 v #13202 > >             Python = fun () => $'f"resultm.get / Result value was Error: {!x}"'
00:12:47 v #13203 > > : string
00:12:47 v #13204 > >         }
00:12:47 v #13205 > >         |> failwith
00:12:47 v #13206 > >
00:12:47 v #13207 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:47 v #13208 > > │ ### map
00:12:47 v #13209 > >
00:12:47 v #13210 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:47 v #13211 > > inl map forall t e u. (fn : t -> u) (source : result t e) : result u e =
00:12:47 v #13212 > >     match source with
00:12:47 v #13213 > >     | Ok x => x |> fn |> Ok
00:12:47 v #13214 > >     | Error x => Error x
00:12:47 v #13215 > >
00:12:47 v #13216 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:47 v #13217 > > │ ### map_error
00:12:47 v #13218 > >
00:12:47 v #13219 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:47 v #13220 > > inl map_error forall t e u. (fn : e -> u) (source : result t e) : result t u =
00:12:47 v #13221 > >     match source with
00:12:47 v #13222 > >     | Ok x => Ok x
00:12:47 v #13223 > >     | Error x => x |> fn |> Error
00:12:47 v #13224 > >
00:12:47 v #13225 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:47 v #13226 > > │ ### unwrap_err
00:12:47 v #13227 > >
00:12:47 v #13228 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:47 v #13229 > > inl unwrap_err forall t u. (x : result t u) : u =
00:12:47 v #13230 > >     match x with
00:12:47 v #13231 > >     | Ok x =>
00:12:47 v #13232 > >         backend_switch {
00:12:47 v #13233 > >             Fsharp = fun () => $'$"resultm.unwrap_err / x: {!x}"' : string
00:12:47 v #13234 > >             Python = fun () => $'f"resultm.unwrap_err / x: {!x}"' : string
00:12:47 v #13235 > >         }
00:12:47 v #13236 > >         |> failwith
00:12:47 v #13237 > >     | Error x => x
00:12:47 v #13238 > >
00:12:47 v #13239 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:47 v #13240 > > │ ### ok
00:12:47 v #13241 > >
00:12:47 v #13242 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:47 v #13243 > > inl ok forall t. (x : result t _) : option t =
00:12:47 v #13244 > >     match x with
00:12:47 v #13245 > >     | Ok x => Some x
00:12:47 v #13246 > >     | Error _ => None
00:12:48 v #13247 > >
00:12:48 v #13248 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:48 v #13249 > > │ ## fsharp
00:12:48 v #13250 > >
00:12:48 v #13251 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:48 v #13252 > > │ ### result'
00:12:48 v #13253 > >
00:12:48 v #13254 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:48 v #13255 > > nominal result' t u = $'Result<`t, `u>'
00:12:48 v #13256 > >
00:12:48 v #13257 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:48 v #13258 > > │ ### unbox
00:12:48 v #13259 > >
00:12:48 v #13260 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:48 v #13261 > > inl unbox forall t u. (x : result' t u) : result t u =
00:12:48 v #13262 > >     inl ok x : result t u = Ok x
00:12:48 v #13263 > >     inl error x : result t u = Error x
00:12:48 v #13264 > >     inl ok = join ok
00:12:48 v #13265 > >     inl error = join error
00:12:48 v #13266 > >     real
00:12:48 v #13267 > >         typecase t with
00:12:48 v #13268 > >         | () => $'match !x with Ok () -> !ok () | Error x -> !error x' : result
00:12:48 v #13269 > > t u
00:12:48 v #13270 > >         | _ => $'match !x with Ok x -> !ok x | Error x -> !error x' : result t u
00:12:48 v #13271 > >
00:12:48 v #13272 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:48 v #13273 > > │ ### box
00:12:48 v #13274 > >
00:12:48 v #13275 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:48 v #13276 > > inl box forall t u. (x : result t u) : result' t u =
00:12:48 v #13277 > >     match x with
00:12:48 v #13278 > >     | Ok x => $'Ok !x '
00:12:48 v #13279 > >     | Error err => $'Error !err '
00:12:48 v #13280 > >
00:12:48 v #13281 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:48 v #13282 > > │ ## rust
00:12:48 v #13283 > >
00:12:48 v #13284 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:48 v #13285 > > │ ### anyhow_result
00:12:48 v #13286 > >
00:12:48 v #13287 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:48 v #13288 > > nominal anyhow_result t =
00:12:48 v #13289 > >     `(
00:12:48 v #13290 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:12:48 v #13291 > > Fable.Core.Emit(\"anyhow::Result<$0>\")>]]\n#endif\ntype anyhow_Result<'T> =
00:12:48 v #13292 > > class end"
00:12:48 v #13293 > >         $'' : $'anyhow_Result<`t>'
00:12:48 v #13294 > >     )
00:12:48 v #13295 > >
00:12:48 v #13296 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:48 v #13297 > > │ ### anyhow_error
00:12:48 v #13298 > >
00:12:48 v #13299 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:48 v #13300 > > nominal anyhow_error =
00:12:48 v #13301 > >     `(
00:12:48 v #13302 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:12:48 v #13303 > > Fable.Core.Emit(\"anyhow::Error\")>]]\n#endif\ntype anyhow_Error = class end"
00:12:48 v #13304 > >         $'' : $'anyhow_Error'
00:12:48 v #13305 > >     )
00:12:48 v #13306 > >
00:12:48 v #13307 > > inl anyhow_error error =
00:12:48 v #13308 > >     !\\(error, $'"anyhow::anyhow\!($0)"')
00:12:48 v #13309 > >
00:12:48 v #13310 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:48 v #13311 > > │ ### try'
00:12:48 v #13312 > >
00:12:48 v #13313 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:48 v #13314 > > inl try' forall t u. (x : result' t u) : t =
00:12:48 v #13315 > >     inl is_unit =
00:12:48 v #13316 > >         real
00:12:48 v #13317 > >             typecase t with
00:12:48 v #13318 > >             | () => true
00:12:48 v #13319 > >             | _ => false
00:12:48 v #13320 > >     if is_unit
00:12:48 v #13321 > >     then (!\\(x, $'"true; $0?"') : bool) |> fun _ => $''
00:12:48 v #13322 > >     else !\\(x, $'"$0?"')
00:12:48 v #13323 > >
00:12:48 v #13324 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:48 v #13325 > > │ ### to_try
00:12:48 v #13326 > >
00:12:48 v #13327 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:48 v #13328 > > inl to_try forall t u. (x : result' t u) : rust.try t =
00:12:48 v #13329 > >     !\\(x, $'"$0"')
00:12:49 v #13330 > >
00:12:49 v #13331 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:49 v #13332 > > │ ### unwrap'
00:12:49 v #13333 > >
00:12:49 v #13334 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:49 v #13335 > > inl unwrap' forall t u. (x : result' t u) : t =
00:12:49 v #13336 > >     run_target function
00:12:49 v #13337 > >         | Rust _ => fun () => !\\(x, $'"$0.unwrap()"')
00:12:49 v #13338 > >         | _ => fun () => $'match !x with Ok x -> x | Error e -> failwith
00:12:49 v #13339 > > $"resultm.unwrap\' / e: {e}"'
00:12:49 v #13340 > >
00:12:49 v #13341 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:49 v #13342 > > │ ### unwrap_err'
00:12:49 v #13343 > >
00:12:49 v #13344 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:49 v #13345 > > inl unwrap_err' forall t u. (x : result' t u) : u =
00:12:49 v #13346 > >     $'match !x with Ok x -> failwith $"resultm.unwrap_err\' / x: %A{x}" | Error
00:12:49 v #13347 > > x -> x'
00:12:49 v #13348 > >
00:12:49 v #13349 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:49 v #13350 > > │ ### unbox'
00:12:49 v #13351 > >
00:12:49 v #13352 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:49 v #13353 > > inl unbox' forall t u. (x : result' t u) : result t u =
00:12:49 v #13354 > >     inl ok x : result t u = Ok x
00:12:49 v #13355 > >     inl ok = join ok
00:12:49 v #13356 > >     inl error x : result t u = Error x
00:12:49 v #13357 > >     inl error = join error
00:12:49 v #13358 > >     real
00:12:49 v #13359 > >         typecase t with
00:12:49 v #13360 > >         | () =>
00:12:49 v #13361 > >             (~!\\)
00:12:49 v #13362 > >                 `((result' t u -> result t u) * (result' t u -> result t u))
00:12:49 v #13363 > >                 `(result t u)
00:12:49 v #13364 > >                 ((ok, error, x), ($'"match $2 { Ok(()) => $0(()), Err(e) =>
00:12:49 v #13365 > > $1(e) }"' : string))
00:12:49 v #13366 > >         | _ =>
00:12:49 v #13367 > >             (~!\\)
00:12:49 v #13368 > >                 `((result' t u -> result t u) * (result' t u -> result t u))
00:12:49 v #13369 > >                 `(result t u)
00:12:49 v #13370 > >                 ((ok, error, x), ($'"match $2 { Ok(x) => $0(x), Err(e) => $1(e)
00:12:49 v #13371 > > }"' : string))
00:12:49 v #13372 > >
00:12:49 v #13373 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:49 v #13374 > > │ ### map'
00:12:49 v #13375 > >
00:12:49 v #13376 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:49 v #13377 > > inl map' forall t e u. (fn : t -> u) (source : result' t e) : result' u e =
00:12:49 v #13378 > >     (!\\(source, $'"true; let _result_map_ = $0.map(|x| { //"') : bool) |>
00:12:49 v #13379 > > ignore
00:12:49 v #13380 > >     (!\\(fn !\($'"x"'), $'"true; $0 })"') : bool) |> ignore
00:12:49 v #13381 > >     !\($'"_result_map_"')
00:12:49 v #13382 > >
00:12:49 v #13383 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:49 v #13384 > > │ ### map''
00:12:49 v #13385 > >
00:12:49 v #13386 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:49 v #13387 > > inl map'' forall t e u. (fn : t -> u) (source : result' t e) : result' u e =
00:12:49 v #13388 > >     inl fn = join fn
00:12:49 v #13389 > >     inl source = join source
00:12:49 v #13390 > >     !\($'"!source.map(|x| !fn(x))"')
00:12:49 v #13391 > >
00:12:49 v #13392 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:49 v #13393 > > │ ### map_error'
00:12:49 v #13394 > >
00:12:49 v #13395 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:49 v #13396 > > inl map_error' forall t e u. (fn : e -> u) (source : result' t e) : result' t u
00:12:49 v #13397 > > =
00:12:49 v #13398 > >     inl fn = join fn
00:12:49 v #13399 > >     run_target_args (fun () => fn) function
00:12:49 v #13400 > >         | Rust _ => fun fn =>
00:12:49 v #13401 > >             !\\((source, fn), $'"$0.map_err(|x| $1(x))"')
00:12:49 v #13402 > >         | _ => fun fn =>
00:12:49 v #13403 > >             $'match !source with Ok x -> Ok x | Error x -> Error (!fn x)' :
00:12:49 v #13404 > > result' t u
00:12:50 v #13405 > >
00:12:50 v #13406 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:50 v #13407 > > │ ### map_error''
00:12:50 v #13408 > >
00:12:50 v #13409 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:50 v #13410 > > inl map_error'' forall t e u. (fn : e -> u) (source : result' t e) : result' t u
00:12:50 v #13411 > > =
00:12:50 v #13412 > >     (!\\(source, $'"true; let _result_map_error__ = $0.map_err(|x| { //"') :
00:12:50 v #13413 > > bool) |> ignore
00:12:50 v #13414 > >     (!\\(fn !\($'"x"'), $'"true; $0 })"') : bool) |> ignore
00:12:50 v #13415 > >     !\($'"_result_map_error__"')
00:12:50 v #13416 > >
00:12:50 v #13417 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:50 v #13418 > > │ ### option_ok_or
00:12:50 v #13419 > >
00:12:50 v #13420 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:50 v #13421 > > inl option_ok_or forall t e. (e : e) (source : optionm'.option' t) : result' t e
00:12:50 v #13422 > > =
00:12:50 v #13423 > >     !\\(source, $'"$0.ok_or(!e)"')
00:12:50 v #13424 > >
00:12:50 v #13425 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:50 v #13426 > > │ ### unwrap_or_else
00:12:50 v #13427 > >
00:12:50 v #13428 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:50 v #13429 > > inl unwrap_or_else forall t e u. (fn : e -> u) (source : result' t e) : u =
00:12:50 v #13430 > >     (!\\(source, $'"true; let _result_unwrap_or_else = $0.unwrap_or_else(|x| {
00:12:50 v #13431 > > //"') : bool) |> ignore
00:12:50 v #13432 > >     (!\\(fn !\($'"x"'), $'"true; $0 })"') : bool) |> ignore
00:12:50 v #13433 > >     !\($'"_result_unwrap_or_else"')
00:12:50 v #13434 > >
00:12:50 v #13435 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:50 v #13436 > > │ ### map_or_else
00:12:50 v #13437 > >
00:12:50 v #13438 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:50 v #13439 > > inl map_or_else forall t e u v. (fn : e -> v) (fn2 : u -> v) (source : result' t
00:12:50 v #13440 > > e) : v =
00:12:50 v #13441 > >     (!\\(source, $'"true; let _result_map_or_else = $0.map_or_else(|x| { //"') :
00:12:50 v #13442 > > bool) |> ignore
00:12:50 v #13443 > >     (!\\(fn !\($'"x"'), $'"true; $0 }, |x| { //"') : bool) |> ignore
00:12:50 v #13444 > >     (!\\(fn2 !\($'"x"'), $'"true; $0 })"') : bool) |> ignore
00:12:50 v #13445 > >     !\($'"_result_map_or_else"')
00:12:50 v #13446 > >
00:12:50 v #13447 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:50 v #13448 > > │ ### as_ref
00:12:50 v #13449 > >
00:12:50 v #13450 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:50 v #13451 > > inl as_ref forall t e. (source : result' t e) : result' (rust.ref t) (rust.ref
00:12:50 v #13452 > > e) =
00:12:50 v #13453 > >     !\($'"!source.as_ref()"')
00:12:50 v #13454 > >
00:12:50 v #13455 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:50 v #13456 > > │ ### as_ref'
00:12:50 v #13457 > >
00:12:50 v #13458 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:50 v #13459 > > inl as_ref' forall t e. (source : rust.ref (result' t e)) : result' (rust.ref t)
00:12:50 v #13460 > > (rust.ref e) =
00:12:50 v #13461 > >     !\($'"!source.as_ref()"')
00:12:51 v #13462 > >
00:12:51 v #13463 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:51 v #13464 > > │ ### unwrap_or'
00:12:51 v #13465 > >
00:12:51 v #13466 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:51 v #13467 > > inl unwrap_or' forall t u. (default : t) (x : result' t u) : t =
00:12:51 v #13468 > >     !\\((x, default), $'"$0.unwrap_or($1)"')
00:12:51 v #13469 > >
00:12:51 v #13470 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:51 v #13471 > > │ ### expect
00:12:51 v #13472 > >
00:12:51 v #13473 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:51 v #13474 > > inl expect forall t u. (error : rust.ref string) (x : result' t u) : t =
00:12:51 v #13475 > >     !\($'"!x.expect(&!error)"')
00:12:51 v #13476 > >
00:12:51 v #13477 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:51 v #13478 > > │ ### is_err
00:12:51 v #13479 > >
00:12:51 v #13480 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:51 v #13481 > > inl is_err forall t u. (x : result' t u) : bool =
00:12:51 v #13482 > >     run_target function
00:12:51 v #13483 > >         | Rust _ => fun () => !\\(x, $'"$0.is_err()"')
00:12:51 v #13484 > >         | _ => fun () => true
00:12:51 v #13485 > >
00:12:51 v #13486 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:51 v #13487 > > │ ### ok'
00:12:51 v #13488 > >
00:12:51 v #13489 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:51 v #13490 > > inl ok' forall t. (x : result' t _) : optionm'.option' t =
00:12:51 v #13491 > >     run_target function
00:12:51 v #13492 > >         | Rust _ => fun () => !\\(x, $'"$0.ok()"')
00:12:51 v #13493 > >         | _ => fun () => $'match !x with Ok x -> Some x | Error _ -> None'
00:12:51 v #13494 > >
00:12:51 v #13495 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:51 v #13496 > > │ ### err
00:12:51 v #13497 > >
00:12:51 v #13498 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:51 v #13499 > > inl err forall t u. (x : u) : result' t u =
00:12:51 v #13500 > >     run_target function
00:12:51 v #13501 > >         | Rust _ => fun () => !\\(x, $'"Err($0)"')
00:12:51 v #13502 > >         | _ => fun () => $'!x |> Error'
00:12:51 v #13503 > >
00:12:51 v #13504 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:51 v #13505 > > │ ### ok''
00:12:51 v #13506 > >
00:12:51 v #13507 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:51 v #13508 > > inl ok'' forall t u. (x : t) : result' t u =
00:12:51 v #13509 > >     run_target function
00:12:51 v #13510 > >         | Rust _ => fun () => !\\(x, $'"Ok($0)"')
00:12:51 v #13511 > >         | _ => fun () => $'!x |> Ok'
00:12:51 v #13512 > >
00:12:51 v #13513 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:51 v #13514 > > │ ### transpose
00:12:51 v #13515 > >
00:12:51 v #13516 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:51 v #13517 > > inl transpose forall t u. (x : optionm'.option' (result' t u)) : result'
00:12:51 v #13518 > > (optionm'.option' t) u =
00:12:51 v #13519 > >     !\\(x, $'"$0.transpose()"')
00:12:52 v #13520 > >
00:12:52 v #13521 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:52 v #13522 > > │ ### rc_try_unwrap
00:12:52 v #13523 > >
00:12:52 v #13524 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:52 v #13525 > > inl rc_try_unwrap forall t. (x : rust.rc t) : result' t (rust.rc t) =
00:12:52 v #13526 > >     !\\(x, $'"std::rc::Rc::try_unwrap($0)"')
00:12:52 v #13527 > >
00:12:52 v #13528 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:52 v #13529 > > //// test
00:12:52 v #13530 > > ///! rust
00:12:52 v #13531 > >
00:12:52 v #13532 > > rust.new_rc true
00:12:52 v #13533 > > |> rc_try_unwrap
00:12:52 v #13534 > > |> unbox
00:12:52 v #13535 > > |> _assert_eq (Ok true)
00:12:57 v #13536 > >
00:12:57 v #13537 > > ── [ 5.59s - return value ] ────────────────────────────────────────────────────
00:12:57 v #13538 > > │ __assert_eq / actual: US0_0(true) / expected: US0_0(true)
00:12:57 v #13539 > > │
00:12:57 v #13540 > 00:00:15 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 16666 }
00:12:57 v #13541 > 00:00:15 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/resultm.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/resultm.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:12:58 v #13542 > 00:00:16 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/resultm.dib.ipynb to html
00:12:58 v #13543 > 00:00:16 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:12:58 v #13544 > 00:00:16 v #7 !   validate(nb)
00:12:59 v #13545 > 00:00:16 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:12:59 v #13546 > 00:00:16 v #9 !   return _pygments_highlight(
00:12:59 v #13547 > 00:00:17 v #10 ! [NbConvertApp] Writing 352058 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/resultm.dib.html
00:12:59 v #13548 > 00:00:17 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 898 }
00:12:59 v #13549 > 00:00:17 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 898 }
00:12:59 v #13550 > 00:00:17 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/resultm.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/resultm.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:12:59 v #13551 > 00:00:17 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:12:59 v #13552 > 00:00:17 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:12:59 v #13553 > 00:00:17 d #16 spiral.run / dib / { exit_code = 0; result_length = 17623 }
00:12:59 d #13554 runtime.execute_with_options_async / { exit_code = 0; output_length = 21091 }
00:12:59 d #17 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path resultm.dib --retries 3
00:12:59 d #13555 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path console.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path console.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:12:59 v #13556 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "console.dib", "--retries", "3"])) }
00:12:59 v #13557 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/console.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/console.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/console.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/console.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:13:01 v #13558 > >
00:13:01 v #13559 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:01 v #13560 > > │ # console
00:13:03 v #13561 > >
00:13:03 v #13562 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:03 v #13563 > > //// test
00:13:03 v #13564 > >
00:13:03 v #13565 > > open testing
00:13:04 v #13566 > >
00:13:04 v #13567 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:04 v #13568 > > │ ## fsharp
00:13:04 v #13569 > >
00:13:04 v #13570 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:04 v #13571 > > │ ### console_color
00:13:04 v #13572 > >
00:13:04 v #13573 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:04 v #13574 > > nominal console_color = $'System.ConsoleColor'
00:13:04 v #13575 > >
00:13:04 v #13576 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:04 v #13577 > > │ ### reset_color
00:13:04 v #13578 > >
00:13:04 v #13579 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:04 v #13580 > > inl reset_color () : () =
00:13:04 v #13581 > >     run_target function
00:13:04 v #13582 > >         | Fsharp => fun () => $'System.Console.ResetColor ()'
00:13:04 v #13583 > >         | _ => fun () => ()
00:13:04 v #13584 > >
00:13:04 v #13585 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:04 v #13586 > > │ ### set_foreground_color
00:13:04 v #13587 > >
00:13:04 v #13588 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:04 v #13589 > > inl set_foreground_color (color : console_color) : () =
00:13:04 v #13590 > >     run_target function
00:13:04 v #13591 > >         | Fsharp => fun () => $'System.Console.ForegroundColor <- !color '
00:13:04 v #13592 > >         | _ => fun () => ()
00:13:04 v #13593 > >
00:13:04 v #13594 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:04 v #13595 > > │ ## console
00:13:04 v #13596 > >
00:13:04 v #13597 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:04 v #13598 > > │ ### write_line
00:13:04 v #13599 > >
00:13:04 v #13600 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:04 v #13601 > > inl write_line obj : () =
00:13:04 v #13602 > >     backend_switch {
00:13:04 v #13603 > >         Fsharp = fun () =>
00:13:04 v #13604 > >             fun () => obj |> $'System.Console.WriteLine'
00:13:04 v #13605 > >             |> exec_unit
00:13:04 v #13606 > >         Python = fun () => $'print(!obj)' : ()
00:13:04 v #13607 > >     }
00:13:04 v #13608 > >
00:13:04 v #13609 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:04 v #13610 > > │ ### write
00:13:04 v #13611 > >
00:13:04 v #13612 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:04 v #13613 > > inl write forall t. (x : t) : () =
00:13:04 v #13614 > >     inl s = x |> sm'.format
00:13:04 v #13615 > >     backend_switch {
00:13:04 v #13616 > >         Python = fun () => $'print(!s, end="")' : ()
00:13:04 v #13617 > >         Fsharp = fun () => $'!s |> System.Console.Write' : ()
00:13:04 v #13618 > >     }
00:13:04 v #13619 > >
00:13:04 v #13620 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:04 v #13621 > > │ ### write_ln
00:13:04 v #13622 > >
00:13:04 v #13623 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:04 v #13624 > > inl write_ln l : () =
00:13:04 v #13625 > >     write l
00:13:04 v #13626 > >     backend_switch {
00:13:04 v #13627 > >         Cuda = fun () => $'printf("\\n")' : ()
00:13:04 v #13628 > >         Python = fun () => $"print()" : ()
00:13:04 v #13629 > >         Fsharp = fun () => write_line () : ()
00:13:04 v #13630 > >     }
00:13:05 v #13631 > 00:00:05 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 2909 }
00:13:05 v #13632 > 00:00:05 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/console.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/console.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:13:05 v #13633 > 00:00:05 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/console.dib.ipynb to html
00:13:05 v #13634 > 00:00:05 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:13:05 v #13635 > 00:00:05 v #7 !   validate(nb)
00:13:06 v #13636 > 00:00:06 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:13:06 v #13637 > 00:00:06 v #9 !   return _pygments_highlight(
00:13:06 v #13638 > 00:00:06 v #10 ! [NbConvertApp] Writing 283429 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/console.dib.html
00:13:06 v #13639 > 00:00:06 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 898 }
00:13:06 v #13640 > 00:00:06 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 898 }
00:13:06 v #13641 > 00:00:06 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/console.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/console.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:13:06 v #13642 > 00:00:06 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:13:06 v #13643 > 00:00:06 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:13:06 v #13644 > 00:00:06 d #16 spiral.run / dib / { exit_code = 0; result_length = 3866 }
00:13:06 d #13645 runtime.execute_with_options_async / { exit_code = 0; output_length = 6674 }
00:13:06 d #18 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path console.dib --retries 3
00:13:06 d #13646 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path base.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path base.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:13:06 v #13647 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "base.dib", "--retries", "3"])) }
00:13:06 v #13648 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/base.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/base.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/base.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/base.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:13:07 v #13649 > >
00:13:07 v #13650 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:07 v #13651 > > │ # base
00:13:10 v #13652 > >
00:13:10 v #13653 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:10 v #13654 > > //// test
00:13:10 v #13655 > >
00:13:10 v #13656 > > open testing
00:13:10 v #13657 > >
00:13:10 v #13658 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:10 v #13659 > > │ ## execution
00:13:10 v #13660 > >
00:13:10 v #13661 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:10 v #13662 > > │ ### emit
00:13:10 v #13663 > >
00:13:10 v #13664 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:10 v #13665 > > inl emit forall t. (x : t) : t =
00:13:10 v #13666 > >     $'!x '
00:13:11 v #13667 > >
00:13:11 v #13668 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:11 v #13669 > > │ ### emit_unit
00:13:11 v #13670 > >
00:13:11 v #13671 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:11 v #13672 > > inl emit_unit forall t. (x : t) : () =
00:13:11 v #13673 > >     $'!x '
00:13:11 v #13674 > >
00:13:11 v #13675 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:11 v #13676 > > │ ### use
00:13:11 v #13677 > >
00:13:11 v #13678 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:11 v #13679 > > inl use forall t. (x : t) : t =
00:13:11 v #13680 > >     $'use !x = !x ' : ()
00:13:11 v #13681 > >     $'!x '
00:13:11 v #13682 > >
00:13:11 v #13683 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:11 v #13684 > > │ ## type
00:13:11 v #13685 > >
00:13:11 v #13686 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:11 v #13687 > > │ ### unit
00:13:11 v #13688 > >
00:13:11 v #13689 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:11 v #13690 > > nominal unit = $'unit'
00:13:11 v #13691 > >
00:13:11 v #13692 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:11 v #13693 > > │ ## target
00:13:11 v #13694 > >
00:13:11 v #13695 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:11 v #13696 > > │ ### backend_switch
00:13:11 v #13697 > >
00:13:11 v #13698 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:11 v #13699 > > inl backend_switch forall t. x : t =
00:13:11 v #13700 > >     real
00:13:11 v #13701 > >         inl backend key : t =
00:13:11 v #13702 > >             inl s = real_core.string_lit_to_symbol key
00:13:11 v #13703 > >             real_core.record_type_try_find `(`x) s
00:13:11 v #13704 > >                 (forall v'. => (x s) ())
00:13:11 v #13705 > >                 (fun () => $'' : t)
00:13:11 v #13706 > >         !!!!BackendSwitch (
00:13:11 v #13707 > >             ("Fsharp", backend "Fsharp"),
00:13:11 v #13708 > >             ("Python", backend "Python"),
00:13:11 v #13709 > >             ("Cuda", backend "Cuda")
00:13:11 v #13710 > >         )
00:13:11 v #13711 > >
00:13:11 v #13712 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:11 v #13713 > > │ ### target_runtime
00:13:11 v #13714 > >
00:13:11 v #13715 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:11 v #13716 > > union target_runtime =
00:13:11 v #13717 > >     | Native
00:13:11 v #13718 > >     | Wasm
00:13:11 v #13719 > >     | Contract
00:13:11 v #13720 > >
00:13:11 v #13721 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:11 v #13722 > > │ ### target
00:13:11 v #13723 > >
00:13:11 v #13724 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:11 v #13725 > > union target =
00:13:11 v #13726 > >     | Fsharp : target_runtime
00:13:11 v #13727 > >     | Cuda : target_runtime
00:13:11 v #13728 > >     | Rust : target_runtime
00:13:11 v #13729 > >     | TypeScript : target_runtime
00:13:11 v #13730 > >     | Python : target_runtime
00:13:11 v #13731 > >
00:13:11 v #13732 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:11 v #13733 > > │ ### run_target_args'
00:13:11 v #13734 > >
00:13:11 v #13735 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:11 v #13736 > > inl run_target_args' forall t u. (args : u) (fn : target -> (u -> t)) : t =
00:13:11 v #13737 > >     backend_switch {
00:13:11 v #13738 > >         Fsharp = fun () =>
00:13:11 v #13739 > >             inl is_unit : bool =
00:13:11 v #13740 > >                 real
00:13:11 v #13741 > >                     typecase t with
00:13:11 v #13742 > >                     | () => true
00:13:11 v #13743 > >                     | _ => false
00:13:11 v #13744 > >             $'(* run_target_args\''
00:13:11 v #13745 > >             inl result = $'()' : unit
00:13:11 v #13746 > >             $'run_target_args\' *)'
00:13:11 v #13747 > >             inl emit_result x : () =
00:13:11 v #13748 > >                 if is_unit |> not
00:13:11 v #13749 > >                 then $'let _run_target_args\'_!result = !x '
00:13:11 v #13750 > >             $'\n#if FABLE_COMPILER || WASM || CONTRACT'
00:13:11 v #13751 > >             $'\n#if FABLE_COMPILER_RUST && \!WASM && \!CONTRACT'
00:13:11 v #13752 > >             inl target = Rust Native
00:13:11 v #13753 > >             fn target args |> emit_result
00:13:11 v #13754 > >             $'#endif\n#if FABLE_COMPILER_RUST && WASM'
00:13:11 v #13755 > >             inl target = Rust Wasm
00:13:11 v #13756 > >             fn target args |> emit_result
00:13:11 v #13757 > >             $'#endif\n#if FABLE_COMPILER_RUST && CONTRACT'
00:13:11 v #13758 > >             inl target = Rust Contract
00:13:11 v #13759 > >             fn target args |> emit_result
00:13:11 v #13760 > >             $'#endif\n#if FABLE_COMPILER_TYPESCRIPT'
00:13:11 v #13761 > >             inl target = TypeScript Native
00:13:11 v #13762 > >             fn target args |> emit_result
00:13:11 v #13763 > >             $'#endif\n#if FABLE_COMPILER_PYTHON'
00:13:11 v #13764 > >             inl target = Python Native
00:13:11 v #13765 > >             fn target args |> emit_result
00:13:11 v #13766 > >             $'#endif\n#if \!FABLE_COMPILER_RUST && \!FABLE_COMPILER_TYPESCRIPT
00:13:11 v #13767 > > && \!FABLE_COMPILER_PYTHON'
00:13:11 v #13768 > >             inl target = Fsharp Wasm
00:13:11 v #13769 > >             fn target args |> emit_result
00:13:11 v #13770 > >             $'#endif\n#else'
00:13:11 v #13771 > >             inl target = Fsharp Native
00:13:11 v #13772 > >             fn target args |> emit_result
00:13:11 v #13773 > >             $'#endif'
00:13:11 v #13774 > >             if is_unit
00:13:11 v #13775 > >             then $'// run_target_args\' is_unit'
00:13:11 v #13776 > >             else $'_run_target_args\'_!result ' : t
00:13:11 v #13777 > >         Python = fun () =>
00:13:11 v #13778 > >             inl target = Cuda Native
00:13:11 v #13779 > >             fn target args
00:13:11 v #13780 > >     }
00:13:12 v #13781 > >
00:13:12 v #13782 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:12 v #13783 > > │ ### run_target_args
00:13:12 v #13784 > >
00:13:12 v #13785 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:12 v #13786 > > inl run_target_args forall t u. (args : () -> u) (fn : target -> (u -> t)) : t =
00:13:12 v #13787 > >     inl args = args () |> dyn
00:13:12 v #13788 > >     fn |> run_target_args' args
00:13:12 v #13789 > >
00:13:12 v #13790 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:12 v #13791 > > │ ### run_target
00:13:12 v #13792 > >
00:13:12 v #13793 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:12 v #13794 > > inl run_target forall t. (fn : target -> (() -> t)) : t =
00:13:12 v #13795 > >     run_target_args id fn
00:13:12 v #13796 > >
00:13:12 v #13797 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:12 v #13798 > > //// test
00:13:12 v #13799 > > ///! fsharp
00:13:12 v #13800 > > ///! cuda
00:13:12 v #13801 > > ///! rust
00:13:12 v #13802 > > ///! typescript
00:13:12 v #13803 > > ///! python
00:13:12 v #13804 > >
00:13:12 v #13805 > > run_target function
00:13:12 v #13806 > >     | Fsharp (Native) => fun () => $'1uy'
00:13:12 v #13807 > >     | Cuda (Native) => fun () => $'1'
00:13:12 v #13808 > >     | Rust (Native) => fun () => $'1uy'
00:13:12 v #13809 > >     | TypeScript (Native) => fun () => $'1uy'
00:13:12 v #13810 > >     | Python (Native) => fun () => $'1uy'
00:13:12 v #13811 > >     | _ => fun () => $'2uy'
00:13:12 v #13812 > > |> _assert_eq 1u8
00:13:20 v #13813 > >
00:13:20 v #13814 > > ── [ 8.51s - return value ] ────────────────────────────────────────────────────
00:13:20 v #13815 > > │ .py output (Cuda):
00:13:20 v #13816 > > │ __assert_eq / actual: 1 / expected: 1
00:13:20 v #13817 > > │
00:13:20 v #13818 > > │ .rs output:
00:13:20 v #13819 > > │ __assert_eq / actual: 1 / expected: 1
00:13:20 v #13820 > > │
00:13:20 v #13821 > > │ .ts output:
00:13:20 v #13822 > > │ __assert_eq / actual: 1 / expected: 1
00:13:20 v #13823 > > │
00:13:20 v #13824 > > │ .py output:
00:13:20 v #13825 > > │ __assert_eq / actual: 1 / expected: 1
00:13:20 v #13826 > > │
00:13:20 v #13827 > > │
00:13:20 v #13828 > >
00:13:20 v #13829 > > ── [ 8.51s - stdout ] ──────────────────────────────────────────────────────────
00:13:20 v #13830 > > │ .fsx output:
00:13:20 v #13831 > > │ __assert_eq / actual: 1uy / expected: 1uy
00:13:20 v #13832 > > │
00:13:20 v #13833 > >
00:13:20 v #13834 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:20 v #13835 > > │ ## function
00:13:20 v #13836 > >
00:13:20 v #13837 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:20 v #13838 > > │ ### eval
00:13:20 v #13839 > >
00:13:20 v #13840 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:20 v #13841 > > inl eval fn =
00:13:20 v #13842 > >     fn ()
00:13:21 v #13843 > >
00:13:21 v #13844 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:21 v #13845 > > │ ### flip
00:13:21 v #13846 > >
00:13:21 v #13847 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:21 v #13848 > > inl flip fn a b =
00:13:21 v #13849 > >     fn b a
00:13:21 v #13850 > >
00:13:21 v #13851 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:21 v #13852 > > │ ### do
00:13:21 v #13853 > >
00:13:21 v #13854 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:21 v #13855 > > inl do (body : () -> ()) : () =
00:13:21 v #13856 > >     !!!!Do (body())
00:13:21 v #13857 > >
00:13:21 v #13858 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:21 v #13859 > > │ ### indent
00:13:21 v #13860 > >
00:13:21 v #13861 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:21 v #13862 > > inl indent (body : () -> ()) : () =
00:13:21 v #13863 > >     backend_switch {
00:13:21 v #13864 > >         Fsharp = fun () =>
00:13:21 v #13865 > >             inl body () =
00:13:21 v #13866 > >                 body ()
00:13:21 v #13867 > >                 $'(* indent' : ()
00:13:21 v #13868 > >             !!!!Indent (body())
00:13:21 v #13869 > >             $'indent *)' : ()
00:13:21 v #13870 > >         Python = fun () =>
00:13:21 v #13871 > >             !!!!Indent (body())
00:13:21 v #13872 > >             ()
00:13:21 v #13873 > >     }
00:13:21 v #13874 > >
00:13:21 v #13875 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:21 v #13876 > > │ ### let'
00:13:21 v #13877 > >
00:13:21 v #13878 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:21 v #13879 > > inl let' fn =
00:13:21 v #13880 > >     inl result : unit =
00:13:21 v #13881 > >         backend_switch {
00:13:21 v #13882 > >             Fsharp = fun () =>
00:13:21 v #13883 > >                 $'()' : unit
00:13:21 v #13884 > >             Python = fun () =>
00:13:21 v #13885 > >                 $'None' : unit
00:13:21 v #13886 > >         }
00:13:21 v #13887 > >     backend_switch {
00:13:21 v #13888 > >         Fsharp = fun () =>
00:13:21 v #13889 > >             $'let _let\'_!result =' : ()
00:13:21 v #13890 > >             fn |> indent
00:13:21 v #13891 > >         Python = fun () =>
00:13:21 v #13892 > >             $'def _let\'_!result():' : ()
00:13:21 v #13893 > >             fn |> indent
00:13:21 v #13894 > >     }
00:13:21 v #13895 > >     $'_let\'_!result '
00:13:21 v #13896 > >
00:13:21 v #13897 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:21 v #13898 > > │ ### exec_unit
00:13:21 v #13899 > >
00:13:21 v #13900 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:21 v #13901 > > inl exec_unit (fn : () -> ()) : () =
00:13:21 v #13902 > >     backend_switch {
00:13:21 v #13903 > >         Fsharp = fun () =>
00:13:21 v #13904 > >             inl unit = $'()' : $'unit'
00:13:21 v #13905 > >             ($'(fun () -> !fn (); !unit) ()' : $'unit') |> ignore
00:13:21 v #13906 > >         Python = fun () => fn ()
00:13:21 v #13907 > >     }
00:13:21 v #13908 > >
00:13:21 v #13909 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:21 v #13910 > > │ ### lazy
00:13:21 v #13911 > >
00:13:21 v #13912 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:21 v #13913 > > nominal lazy t = $'Lazy<`t>'
00:13:22 v #13914 > >
00:13:22 v #13915 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:22 v #13916 > > │ ### memoize
00:13:22 v #13917 > >
00:13:22 v #13918 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:22 v #13919 > > nominal lazy t = $'Lazy<`t>'
00:13:22 v #13920 > >
00:13:22 v #13921 > > inl memoize forall t. (fn : () -> t) : () -> t =
00:13:22 v #13922 > >     inl fn = join fn
00:13:22 v #13923 > >     backend_switch {
00:13:22 v #13924 > >         Fsharp = fun () =>
00:13:22 v #13925 > >             inl result : lazy t = $'lazy !fn ()'
00:13:22 v #13926 > >             fun () => $'!result.Value' : t
00:13:22 v #13927 > >         Python = fun () =>
00:13:22 v #13928 > >             inl result = mut None
00:13:22 v #13929 > >             inl computed = mut false
00:13:22 v #13930 > >             fun () =>
00:13:22 v #13931 > >                 if *computed
00:13:22 v #13932 > >                 then *result
00:13:22 v #13933 > >                 else
00:13:22 v #13934 > >                     result <- fn () |> Some
00:13:22 v #13935 > >                     computed <- true
00:13:22 v #13936 > >                     *result
00:13:22 v #13937 > >                 |> optionm.value
00:13:22 v #13938 > >     }
00:13:22 v #13939 > >
00:13:22 v #13940 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:22 v #13941 > > //// test
00:13:22 v #13942 > > ///! fsharp
00:13:22 v #13943 > > ///! cuda
00:13:22 v #13944 > > ///! rust
00:13:22 v #13945 > > ///! typescript
00:13:22 v #13946 > > ///! python
00:13:22 v #13947 > >
00:13:22 v #13948 > > inl count = mut 0i32
00:13:22 v #13949 > > inl add =
00:13:22 v #13950 > >     fun () =>
00:13:22 v #13951 > >         count <- *count + 1
00:13:22 v #13952 > >         count
00:13:22 v #13953 > >     |> memoize
00:13:22 v #13954 > >
00:13:22 v #13955 > > add () |> ignore
00:13:22 v #13956 > > add () |> ignore
00:13:22 v #13957 > > add () |> ignore
00:13:22 v #13958 > >
00:13:22 v #13959 > > *count
00:13:22 v #13960 > > |> _assert_eq 1
00:13:30 v #13961 > >
00:13:30 v #13962 > > ── [ 8.63s - return value ] ────────────────────────────────────────────────────
00:13:30 v #13963 > > │ .py output (Cuda):
00:13:30 v #13964 > > │ __assert_eq / actual: 1 / expected: 1
00:13:30 v #13965 > > │
00:13:30 v #13966 > > │ .rs output:
00:13:30 v #13967 > > │ __assert_eq / actual: 1 / expected: 1
00:13:30 v #13968 > > │
00:13:30 v #13969 > > │ .ts output:
00:13:30 v #13970 > > │ __assert_eq / actual: 1 / expected: 1
00:13:30 v #13971 > > │
00:13:30 v #13972 > > │ .py output:
00:13:30 v #13973 > > │ __assert_eq / actual: 1 / expected: 1
00:13:30 v #13974 > > │
00:13:30 v #13975 > > │
00:13:30 v #13976 > >
00:13:30 v #13977 > > ── [ 8.63s - stdout ] ──────────────────────────────────────────────────────────
00:13:30 v #13978 > > │ .fsx output:
00:13:30 v #13979 > > │ __assert_eq / actual: 1 / expected: 1
00:13:30 v #13980 > > │
00:13:30 v #13981 > >
00:13:30 v #13982 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:30 v #13983 > > │ ### capture
00:13:30 v #13984 > >
00:13:30 v #13985 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:30 v #13986 > > inl capture forall t. (fn : () -> t) : t =
00:13:30 v #13987 > >     backend_switch {
00:13:30 v #13988 > >         Fsharp = fun () =>
00:13:30 v #13989 > >             inl result = dyn true
00:13:30 v #13990 > >             $'let mutable _capture_!result : `t option = None '
00:13:30 v #13991 > >             $'('
00:13:30 v #13992 > >             $'(fun () ->'
00:13:30 v #13993 > >             $'(fun () ->'
00:13:30 v #13994 > >             fn () |> emit_unit
00:13:30 v #13995 > >             $')'
00:13:30 v #13996 > >             $'|> fun x -> x ()'
00:13:30 v #13997 > >             $') () )'
00:13:30 v #13998 > >             $'|> fun x -> _capture_!result <- Some x'
00:13:30 v #13999 > >             $'match _capture_!result with Some x -> x | None -> failwith
00:13:30 v #14000 > > "base.capture / _capture_!result=None"' : t
00:13:30 v #14001 > >         Python = fun () =>
00:13:30 v #14002 > >             fn ()
00:13:30 v #14003 > >     }
00:13:31 v #14004 > >
00:13:31 v #14005 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:31 v #14006 > > │ ### yield_from
00:13:31 v #14007 > >
00:13:31 v #14008 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:31 v #14009 > > inl yield_from forall (t : * -> *) u. (a : t u) : () =
00:13:31 v #14010 > >     backend_switch {
00:13:31 v #14011 > >         Fsharp = fun () => $'yield\! !a ' : ()
00:13:31 v #14012 > >         Python = fun () => $'asyncio.run(!a())' : ()
00:13:31 v #14013 > >     }
00:13:31 v #14014 > >
00:13:31 v #14015 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:31 v #14016 > > │ ### join_body
00:13:31 v #14017 > >
00:13:31 v #14018 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:31 v #14019 > > inl join_body body acc x =
00:13:31 v #14020 > >     if var_is x |> not
00:13:31 v #14021 > >     then body acc x
00:13:31 v #14022 > >     else
00:13:31 v #14023 > >         inl acc = dyn acc
00:13:31 v #14024 > >         join body acc x
00:13:31 v #14025 > >
00:13:31 v #14026 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:31 v #14027 > > //// test
00:13:31 v #14028 > >
00:13:31 v #14029 > > inl rec fold_list f s = function
00:13:31 v #14030 > >     | Cons (x, x') => fold_list f (f s x) x'
00:13:31 v #14031 > >     | Nil => s
00:13:31 v #14032 > >
00:13:31 v #14033 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:31 v #14034 > > //// test
00:13:31 v #14035 > > ///! fsharp
00:13:31 v #14036 > > ///! cuda
00:13:31 v #14037 > > ///! rust
00:13:31 v #14038 > > ///! typescript
00:13:31 v #14039 > > ///! python
00:13:31 v #14040 > > //// print_code
00:13:31 v #14041 > >
00:13:31 v #14042 > > [[ 5i32; 4; join 3; 2; 1 ]]
00:13:31 v #14043 > > |> fold_list (+) 0
00:13:31 v #14044 > > |> _assert_eq 15
00:13:39 v #14045 > >
00:13:39 v #14046 > > ── [ 7.80s - return value ] ────────────────────────────────────────────────────
00:13:39 v #14047 > > │ .py output (Cuda):
00:13:39 v #14048 > > │ __assert_eq / actual: 15 / expected: 15
00:13:39 v #14049 > > │
00:13:39 v #14050 > > │ .rs output:
00:13:39 v #14051 > > │ __assert_eq / actual: 15 / expected: 15
00:13:39 v #14052 > > │
00:13:39 v #14053 > > │ .ts output:
00:13:39 v #14054 > > │ __assert_eq / actual: 15 / expected: 15
00:13:39 v #14055 > > │
00:13:39 v #14056 > > │ .py output:
00:13:39 v #14057 > > │ __assert_eq / actual: 15 / expected: 15
00:13:39 v #14058 > > │
00:13:39 v #14059 > > │
00:13:39 v #14060 > > │
00:13:39 v #14061 > > │
00:13:39 v #14062 > >
00:13:39 v #14063 > > ── [ 7.80s - stdout ] ──────────────────────────────────────────────────────────
00:13:39 v #14064 > > │ .fsx:
00:13:39 v #14065 > > │ let rec method1 () : int32 =
00:13:39 v #14066 > > │     3
00:13:39 v #14067 > > │ and method2 (v0 : bool) : bool =
00:13:39 v #14068 > > │     v0
00:13:39 v #14069 > > │ and closure0 (v0 : string) () : unit =
00:13:39 v #14070 > > │     let v1 : (string -> unit) = System.Console.WriteLine
00:13:39 v #14071 > > │     v1 v0
00:13:39 v #14072 > > │ and method0 () : unit =
00:13:39 v #14073 > > │     let v0 : int32 = method1()
00:13:39 v #14074 > > │     let v1 : int32 = 9 + v0
00:13:39 v #14075 > > │     let v2 : int32 = v1 + 2
00:13:39 v #14076 > > │     let v3 : int32 = v2 + 1
00:13:39 v #14077 > > │     let v4 : bool = v3 = 15
00:13:39 v #14078 > > │     let v6 : bool =
00:13:39 v #14079 > > │         if v4 then
00:13:39 v #14080 > > │             true
00:13:39 v #14081 > > │         else
00:13:39 v #14082 > > │             method2(v4)
00:13:39 v #14083 > > │     let v7 : string = "__assert_eq"
00:13:39 v #14084 > > │     let v8 : string = $"{v7} / actual: %A{v3} / expected:
00:13:39 v #14085 > > %A{15}"
00:13:39 v #14086 > > │     let v11 : unit = ()
00:13:39 v #14087 > > │     let v12 : (unit -> unit) = closure0(v8)
00:13:39 v #14088 > > │     let v13 : unit = (fun () -> v12 (); v11) ()
00:13:39 v #14089 > > │     let v15 : bool = v6 = false
00:13:39 v #14090 > > │     if v15 then
00:13:39 v #14091 > > │         failwith<unit> v8
00:13:39 v #14092 > > │ method0()
00:13:39 v #14093 > > │
00:13:39 v #14094 > > │
00:13:39 v #14095 > > │ .rs:
00:13:39 v #14096 > > │ #![allow(dead_code)]
00:13:39 v #14097 > > │ #![allow(non_camel_case_types)]
00:13:39 v #14098 > > │ #![allow(non_snake_case)]
00:13:39 v #14099 > > │ #![allow(non_upper_case_globals)]
00:13:39 v #14100 > > │ #![allow(unreachable_code)]
00:13:39 v #14101 > > │ #![allow(unused_attributes)]
00:13:39 v #14102 > > │ #![allow(unused_imports)]
00:13:39 v #14103 > > │ #![allow(unused_macros)]
00:13:39 v #14104 > > │ #![allow(unused_parens)]
00:13:39 v #14105 > > │ #![allow(unused_variables)]
00:13:39 v #14106 > > │ #![allow(unused_assignments)]
00:13:39 v #14107 > > │ mod module_6ff740fe {
00:13:39 v #14108 > > │     pub mod Spiral {
00:13:39 v #14109 > > │         use super::*;
00:13:39 v #14110 > > │         use fable_library_rust::Native_::on_startup;
00:13:39 v #14111 > > │         use fable_library_rust::String_::printfn;
00:13:39 v #14112 > > │         use fable_library_rust::String_::sprintf;
00:13:39 v #14113 > > │         use fable_library_rust::String_::string;
00:13:39 v #14114 > > │         pub fn method1() -> i32 {
00:13:39 v #14115 > > │             3_i32
00:13:39 v #14116 > > │         }
00:13:39 v #14117 > > │         pub fn method2(v0: bool) -> bool {
00:13:39 v #14118 > > │             v0
00:13:39 v #14119 > > │         }
00:13:39 v #14120 > > │         pub fn closure0(v0: string, unitVar: ()) {
00:13:39 v #14121 > > │             printfn!("{0}", v0);
00:13:39 v #14122 > > │         }
00:13:39 v #14123 > > │         pub fn method0() {
00:13:39 v #14124 > > │             let v3: i32 = ((9_i32 + (Spiral::method1())) +
00:13:39 v #14125 > > 2_i32) + 1_i32;
00:13:39 v #14126 > > │             let v4: bool = (v3) == 15_i32;
00:13:39 v #14127 > > │             let v6: bool = if v4 { true } else {
00:13:39 v #14128 > > Spiral::method2(v4) };
00:13:39 v #14129 > > │             let v8: string = sprintf!(
00:13:39 v #14130 > > │                 "{} / actual: {:?} / expected: {:?}",
00:13:39 v #14131 > > │                 string("__assert_eq"),
00:13:39 v #14132 > > │                 v3,
00:13:39 v #14133 > > │                 15_i32
00:13:39 v #14134 > > │             );
00:13:39 v #14135 > > │             let v13: () = {
00:13:39 v #14136 > > │                 Spiral::closure0(v8.clone(), ());
00:13:39 v #14137 > > │                 ()
00:13:39 v #14138 > > │             };
00:13:39 v #14139 > > │             if (v6) == false {
00:13:39 v #14140 > > │                 panic!("{}", v8,);
00:13:39 v #14141 > > │             }
00:13:39 v #14142 > > │         }
00:13:39 v #14143 > > │         // on_startup!(Spiral::method0());
00:13:39 v #14144 > > │     }
00:13:39 v #14145 > > │ }
00:13:39 v #14146 > > │ pub use module_6ff740fe::*;
00:13:39 v #14147 > > │
00:13:39 v #14148 > > │
00:13:39 v #14149 > > │
00:13:39 v #14150 > > │ pub fn main() -> Result<(), String> { Ok(Spiral::method0()) }
00:13:39 v #14151 > > │
00:13:39 v #14152 > > │ .ts:
00:13:39 v #14153 > > │ import { int32 } from
00:13:39 v #14154 > > "./fable_modules/fable-library-ts.5.0.0-alpha.2/Int32.js";
00:13:39 v #14155 > > │ import { interpolate, toText } from
00:13:39 v #14156 > > "./fable_modules/fable-library-ts.5.0.0-alpha.2/String.js";
00:13:39 v #14157 > > │
00:13:39 v #14158 > > │ export function method1(): int32 {
00:13:39 v #14159 > > │     return 3;
00:13:39 v #14160 > > │ }
00:13:39 v #14161 > > │
00:13:39 v #14162 > > │ export function method2(v0: boolean): boolean {
00:13:39 v #14163 > > │     return v0;
00:13:39 v #14164 > > │ }
00:13:39 v #14165 > > │
00:13:39 v #14166 > > │ export function closure0(v0: string, unitVar: void): void {
00:13:39 v #14167 > > │     console.log(v0);
00:13:39 v #14168 > > │ }
00:13:39 v #14169 > > │
00:13:39 v #14170 > > │ export function method0(): void {
00:13:39 v #14171 > > │     const v3: int32 = (((9 + method1()) + 2) + 1) | 0;
00:13:39 v #14172 > > │     const v4: boolean = v3 === 15;
00:13:39 v #14173 > > │     const v6: boolean = v4 ? true : method2(v4);
00:13:39 v #14174 > > │     const v8: string = toText(interpolate("%P() / actual:
00:13:39 v #14175 > > %A%P() / expected: %A%P()", ["__assert_eq", v3, 15]));
00:13:39 v #14176 > > │     let v13: any;
00:13:39 v #14177 > > │     closure0(v8, undefined);
00:13:39 v #14178 > > │     v13 = undefined;
00:13:39 v #14179 > > │     if (v6 === false) {
00:13:39 v #14180 > > │         throw new Error(v8);
00:13:39 v #14181 > > │     }
00:13:39 v #14182 > > │ }
00:13:39 v #14183 > > │
00:13:39 v #14184 > > │ method0();
00:13:39 v #14185 > > │
00:13:39 v #14186 > > │
00:13:39 v #14187 > > │ .py:
00:13:39 v #14188 > > │ from fable_modules.fable_library.string_ import (to_text,
00:13:39 v #14189 > > interpolate)
00:13:39 v #14190 > > │
00:13:39 v #14191 > > │ def method1(__unit: None=None) -> int:
00:13:39 v #14192 > > │     return 3
00:13:39 v #14193 > > │
00:13:39 v #14194 > > │
00:13:39 v #14195 > > │ def method2(v0: bool) -> bool:
00:13:39 v #14196 > > │     return v0
00:13:39 v #14197 > > │
00:13:39 v #14198 > > │
00:13:39 v #14199 > > │ def closure0(v0: str, unit_var: None) -> None:
00:13:39 v #14200 > > │     print(v0)
00:13:39 v #14201 > > │
00:13:39 v #14202 > > │
00:13:39 v #14203 > > │ def method0(__unit: None=None) -> None:
00:13:39 v #14204 > > │     v3: int = (((9 + method1()) + 2) + 1) or 0
00:13:39 v #14205 > > │     v4: bool = v3 == 15
00:13:39 v #14206 > > │     v6: bool = True if v4 else method2(v4)
00:13:39 v #14207 > > │     v8: str = to_text(interpolate("%P() / actual: %A%P()
00:13:39 v #14208 > > expected: %A%P()", ["__assert_eq", v3, 15]))
00:13:39 v #14209 > > │     v13: None
00:13:39 v #14210 > > │     closure0(v8, None)
00:13:39 v #14211 > > │     v13 = None
00:13:39 v #14212 > > │     if v6 == False:
00:13:39 v #14213 > > │         raise Exception(v8)
00:13:39 v #14214 > > │
00:13:39 v #14215 > > │
00:13:39 v #14216 > > │
00:13:39 v #14217 > > │ method0()
00:13:39 v #14218 > > │
00:13:39 v #14219 > > │
00:13:39 v #14220 > > │ .py (Cuda):
00:13:39 v #14221 > > │ kernel = r"""
00:13:39 v #14222 > > │ """
00:13:39 v #14223 > > │ class static_array():
00:13:39 v #14224 > > │     def __init__(self, length):
00:13:39 v #14225 > > │         self.ptr = []
00:13:39 v #14226 > > │         for _ in range(length):
00:13:39 v #14227 > > │             self.ptr.append(None)
00:13:39 v #14228 > > │
00:13:39 v #14229 > > │     def __getitem__(self, index):
00:13:39 v #14230 > > │         assert 0 <= index < len(self.ptr), "The get index
00:13:39 v #14231 > > needs to be in range."
00:13:39 v #14232 > > │         return self.ptr[index]
00:13:39 v #14233 > > │
00:13:39 v #14234 > > │     def __setitem__(self, index, value):
00:13:39 v #14235 > > │         assert 0 <= index < len(self.ptr), "The set index
00:13:39 v #14236 > > needs to be in range."
00:13:39 v #14237 > > │         self.ptr[index] = value
00:13:39 v #14238 > > │
00:13:39 v #14239 > > │ class static_array_list(static_array):
00:13:39 v #14240 > > │     def __init__(self, length):
00:13:39 v #14241 > > │         super().__init__(length)
00:13:39 v #14242 > > │         self.length = 0
00:13:39 v #14243 > > │
00:13:39 v #14244 > > │     def __getitem__(self, index):
00:13:39 v #14245 > > │         assert 0 <= index < self.length, "The get index needs
00:13:39 v #14246 > > to be in range."
00:13:39 v #14247 > > │         return self.ptr[index]
00:13:39 v #14248 > > │
00:13:39 v #14249 > > │     def __setitem__(self, index, value):
00:13:39 v #14250 > > │         assert 0 <= index < self.length, "The set index needs
00:13:39 v #14251 > > to be in range."
00:13:39 v #14252 > > │         self.ptr[index] = value
00:13:39 v #14253 > > │
00:13:39 v #14254 > > │     def push(self,value):
00:13:39 v #14255 > > │         assert (self.length < len(self.ptr)), "The length
00:13:39 v #14256 > > before pushing has to be less than the maximum length of the array."
00:13:39 v #14257 > > │         self.ptr[self.length] = value
00:13:39 v #14258 > > │         self.length += 1
00:13:39 v #14259 > > │
00:13:39 v #14260 > > │     def pop(self):
00:13:39 v #14261 > > │         assert (0 < self.length), "The length before popping
00:13:39 v #14262 > > has to be greater than 0."
00:13:39 v #14263 > > │         self.length -= 1
00:13:39 v #14264 > > │         return self.ptr[self.length]
00:13:39 v #14265 > > │
00:13:39 v #14266 > > │     def unsafe_set_length(self,i):
00:13:39 v #14267 > > │         assert 0 <= i <= len(self.ptr), "The new length has
00:13:39 v #14268 > > to be in range."
00:13:39 v #14269 > > │         self.length = i
00:13:39 v #14270 > > │
00:13:39 v #14271 > > │ class dynamic_array(static_array):
00:13:39 v #14272 > > │     pass
00:13:39 v #14273 > > │
00:13:39 v #14274 > > │ class dynamic_array_list(static_array_list):
00:13:39 v #14275 > > │     def length_(self): return self.length
00:13:39 v #14276 > > │
00:13:39 v #14277 > > │ import cupy as cp
00:13:39 v #14278 > > │ import numpy as np
00:13:39 v #14279 > > │ from dataclasses import dataclass
00:13:39 v #14280 > > │ from typing import NamedTuple, Union, Callable, Tuple
00:13:39 v #14281 > > │ i8 = int; i16 = int; i32 = int; i64 = int; u8 = int; u16 =
00:13:39 v #14282 > > int; u32 = int; u64 = int; f32 = float; f64 = float; char = str; string = str
00:13:39 v #14283 > > │ cuda = False
00:13:39 v #14284 > > │
00:13:39 v #14285 > > │ def method1() -> i32:
00:13:39 v #14286 > > │     return 3
00:13:39 v #14287 > > │ def method2(v0 : bool) -> bool:
00:13:39 v #14288 > > │     return v0
00:13:39 v #14289 > > │ def method0() -> None:
00:13:39 v #14290 > > │     v0 = method1()
00:13:39 v #14291 > > │     v1 = 9 + v0
00:13:39 v #14292 > > │     del v0
00:13:39 v #14293 > > │     v2 = v1 + 2
00:13:39 v #14294 > > │     del v1
00:13:39 v #14295 > > │     v3 = v2 + 1
00:13:39 v #14296 > > │     del v2
00:13:39 v #14297 > > │     v4 = v3 == 15
00:13:39 v #14298 > > │     if v4:
00:13:39 v #14299 > > │         v6 = True
00:13:39 v #14300 > > │     else:
00:13:39 v #14301 > > │         v6 = method2(v4)
00:13:39 v #14302 > > │     del v4
00:13:39 v #14303 > > │     v9 = "__assert_eq"
00:13:39 v #14304 > > │     v10 = f"{v9} / actual: {v3} / expected: {15}"
00:13:39 v #14305 > > │     del v3, v9
00:13:39 v #14306 > > │     print(v10)
00:13:39 v #14307 > > │     v16 = v6 == False
00:13:39 v #14308 > > │     del v6
00:13:39 v #14309 > > │     if v16:
00:13:39 v #14310 > > │         del v16
00:13:39 v #14311 > > │         raise Exception(v10)
00:13:39 v #14312 > > │     else:
00:13:39 v #14313 > > │         del v10, v16
00:13:39 v #14314 > > │         return
00:13:39 v #14315 > > │ def main_body():
00:13:39 v #14316 > > │     return method0()
00:13:39 v #14317 > > │
00:13:39 v #14318 > > │ def main():
00:13:39 v #14319 > > │     r = main_body()
00:13:39 v #14320 > > │     if cuda: cp.cuda.get_current_stream().synchronize() #
00:13:39 v #14321 > > This line is here so the `__trap()` calls on the kernel aren't missed.
00:13:39 v #14322 > > │     return r
00:13:39 v #14323 > > │
00:13:39 v #14324 > > │ if __name__ == '__main__': result = main(); None if result is
00:13:39 v #14325 > > None else print(result)
00:13:39 v #14326 > > │
00:13:39 v #14327 > > │ .fsx output:
00:13:39 v #14328 > > │ __assert_eq / actual: 15 / expected: 15
00:13:39 v #14329 > > │
00:13:39 v #14330 > >
00:13:39 v #14331 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:39 v #14332 > > //// test
00:13:39 v #14333 > > ///! fsharp
00:13:39 v #14334 > > ///! cuda
00:13:39 v #14335 > > ///! rust
00:13:39 v #14336 > > ///! typescript
00:13:39 v #14337 > > ///! python
00:13:39 v #14338 > > //// print_code
00:13:39 v #14339 > >
00:13:39 v #14340 > > [[ 5i32; 4; join 3; 2; 1 ]]
00:13:39 v #14341 > > |> fold_list (join_body (+)) 0
00:13:39 v #14342 > > |> _assert_eq 15
00:13:47 v #14343 > >
00:13:47 v #14344 > > ── [ 7.79s - return value ] ────────────────────────────────────────────────────
00:13:47 v #14345 > > │ .py output (Cuda):
00:13:47 v #14346 > > │ __assert_eq / actual: 15 / expected: 15
00:13:47 v #14347 > > │
00:13:47 v #14348 > > │ .rs output:
00:13:47 v #14349 > > │ __assert_eq / actual: 15 / expected: 15
00:13:47 v #14350 > > │
00:13:47 v #14351 > > │ .ts output:
00:13:47 v #14352 > > │ __assert_eq / actual: 15 / expected: 15
00:13:47 v #14353 > > │
00:13:47 v #14354 > > │ .py output:
00:13:47 v #14355 > > │ __assert_eq / actual: 15 / expected: 15
00:13:47 v #14356 > > │
00:13:47 v #14357 > > │
00:13:47 v #14358 > > │
00:13:47 v #14359 > > │
00:13:47 v #14360 > >
00:13:47 v #14361 > > ── [ 7.79s - stdout ] ──────────────────────────────────────────────────────────
00:13:47 v #14362 > > │ .fsx:
00:13:47 v #14363 > > │ let rec method1 () : int32 =
00:13:47 v #14364 > > │     3
00:13:47 v #14365 > > │ and method2 (v0 : int32, v1 : int32) : int32 =
00:13:47 v #14366 > > │     let v2 : int32 = v1 + v0
00:13:47 v #14367 > > │     v2
00:13:47 v #14368 > > │ and method3 (v0 : bool) : bool =
00:13:47 v #14369 > > │     v0
00:13:47 v #14370 > > │ and closure0 (v0 : string) () : unit =
00:13:47 v #14371 > > │     let v1 : (string -> unit) = System.Console.WriteLine
00:13:47 v #14372 > > │     v1 v0
00:13:47 v #14373 > > │ and method0 () : unit =
00:13:47 v #14374 > > │     let v0 : int32 = method1()
00:13:47 v #14375 > > │     let v1 : int32 = 9
00:13:47 v #14376 > > │     let v2 : int32 = method2(v0, v1)
00:13:47 v #14377 > > │     let v3 : int32 = v2 + 2
00:13:47 v #14378 > > │     let v4 : int32 = v3 + 1
00:13:47 v #14379 > > │     let v5 : bool = v4 = 15
00:13:47 v #14380 > > │     let v7 : bool =
00:13:47 v #14381 > > │         if v5 then
00:13:47 v #14382 > > │             true
00:13:47 v #14383 > > │         else
00:13:47 v #14384 > > │             method3(v5)
00:13:47 v #14385 > > │     let v8 : string = "__assert_eq"
00:13:47 v #14386 > > │     let v9 : string = $"{v8} / actual: %A{v4} / expected:
00:13:47 v #14387 > > %A{15}"
00:13:47 v #14388 > > │     let v12 : unit = ()
00:13:47 v #14389 > > │     let v13 : (unit -> unit) = closure0(v9)
00:13:47 v #14390 > > │     let v14 : unit = (fun () -> v13 (); v12) ()
00:13:47 v #14391 > > │     let v16 : bool = v7 = false
00:13:47 v #14392 > > │     if v16 then
00:13:47 v #14393 > > │         failwith<unit> v9
00:13:47 v #14394 > > │ method0()
00:13:47 v #14395 > > │
00:13:47 v #14396 > > │
00:13:47 v #14397 > > │ .rs:
00:13:47 v #14398 > > │ #![allow(dead_code)]
00:13:47 v #14399 > > │ #![allow(non_camel_case_types)]
00:13:47 v #14400 > > │ #![allow(non_snake_case)]
00:13:47 v #14401 > > │ #![allow(non_upper_case_globals)]
00:13:47 v #14402 > > │ #![allow(unreachable_code)]
00:13:47 v #14403 > > │ #![allow(unused_attributes)]
00:13:47 v #14404 > > │ #![allow(unused_imports)]
00:13:47 v #14405 > > │ #![allow(unused_macros)]
00:13:47 v #14406 > > │ #![allow(unused_parens)]
00:13:47 v #14407 > > │ #![allow(unused_variables)]
00:13:47 v #14408 > > │ #![allow(unused_assignments)]
00:13:47 v #14409 > > │ mod module_6ff740fe {
00:13:47 v #14410 > > │     pub mod Spiral {
00:13:47 v #14411 > > │         use super::*;
00:13:47 v #14412 > > │         use fable_library_rust::Native_::on_startup;
00:13:47 v #14413 > > │         use fable_library_rust::String_::printfn;
00:13:47 v #14414 > > │         use fable_library_rust::String_::sprintf;
00:13:47 v #14415 > > │         use fable_library_rust::String_::string;
00:13:47 v #14416 > > │         pub fn method1() -> i32 {
00:13:47 v #14417 > > │             3_i32
00:13:47 v #14418 > > │         }
00:13:47 v #14419 > > │         pub fn method2(v0: i32, v1: i32) -> i32 {
00:13:47 v #14420 > > │             (v1) + (v0)
00:13:47 v #14421 > > │         }
00:13:47 v #14422 > > │         pub fn method3(v0: bool) -> bool {
00:13:47 v #14423 > > │             v0
00:13:47 v #14424 > > │         }
00:13:47 v #14425 > > │         pub fn closure0(v0: string, unitVar: ()) {
00:13:47 v #14426 > > │             printfn!("{0}", v0);
00:13:47 v #14427 > > │         }
00:13:47 v #14428 > > │         pub fn method0() {
00:13:47 v #14429 > > │             let v4: i32 =
00:13:47 v #14430 > > ((Spiral::method2(Spiral::method1(), 9_i32)) + 2_i32) + 1_i32;
00:13:47 v #14431 > > │             let v5: bool = (v4) == 15_i32;
00:13:47 v #14432 > > │             let v7: bool = if v5 { true } else {
00:13:47 v #14433 > > Spiral::method3(v5) };
00:13:47 v #14434 > > │             let v9: string = sprintf!(
00:13:47 v #14435 > > │                 "{} / actual: {:?} / expected: {:?}",
00:13:47 v #14436 > > │                 string("__assert_eq"),
00:13:47 v #14437 > > │                 v4,
00:13:47 v #14438 > > │                 15_i32
00:13:47 v #14439 > > │             );
00:13:47 v #14440 > > │             let v14: () = {
00:13:47 v #14441 > > │                 Spiral::closure0(v9.clone(), ());
00:13:47 v #14442 > > │                 ()
00:13:47 v #14443 > > │             };
00:13:47 v #14444 > > │             if (v7) == false {
00:13:47 v #14445 > > │                 panic!("{}", v9,);
00:13:47 v #14446 > > │             }
00:13:47 v #14447 > > │         }
00:13:47 v #14448 > > │         // on_startup!(Spiral::method0());
00:13:47 v #14449 > > │     }
00:13:47 v #14450 > > │ }
00:13:47 v #14451 > > │ pub use module_6ff740fe::*;
00:13:47 v #14452 > > │
00:13:47 v #14453 > > │
00:13:47 v #14454 > > │
00:13:47 v #14455 > > │ pub fn main() -> Result<(), String> { Ok(Spiral::method0()) }
00:13:47 v #14456 > > │
00:13:47 v #14457 > > │ .ts:
00:13:47 v #14458 > > │ import { int32 } from
00:13:47 v #14459 > > "./fable_modules/fable-library-ts.5.0.0-alpha.2/Int32.js";
00:13:47 v #14460 > > │ import { interpolate, toText } from
00:13:47 v #14461 > > "./fable_modules/fable-library-ts.5.0.0-alpha.2/String.js";
00:13:47 v #14462 > > │
00:13:47 v #14463 > > │ export function method1(): int32 {
00:13:47 v #14464 > > │     return 3;
00:13:47 v #14465 > > │ }
00:13:47 v #14466 > > │
00:13:47 v #14467 > > │ export function method2(v0: int32, v1: int32): int32 {
00:13:47 v #14468 > > │     return v1 + v0;
00:13:47 v #14469 > > │ }
00:13:47 v #14470 > > │
00:13:47 v #14471 > > │ export function method3(v0: boolean): boolean {
00:13:47 v #14472 > > │     return v0;
00:13:47 v #14473 > > │ }
00:13:47 v #14474 > > │
00:13:47 v #14475 > > │ export function closure0(v0: string, unitVar: void): void {
00:13:47 v #14476 > > │     console.log(v0);
00:13:47 v #14477 > > │ }
00:13:47 v #14478 > > │
00:13:47 v #14479 > > │ export function method0(): void {
00:13:47 v #14480 > > │     const v4: int32 = ((method2(method1(), 9) + 2) + 1) | 0;
00:13:47 v #14481 > > │     const v5: boolean = v4 === 15;
00:13:47 v #14482 > > │     const v7: boolean = v5 ? true : method3(v5);
00:13:47 v #14483 > > │     const v9: string = toText(interpolate("%P() / actual:
00:13:47 v #14484 > > %A%P() / expected: %A%P()", ["__assert_eq", v4, 15]));
00:13:47 v #14485 > > │     let v14: any;
00:13:47 v #14486 > > │     closure0(v9, undefined);
00:13:47 v #14487 > > │     v14 = undefined;
00:13:47 v #14488 > > │     if (v7 === false) {
00:13:47 v #14489 > > │         throw new Error(v9);
00:13:47 v #14490 > > │     }
00:13:47 v #14491 > > │ }
00:13:47 v #14492 > > │
00:13:47 v #14493 > > │ method0();
00:13:47 v #14494 > > │
00:13:47 v #14495 > > │
00:13:47 v #14496 > > │ .py:
00:13:47 v #14497 > > │ from fable_modules.fable_library.string_ import (to_text,
00:13:47 v #14498 > > interpolate)
00:13:47 v #14499 > > │
00:13:47 v #14500 > > │ def method1(__unit: None=None) -> int:
00:13:47 v #14501 > > │     return 3
00:13:47 v #14502 > > │
00:13:47 v #14503 > > │
00:13:47 v #14504 > > │ def method2(v0: int, v1: int) -> int:
00:13:47 v #14505 > > │     return v1 + v0
00:13:47 v #14506 > > │
00:13:47 v #14507 > > │
00:13:47 v #14508 > > │ def method3(v0: bool) -> bool:
00:13:47 v #14509 > > │     return v0
00:13:47 v #14510 > > │
00:13:47 v #14511 > > │
00:13:47 v #14512 > > │ def closure0(v0: str, unit_var: None) -> None:
00:13:47 v #14513 > > │     print(v0)
00:13:47 v #14514 > > │
00:13:47 v #14515 > > │
00:13:47 v #14516 > > │ def method0(__unit: None=None) -> None:
00:13:47 v #14517 > > │     v4: int = ((method2(method1(), 9) + 2) + 1) or 0
00:13:47 v #14518 > > │     v5: bool = v4 == 15
00:13:47 v #14519 > > │     v7: bool = True if v5 else method3(v5)
00:13:47 v #14520 > > │     v9: str = to_text(interpolate("%P() / actual: %A%P()
00:13:47 v #14521 > > expected: %A%P()", ["__assert_eq", v4, 15]))
00:13:47 v #14522 > > │     v14: None
00:13:47 v #14523 > > │     closure0(v9, None)
00:13:47 v #14524 > > │     v14 = None
00:13:47 v #14525 > > │     if v7 == False:
00:13:47 v #14526 > > │         raise Exception(v9)
00:13:47 v #14527 > > │
00:13:47 v #14528 > > │
00:13:47 v #14529 > > │
00:13:47 v #14530 > > │ method0()
00:13:47 v #14531 > > │
00:13:47 v #14532 > > │
00:13:47 v #14533 > > │ .py (Cuda):
00:13:47 v #14534 > > │ kernel = r"""
00:13:47 v #14535 > > │ """
00:13:47 v #14536 > > │ class static_array():
00:13:47 v #14537 > > │     def __init__(self, length):
00:13:47 v #14538 > > │         self.ptr = []
00:13:47 v #14539 > > │         for _ in range(length):
00:13:47 v #14540 > > │             self.ptr.append(None)
00:13:47 v #14541 > > │
00:13:47 v #14542 > > │     def __getitem__(self, index):
00:13:47 v #14543 > > │         assert 0 <= index < len(self.ptr), "The get index
00:13:47 v #14544 > > needs to be in range."
00:13:47 v #14545 > > │         return self.ptr[index]
00:13:47 v #14546 > > │
00:13:47 v #14547 > > │     def __setitem__(self, index, value):
00:13:47 v #14548 > > │         assert 0 <= index < len(self.ptr), "The set index
00:13:47 v #14549 > > needs to be in range."
00:13:47 v #14550 > > │         self.ptr[index] = value
00:13:47 v #14551 > > │
00:13:47 v #14552 > > │ class static_array_list(static_array):
00:13:47 v #14553 > > │     def __init__(self, length):
00:13:47 v #14554 > > │         super().__init__(length)
00:13:47 v #14555 > > │         self.length = 0
00:13:47 v #14556 > > │
00:13:47 v #14557 > > │     def __getitem__(self, index):
00:13:47 v #14558 > > │         assert 0 <= index < self.length, "The get index needs
00:13:47 v #14559 > > to be in range."
00:13:47 v #14560 > > │         return self.ptr[index]
00:13:47 v #14561 > > │
00:13:47 v #14562 > > │     def __setitem__(self, index, value):
00:13:47 v #14563 > > │         assert 0 <= index < self.length, "The set index needs
00:13:47 v #14564 > > to be in range."
00:13:47 v #14565 > > │         self.ptr[index] = value
00:13:47 v #14566 > > │
00:13:47 v #14567 > > │     def push(self,value):
00:13:47 v #14568 > > │         assert (self.length < len(self.ptr)), "The length
00:13:47 v #14569 > > before pushing has to be less than the maximum length of the array."
00:13:47 v #14570 > > │         self.ptr[self.length] = value
00:13:47 v #14571 > > │         self.length += 1
00:13:47 v #14572 > > │
00:13:47 v #14573 > > │     def pop(self):
00:13:47 v #14574 > > │         assert (0 < self.length), "The length before popping
00:13:47 v #14575 > > has to be greater than 0."
00:13:47 v #14576 > > │         self.length -= 1
00:13:47 v #14577 > > │         return self.ptr[self.length]
00:13:47 v #14578 > > │
00:13:47 v #14579 > > │     def unsafe_set_length(self,i):
00:13:47 v #14580 > > │         assert 0 <= i <= len(self.ptr), "The new length has
00:13:47 v #14581 > > to be in range."
00:13:47 v #14582 > > │         self.length = i
00:13:47 v #14583 > > │
00:13:47 v #14584 > > │ class dynamic_array(static_array):
00:13:47 v #14585 > > │     pass
00:13:47 v #14586 > > │
00:13:47 v #14587 > > │ class dynamic_array_list(static_array_list):
00:13:47 v #14588 > > │     def length_(self): return self.length
00:13:47 v #14589 > > │
00:13:47 v #14590 > > │ import cupy as cp
00:13:47 v #14591 > > │ import numpy as np
00:13:47 v #14592 > > │ from dataclasses import dataclass
00:13:47 v #14593 > > │ from typing import NamedTuple, Union, Callable, Tuple
00:13:47 v #14594 > > │ i8 = int; i16 = int; i32 = int; i64 = int; u8 = int; u16 =
00:13:47 v #14595 > > int; u32 = int; u64 = int; f32 = float; f64 = float; char = str; string = str
00:13:47 v #14596 > > │ cuda = False
00:13:47 v #14597 > > │
00:13:47 v #14598 > > │ def method1() -> i32:
00:13:47 v #14599 > > │     return 3
00:13:47 v #14600 > > │ def method2(v0 : i32, v1 : i32) -> i32:
00:13:47 v #14601 > > │     v2 = v1 + v0
00:13:47 v #14602 > > │     del v0, v1
00:13:47 v #14603 > > │     return v2
00:13:47 v #14604 > > │ def method3(v0 : bool) -> bool:
00:13:47 v #14605 > > │     return v0
00:13:47 v #14606 > > │ def method0() -> None:
00:13:47 v #14607 > > │     v0 = method1()
00:13:47 v #14608 > > │     v1 = 9
00:13:47 v #14609 > > │     v2 = method2(v0, v1)
00:13:47 v #14610 > > │     del v0, v1
00:13:47 v #14611 > > │     v3 = v2 + 2
00:13:47 v #14612 > > │     del v2
00:13:47 v #14613 > > │     v4 = v3 + 1
00:13:47 v #14614 > > │     del v3
00:13:47 v #14615 > > │     v5 = v4 == 15
00:13:47 v #14616 > > │     if v5:
00:13:47 v #14617 > > │         v7 = True
00:13:47 v #14618 > > │     else:
00:13:47 v #14619 > > │         v7 = method3(v5)
00:13:47 v #14620 > > │     del v5
00:13:47 v #14621 > > │     v10 = "__assert_eq"
00:13:47 v #14622 > > │     v11 = f"{v10} / actual: {v4} / expected: {15}"
00:13:47 v #14623 > > │     del v4, v10
00:13:47 v #14624 > > │     print(v11)
00:13:47 v #14625 > > │     v17 = v7 == False
00:13:47 v #14626 > > │     del v7
00:13:47 v #14627 > > │     if v17:
00:13:47 v #14628 > > │         del v17
00:13:47 v #14629 > > │         raise Exception(v11)
00:13:47 v #14630 > > │     else:
00:13:47 v #14631 > > │         del v11, v17
00:13:47 v #14632 > > │         return
00:13:47 v #14633 > > │ def main_body():
00:13:47 v #14634 > > │     return method0()
00:13:47 v #14635 > > │
00:13:47 v #14636 > > │ def main():
00:13:47 v #14637 > > │     r = main_body()
00:13:47 v #14638 > > │     if cuda: cp.cuda.get_current_stream().synchronize() #
00:13:47 v #14639 > > This line is here so the `__trap()` calls on the kernel aren't missed.
00:13:47 v #14640 > > │     return r
00:13:47 v #14641 > > │
00:13:47 v #14642 > > │ if __name__ == '__main__': result = main(); None if result is
00:13:47 v #14643 > > None else print(result)
00:13:47 v #14644 > > │
00:13:47 v #14645 > > │ .fsx output:
00:13:47 v #14646 > > │ __assert_eq / actual: 15 / expected: 15
00:13:47 v #14647 > > │
00:13:47 v #14648 > >
00:13:47 v #14649 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:47 v #14650 > > │ ### join_body_unit
00:13:47 v #14651 > >
00:13:47 v #14652 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:47 v #14653 > > inl join_body_unit body d x =
00:13:47 v #14654 > >     if var_is d |> not
00:13:47 v #14655 > >     then body x
00:13:47 v #14656 > >     else
00:13:47 v #14657 > >         inl x = dyn x
00:13:47 v #14658 > >         join body x
00:13:47 v #14659 > >
00:13:47 v #14660 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:47 v #14661 > > //// test
00:13:47 v #14662 > > ///! fsharp
00:13:47 v #14663 > > ///! cuda
00:13:47 v #14664 > > ///! rust
00:13:47 v #14665 > > ///! typescript
00:13:47 v #14666 > > ///! python
00:13:47 v #14667 > > //// print_code
00:13:47 v #14668 > >
00:13:47 v #14669 > > [[ 5i32; 4; join 3; 2; 1 ]]
00:13:47 v #14670 > > |> fold_list (fun acc n => join_body_unit ((+) acc) n n) 0
00:13:47 v #14671 > > |> _assert_eq 15
00:13:54 v #14672 > >
00:13:54 v #14673 > > ── [ 7.20s - return value ] ────────────────────────────────────────────────────
00:13:54 v #14674 > > │ .py output (Cuda):
00:13:54 v #14675 > > │ __assert_eq / actual: 15 / expected: 15
00:13:54 v #14676 > > │
00:13:54 v #14677 > > │ .rs output:
00:13:54 v #14678 > > │ __assert_eq / actual: 15 / expected: 15
00:13:54 v #14679 > > │
00:13:54 v #14680 > > │ .ts output:
00:13:54 v #14681 > > │ __assert_eq / actual: 15 / expected: 15
00:13:54 v #14682 > > │
00:13:54 v #14683 > > │ .py output:
00:13:54 v #14684 > > │ __assert_eq / actual: 15 / expected: 15
00:13:54 v #14685 > > │
00:13:54 v #14686 > > │
00:13:54 v #14687 > > │
00:13:54 v #14688 > > │
00:13:54 v #14689 > >
00:13:54 v #14690 > > ── [ 7.20s - stdout ] ──────────────────────────────────────────────────────────
00:13:54 v #14691 > > │ .fsx:
00:13:54 v #14692 > > │ let rec method1 () : int32 =
00:13:54 v #14693 > > │     3
00:13:54 v #14694 > > │ and method2 (v0 : int32) : int32 =
00:13:54 v #14695 > > │     let v1 : int32 = 9 + v0
00:13:54 v #14696 > > │     v1
00:13:54 v #14697 > > │ and method3 (v0 : bool) : bool =
00:13:54 v #14698 > > │     v0
00:13:54 v #14699 > > │ and closure0 (v0 : string) () : unit =
00:13:54 v #14700 > > │     let v1 : (string -> unit) = System.Console.WriteLine
00:13:54 v #14701 > > │     v1 v0
00:13:54 v #14702 > > │ and method0 () : unit =
00:13:54 v #14703 > > │     let v0 : int32 = method1()
00:13:54 v #14704 > > │     let v1 : int32 = method2(v0)
00:13:54 v #14705 > > │     let v2 : int32 = v1 + 2
00:13:54 v #14706 > > │     let v3 : int32 = v2 + 1
00:13:54 v #14707 > > │     let v4 : bool = v3 = 15
00:13:54 v #14708 > > │     let v6 : bool =
00:13:54 v #14709 > > │         if v4 then
00:13:54 v #14710 > > │             true
00:13:54 v #14711 > > │         else
00:13:54 v #14712 > > │             method3(v4)
00:13:54 v #14713 > > │     let v7 : string = "__assert_eq"
00:13:54 v #14714 > > │     let v8 : string = $"{v7} / actual: %A{v3} / expected:
00:13:54 v #14715 > > %A{15}"
00:13:54 v #14716 > > │     let v11 : unit = ()
00:13:54 v #14717 > > │     let v12 : (unit -> unit) = closure0(v8)
00:13:54 v #14718 > > │     let v13 : unit = (fun () -> v12 (); v11) ()
00:13:54 v #14719 > > │     let v15 : bool = v6 = false
00:13:54 v #14720 > > │     if v15 then
00:13:54 v #14721 > > │         failwith<unit> v8
00:13:54 v #14722 > > │ method0()
00:13:54 v #14723 > > │
00:13:54 v #14724 > > │
00:13:54 v #14725 > > │ .rs:
00:13:54 v #14726 > > │ #![allow(dead_code)]
00:13:54 v #14727 > > │ #![allow(non_camel_case_types)]
00:13:54 v #14728 > > │ #![allow(non_snake_case)]
00:13:54 v #14729 > > │ #![allow(non_upper_case_globals)]
00:13:54 v #14730 > > │ #![allow(unreachable_code)]
00:13:54 v #14731 > > │ #![allow(unused_attributes)]
00:13:54 v #14732 > > │ #![allow(unused_imports)]
00:13:54 v #14733 > > │ #![allow(unused_macros)]
00:13:54 v #14734 > > │ #![allow(unused_parens)]
00:13:54 v #14735 > > │ #![allow(unused_variables)]
00:13:54 v #14736 > > │ #![allow(unused_assignments)]
00:13:54 v #14737 > > │ mod module_6ff740fe {
00:13:54 v #14738 > > │     pub mod Spiral {
00:13:54 v #14739 > > │         use super::*;
00:13:54 v #14740 > > │         use fable_library_rust::Native_::on_startup;
00:13:54 v #14741 > > │         use fable_library_rust::String_::printfn;
00:13:54 v #14742 > > │         use fable_library_rust::String_::sprintf;
00:13:54 v #14743 > > │         use fable_library_rust::String_::string;
00:13:54 v #14744 > > │         pub fn method1() -> i32 {
00:13:54 v #14745 > > │             3_i32
00:13:54 v #14746 > > │         }
00:13:54 v #14747 > > │         pub fn method2(v0: i32) -> i32 {
00:13:54 v #14748 > > │             9_i32 + (v0)
00:13:54 v #14749 > > │         }
00:13:54 v #14750 > > │         pub fn method3(v0: bool) -> bool {
00:13:54 v #14751 > > │             v0
00:13:54 v #14752 > > │         }
00:13:54 v #14753 > > │         pub fn closure0(v0: string, unitVar: ()) {
00:13:54 v #14754 > > │             printfn!("{0}", v0);
00:13:54 v #14755 > > │         }
00:13:54 v #14756 > > │         pub fn method0() {
00:13:54 v #14757 > > │             let v3: i32 =
00:13:54 v #14758 > > ((Spiral::method2(Spiral::method1())) + 2_i32) + 1_i32;
00:13:54 v #14759 > > │             let v4: bool = (v3) == 15_i32;
00:13:54 v #14760 > > │             let v6: bool = if v4 { true } else {
00:13:54 v #14761 > > Spiral::method3(v4) };
00:13:54 v #14762 > > │             let v8: string = sprintf!(
00:13:54 v #14763 > > │                 "{} / actual: {:?} / expected: {:?}",
00:13:54 v #14764 > > │                 string("__assert_eq"),
00:13:54 v #14765 > > │                 v3,
00:13:54 v #14766 > > │                 15_i32
00:13:54 v #14767 > > │             );
00:13:54 v #14768 > > │             let v13: () = {
00:13:54 v #14769 > > │                 Spiral::closure0(v8.clone(), ());
00:13:54 v #14770 > > │                 ()
00:13:54 v #14771 > > │             };
00:13:54 v #14772 > > │             if (v6) == false {
00:13:54 v #14773 > > │                 panic!("{}", v8,);
00:13:54 v #14774 > > │             }
00:13:54 v #14775 > > │         }
00:13:54 v #14776 > > │         // on_startup!(Spiral::method0());
00:13:54 v #14777 > > │     }
00:13:54 v #14778 > > │ }
00:13:54 v #14779 > > │ pub use module_6ff740fe::*;
00:13:54 v #14780 > > │
00:13:54 v #14781 > > │
00:13:54 v #14782 > > │
00:13:54 v #14783 > > │ pub fn main() -> Result<(), String> { Ok(Spiral::method0()) }
00:13:54 v #14784 > > │
00:13:54 v #14785 > > │ .ts:
00:13:54 v #14786 > > │ import { int32 } from
00:13:54 v #14787 > > "./fable_modules/fable-library-ts.5.0.0-alpha.2/Int32.js";
00:13:54 v #14788 > > │ import { interpolate, toText } from
00:13:54 v #14789 > > "./fable_modules/fable-library-ts.5.0.0-alpha.2/String.js";
00:13:54 v #14790 > > │
00:13:54 v #14791 > > │ export function method1(): int32 {
00:13:54 v #14792 > > │     return 3;
00:13:54 v #14793 > > │ }
00:13:54 v #14794 > > │
00:13:54 v #14795 > > │ export function method2(v0: int32): int32 {
00:13:54 v #14796 > > │     return 9 + v0;
00:13:54 v #14797 > > │ }
00:13:54 v #14798 > > │
00:13:54 v #14799 > > │ export function method3(v0: boolean): boolean {
00:13:54 v #14800 > > │     return v0;
00:13:54 v #14801 > > │ }
00:13:54 v #14802 > > │
00:13:54 v #14803 > > │ export function closure0(v0: string, unitVar: void): void {
00:13:54 v #14804 > > │     console.log(v0);
00:13:54 v #14805 > > │ }
00:13:54 v #14806 > > │
00:13:54 v #14807 > > │ export function method0(): void {
00:13:54 v #14808 > > │     const v3: int32 = ((method2(method1()) + 2) + 1) | 0;
00:13:54 v #14809 > > │     const v4: boolean = v3 === 15;
00:13:54 v #14810 > > │     const v6: boolean = v4 ? true : method3(v4);
00:13:54 v #14811 > > │     const v8: string = toText(interpolate("%P() / actual:
00:13:54 v #14812 > > %A%P() / expected: %A%P()", ["__assert_eq", v3, 15]));
00:13:54 v #14813 > > │     let v13: any;
00:13:54 v #14814 > > │     closure0(v8, undefined);
00:13:54 v #14815 > > │     v13 = undefined;
00:13:54 v #14816 > > │     if (v6 === false) {
00:13:54 v #14817 > > │         throw new Error(v8);
00:13:54 v #14818 > > │     }
00:13:54 v #14819 > > │ }
00:13:54 v #14820 > > │
00:13:54 v #14821 > > │ method0();
00:13:54 v #14822 > > │
00:13:54 v #14823 > > │
00:13:54 v #14824 > > │ .py:
00:13:54 v #14825 > > │ from fable_modules.fable_library.string_ import (to_text,
00:13:54 v #14826 > > interpolate)
00:13:54 v #14827 > > │
00:13:54 v #14828 > > │ def method1(__unit: None=None) -> int:
00:13:54 v #14829 > > │     return 3
00:13:54 v #14830 > > │
00:13:54 v #14831 > > │
00:13:54 v #14832 > > │ def method2(v0: int) -> int:
00:13:54 v #14833 > > │     return 9 + v0
00:13:54 v #14834 > > │
00:13:54 v #14835 > > │
00:13:54 v #14836 > > │ def method3(v0: bool) -> bool:
00:13:54 v #14837 > > │     return v0
00:13:54 v #14838 > > │
00:13:54 v #14839 > > │
00:13:54 v #14840 > > │ def closure0(v0: str, unit_var: None) -> None:
00:13:54 v #14841 > > │     print(v0)
00:13:54 v #14842 > > │
00:13:54 v #14843 > > │
00:13:54 v #14844 > > │ def method0(__unit: None=None) -> None:
00:13:54 v #14845 > > │     v3: int = ((method2(method1()) + 2) + 1) or 0
00:13:54 v #14846 > > │     v4: bool = v3 == 15
00:13:54 v #14847 > > │     v6: bool = True if v4 else method3(v4)
00:13:54 v #14848 > > │     v8: str = to_text(interpolate("%P() / actual: %A%P()
00:13:54 v #14849 > > expected: %A%P()", ["__assert_eq", v3, 15]))
00:13:54 v #14850 > > │     v13: None
00:13:54 v #14851 > > │     closure0(v8, None)
00:13:54 v #14852 > > │     v13 = None
00:13:54 v #14853 > > │     if v6 == False:
00:13:54 v #14854 > > │         raise Exception(v8)
00:13:54 v #14855 > > │
00:13:54 v #14856 > > │
00:13:54 v #14857 > > │
00:13:54 v #14858 > > │ method0()
00:13:54 v #14859 > > │
00:13:54 v #14860 > > │
00:13:54 v #14861 > > │ .py (Cuda):
00:13:54 v #14862 > > │ kernel = r"""
00:13:54 v #14863 > > │ """
00:13:54 v #14864 > > │ class static_array():
00:13:54 v #14865 > > │     def __init__(self, length):
00:13:54 v #14866 > > │         self.ptr = []
00:13:54 v #14867 > > │         for _ in range(length):
00:13:54 v #14868 > > │             self.ptr.append(None)
00:13:54 v #14869 > > │
00:13:54 v #14870 > > │     def __getitem__(self, index):
00:13:54 v #14871 > > │         assert 0 <= index < len(self.ptr), "The get index
00:13:54 v #14872 > > needs to be in range."
00:13:54 v #14873 > > │         return self.ptr[index]
00:13:54 v #14874 > > │
00:13:54 v #14875 > > │     def __setitem__(self, index, value):
00:13:54 v #14876 > > │         assert 0 <= index < len(self.ptr), "The set index
00:13:54 v #14877 > > needs to be in range."
00:13:54 v #14878 > > │         self.ptr[index] = value
00:13:54 v #14879 > > │
00:13:54 v #14880 > > │ class static_array_list(static_array):
00:13:54 v #14881 > > │     def __init__(self, length):
00:13:54 v #14882 > > │         super().__init__(length)
00:13:54 v #14883 > > │         self.length = 0
00:13:54 v #14884 > > │
00:13:54 v #14885 > > │     def __getitem__(self, index):
00:13:54 v #14886 > > │         assert 0 <= index < self.length, "The get index needs
00:13:54 v #14887 > > to be in range."
00:13:54 v #14888 > > │         return self.ptr[index]
00:13:54 v #14889 > > │
00:13:54 v #14890 > > │     def __setitem__(self, index, value):
00:13:54 v #14891 > > │         assert 0 <= index < self.length, "The set index needs
00:13:54 v #14892 > > to be in range."
00:13:54 v #14893 > > │         self.ptr[index] = value
00:13:54 v #14894 > > │
00:13:54 v #14895 > > │     def push(self,value):
00:13:54 v #14896 > > │         assert (self.length < len(self.ptr)), "The length
00:13:54 v #14897 > > before pushing has to be less than the maximum length of the array."
00:13:54 v #14898 > > │         self.ptr[self.length] = value
00:13:54 v #14899 > > │         self.length += 1
00:13:54 v #14900 > > │
00:13:54 v #14901 > > │     def pop(self):
00:13:54 v #14902 > > │         assert (0 < self.length), "The length before popping
00:13:54 v #14903 > > has to be greater than 0."
00:13:54 v #14904 > > │         self.length -= 1
00:13:54 v #14905 > > │         return self.ptr[self.length]
00:13:54 v #14906 > > │
00:13:54 v #14907 > > │     def unsafe_set_length(self,i):
00:13:54 v #14908 > > │         assert 0 <= i <= len(self.ptr), "The new length has
00:13:54 v #14909 > > to be in range."
00:13:54 v #14910 > > │         self.length = i
00:13:54 v #14911 > > │
00:13:54 v #14912 > > │ class dynamic_array(static_array):
00:13:54 v #14913 > > │     pass
00:13:54 v #14914 > > │
00:13:54 v #14915 > > │ class dynamic_array_list(static_array_list):
00:13:54 v #14916 > > │     def length_(self): return self.length
00:13:54 v #14917 > > │
00:13:54 v #14918 > > │ import cupy as cp
00:13:54 v #14919 > > │ import numpy as np
00:13:54 v #14920 > > │ from dataclasses import dataclass
00:13:54 v #14921 > > │ from typing import NamedTuple, Union, Callable, Tuple
00:13:54 v #14922 > > │ i8 = int; i16 = int; i32 = int; i64 = int; u8 = int; u16 =
00:13:54 v #14923 > > int; u32 = int; u64 = int; f32 = float; f64 = float; char = str; string = str
00:13:54 v #14924 > > │ cuda = False
00:13:54 v #14925 > > │
00:13:54 v #14926 > > │ def method1() -> i32:
00:13:54 v #14927 > > │     return 3
00:13:54 v #14928 > > │ def method2(v0 : i32) -> i32:
00:13:54 v #14929 > > │     v1 = 9 + v0
00:13:54 v #14930 > > │     del v0
00:13:54 v #14931 > > │     return v1
00:13:54 v #14932 > > │ def method3(v0 : bool) -> bool:
00:13:54 v #14933 > > │     return v0
00:13:54 v #14934 > > │ def method0() -> None:
00:13:54 v #14935 > > │     v0 = method1()
00:13:54 v #14936 > > │     v1 = method2(v0)
00:13:54 v #14937 > > │     del v0
00:13:54 v #14938 > > │     v2 = v1 + 2
00:13:54 v #14939 > > │     del v1
00:13:54 v #14940 > > │     v3 = v2 + 1
00:13:54 v #14941 > > │     del v2
00:13:54 v #14942 > > │     v4 = v3 == 15
00:13:54 v #14943 > > │     if v4:
00:13:54 v #14944 > > │         v6 = True
00:13:54 v #14945 > > │     else:
00:13:54 v #14946 > > │         v6 = method3(v4)
00:13:54 v #14947 > > │     del v4
00:13:54 v #14948 > > │     v9 = "__assert_eq"
00:13:54 v #14949 > > │     v10 = f"{v9} / actual: {v3} / expected: {15}"
00:13:54 v #14950 > > │     del v3, v9
00:13:54 v #14951 > > │     print(v10)
00:13:54 v #14952 > > │     v16 = v6 == False
00:13:54 v #14953 > > │     del v6
00:13:54 v #14954 > > │     if v16:
00:13:54 v #14955 > > │         del v16
00:13:54 v #14956 > > │         raise Exception(v10)
00:13:54 v #14957 > > │     else:
00:13:54 v #14958 > > │         del v10, v16
00:13:54 v #14959 > > │         return
00:13:54 v #14960 > > │ def main_body():
00:13:54 v #14961 > > │     return method0()
00:13:54 v #14962 > > │
00:13:54 v #14963 > > │ def main():
00:13:54 v #14964 > > │     r = main_body()
00:13:54 v #14965 > > │     if cuda: cp.cuda.get_current_stream().synchronize() #
00:13:54 v #14966 > > This line is here so the `__trap()` calls on the kernel aren't missed.
00:13:54 v #14967 > > │     return r
00:13:54 v #14968 > > │
00:13:54 v #14969 > > │ if __name__ == '__main__': result = main(); None if result is
00:13:54 v #14970 > > None else print(result)
00:13:54 v #14971 > > │
00:13:54 v #14972 > > │ .fsx output:
00:13:54 v #14973 > > │ __assert_eq / actual: 15 / expected: 15
00:13:54 v #14974 > > │
00:13:54 v #14975 > >
00:13:54 v #14976 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:54 v #14977 > > │ ## arithmetic
00:13:54 v #14978 > >
00:13:54 v #14979 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:54 v #14980 > > │ ### (+.)
00:13:54 v #14981 > >
00:13:54 v #14982 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:54 v #14983 > > inl (+.) forall t. (a : t) (b : t) : t =
00:13:54 v #14984 > >     $'!a + !b '
00:13:54 v #14985 > >
00:13:54 v #14986 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:54 v #14987 > > //// test
00:13:54 v #14988 > > ///! fsharp
00:13:54 v #14989 > > ///! cuda
00:13:54 v #14990 > > ///! rust
00:13:54 v #14991 > > ///! typescript
00:13:54 v #14992 > > ///! python
00:13:54 v #14993 > >
00:13:54 v #14994 > > ($'3' : i32) +. ($'-6' : i32)
00:13:54 v #14995 > > |> _assert_eq -3i32
00:14:02 v #14996 > >
00:14:02 v #14997 > > ── [ 7.74s - return value ] ────────────────────────────────────────────────────
00:14:02 v #14998 > > │ .py output (Cuda):
00:14:02 v #14999 > > │ __assert_eq / actual: -3 / expected: -3
00:14:02 v #15000 > > │
00:14:02 v #15001 > > │ .rs output:
00:14:02 v #15002 > > │ __assert_eq / actual: -3 / expected: -3
00:14:02 v #15003 > > │
00:14:02 v #15004 > > │ .ts output:
00:14:02 v #15005 > > │ __assert_eq / actual: -3 / expected: -3
00:14:02 v #15006 > > │
00:14:02 v #15007 > > │ .py output:
00:14:02 v #15008 > > │ __assert_eq / actual: -3 / expected: -3
00:14:02 v #15009 > > │
00:14:02 v #15010 > > │
00:14:02 v #15011 > >
00:14:02 v #15012 > > ── [ 7.74s - stdout ] ──────────────────────────────────────────────────────────
00:14:02 v #15013 > > │ .fsx output:
00:14:02 v #15014 > > │ __assert_eq / actual: -3 / expected: -3
00:14:02 v #15015 > > │
00:14:02 v #15016 > >
00:14:02 v #15017 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:02 v #15018 > > │ ### (-.)
00:14:02 v #15019 > >
00:14:02 v #15020 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:02 v #15021 > > inl (-.) forall t. (a : t) (b : t) : t =
00:14:02 v #15022 > >     $'!a - !b '
00:14:02 v #15023 > >
00:14:02 v #15024 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:02 v #15025 > > //// test
00:14:02 v #15026 > > ///! fsharp
00:14:02 v #15027 > > ///! cuda
00:14:02 v #15028 > > ///! rust
00:14:02 v #15029 > > ///! typescript
00:14:02 v #15030 > > ///! python
00:14:02 v #15031 > >
00:14:02 v #15032 > > ($'3' : i32) -. ($'6' : i32)
00:14:02 v #15033 > > |> _assert_eq -3i32
00:14:10 v #15034 > >
00:14:10 v #15035 > > ── [ 7.58s - return value ] ────────────────────────────────────────────────────
00:14:10 v #15036 > > │ .py output (Cuda):
00:14:10 v #15037 > > │ __assert_eq / actual: -3 / expected: -3
00:14:10 v #15038 > > │
00:14:10 v #15039 > > │ .rs output:
00:14:10 v #15040 > > │ __assert_eq / actual: -3 / expected: -3
00:14:10 v #15041 > > │
00:14:10 v #15042 > > │ .ts output:
00:14:10 v #15043 > > │ __assert_eq / actual: -3 / expected: -3
00:14:10 v #15044 > > │
00:14:10 v #15045 > > │ .py output:
00:14:10 v #15046 > > │ __assert_eq / actual: -3 / expected: -3
00:14:10 v #15047 > > │
00:14:10 v #15048 > > │
00:14:10 v #15049 > >
00:14:10 v #15050 > > ── [ 7.58s - stdout ] ──────────────────────────────────────────────────────────
00:14:10 v #15051 > > │ .fsx output:
00:14:10 v #15052 > > │ __assert_eq / actual: -3 / expected: -3
00:14:10 v #15053 > > │
00:14:10 v #15054 > >
00:14:10 v #15055 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:10 v #15056 > > │ ### (*.)
00:14:10 v #15057 > >
00:14:10 v #15058 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:10 v #15059 > > inl (*.) forall t. (a : t) (b : t) : t =
00:14:10 v #15060 > >     $'!a * !b '
00:14:10 v #15061 > >
00:14:10 v #15062 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:10 v #15063 > > //// test
00:14:10 v #15064 > > ///! fsharp
00:14:10 v #15065 > > ///! cuda
00:14:10 v #15066 > > ///! rust
00:14:10 v #15067 > > ///! typescript
00:14:10 v #15068 > > ///! python
00:14:10 v #15069 > >
00:14:10 v #15070 > > ($'3' : i32) *. ($'-1' : i32)
00:14:10 v #15071 > > |> _assert_eq -3i32
00:14:17 v #15072 > >
00:14:17 v #15073 > > ── [ 7.72s - return value ] ────────────────────────────────────────────────────
00:14:17 v #15074 > > │ .py output (Cuda):
00:14:17 v #15075 > > │ __assert_eq / actual: -3 / expected: -3
00:14:17 v #15076 > > │
00:14:17 v #15077 > > │ .rs output:
00:14:17 v #15078 > > │ __assert_eq / actual: -3 / expected: -3
00:14:17 v #15079 > > │
00:14:17 v #15080 > > │ .ts output:
00:14:17 v #15081 > > │ __assert_eq / actual: -3 / expected: -3
00:14:17 v #15082 > > │
00:14:17 v #15083 > > │ .py output:
00:14:17 v #15084 > > │ __assert_eq / actual: -3 / expected: -3
00:14:17 v #15085 > > │
00:14:17 v #15086 > > │
00:14:17 v #15087 > >
00:14:17 v #15088 > > ── [ 7.72s - stdout ] ──────────────────────────────────────────────────────────
00:14:17 v #15089 > > │ .fsx output:
00:14:17 v #15090 > > │ __assert_eq / actual: -3 / expected: -3
00:14:17 v #15091 > > │
00:14:17 v #15092 > >
00:14:17 v #15093 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:17 v #15094 > > │ ### (/.)
00:14:17 v #15095 > >
00:14:17 v #15096 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:17 v #15097 > > inl (/.) forall t. (a : t) (b : t) : t =
00:14:17 v #15098 > >     $'!a / !b '
00:14:18 v #15099 > >
00:14:18 v #15100 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:18 v #15101 > > //// test
00:14:18 v #15102 > > ///! fsharp
00:14:18 v #15103 > > ///! cuda
00:14:18 v #15104 > > ///! rust
00:14:18 v #15105 > > ///! typescript
00:14:18 v #15106 > > ///! python
00:14:18 v #15107 > >
00:14:18 v #15108 > > ($'-3' : i32) /. ($'1' : i32)
00:14:18 v #15109 > > |> _assert_eq -3i32
00:14:25 v #15110 > >
00:14:25 v #15111 > > ── [ 7.23s - return value ] ────────────────────────────────────────────────────
00:14:25 v #15112 > > │ .py output (Cuda):
00:14:25 v #15113 > > │ __assert_eq / actual: -3.0 / expected: -3
00:14:25 v #15114 > > │
00:14:25 v #15115 > > │ .rs output:
00:14:25 v #15116 > > │ __assert_eq / actual: -3 / expected: -3
00:14:25 v #15117 > > │
00:14:25 v #15118 > > │ .ts output:
00:14:25 v #15119 > > │ __assert_eq / actual: -3 / expected: -3
00:14:25 v #15120 > > │
00:14:25 v #15121 > > │ .py output:
00:14:25 v #15122 > > │ __assert_eq / actual: -3 / expected: -3
00:14:25 v #15123 > > │
00:14:25 v #15124 > > │
00:14:25 v #15125 > >
00:14:25 v #15126 > > ── [ 7.23s - stdout ] ──────────────────────────────────────────────────────────
00:14:25 v #15127 > > │ .fsx output:
00:14:25 v #15128 > > │ __assert_eq / actual: -3 / expected: -3
00:14:25 v #15129 > > │
00:14:25 v #15130 > >
00:14:25 v #15131 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:25 v #15132 > > │ ## comparison
00:14:25 v #15133 > >
00:14:25 v #15134 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:25 v #15135 > > │ ### (=.)
00:14:25 v #15136 > >
00:14:25 v #15137 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:25 v #15138 > > inl (=.) forall t. (a : t) (b : t) : bool =
00:14:25 v #15139 > >     backend_switch {
00:14:25 v #15140 > >         Fsharp = fun () => $'!a = !b ' : bool
00:14:25 v #15141 > >         Python = fun () => $'!a == !b ' : bool
00:14:25 v #15142 > >     }
00:14:25 v #15143 > >
00:14:25 v #15144 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:25 v #15145 > > //// test
00:14:25 v #15146 > > ///! fsharp
00:14:25 v #15147 > > ///! cuda
00:14:25 v #15148 > > ///! rust
00:14:25 v #15149 > > ///! typescript
00:14:25 v #15150 > > ///! python
00:14:25 v #15151 > >
00:14:25 v #15152 > > ($'-3' : i32) =. ($'-3' : i32)
00:14:25 v #15153 > > |> _assert_eq true
00:14:32 v #15154 > >
00:14:32 v #15155 > > ── [ 7.54s - return value ] ────────────────────────────────────────────────────
00:14:32 v #15156 > > │ .py output (Cuda):
00:14:32 v #15157 > > │ __assert_eq / actual: True / expected: True
00:14:32 v #15158 > > │
00:14:32 v #15159 > > │ .rs output:
00:14:32 v #15160 > > │ __assert_eq / actual: true / expected: true
00:14:32 v #15161 > > │
00:14:32 v #15162 > > │ .ts output:
00:14:32 v #15163 > > │ __assert_eq / actual: true / expected: true
00:14:32 v #15164 > > │
00:14:32 v #15165 > > │ .py output:
00:14:32 v #15166 > > │ __assert_eq / actual: true / expected: true
00:14:32 v #15167 > > │
00:14:32 v #15168 > > │
00:14:32 v #15169 > >
00:14:32 v #15170 > > ── [ 7.54s - stdout ] ──────────────────────────────────────────────────────────
00:14:32 v #15171 > > │ .fsx output:
00:14:32 v #15172 > > │ __assert_eq / actual: true / expected: true
00:14:32 v #15173 > > │
00:14:32 v #15174 > >
00:14:32 v #15175 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:32 v #15176 > > │ ### (<>.)
00:14:32 v #15177 > >
00:14:32 v #15178 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:32 v #15179 > > inl (<>.) forall t. (a : t) (b : t) : bool =
00:14:32 v #15180 > >     backend_switch {
00:14:32 v #15181 > >         Fsharp = fun () => $'!a <> !b ' : bool
00:14:32 v #15182 > >         Python = fun () => $'!a \!= !b ' : bool
00:14:32 v #15183 > >     }
00:14:33 v #15184 > >
00:14:33 v #15185 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:33 v #15186 > > //// test
00:14:33 v #15187 > > ///! fsharp
00:14:33 v #15188 > > ///! cuda
00:14:33 v #15189 > > ///! rust
00:14:33 v #15190 > > ///! typescript
00:14:33 v #15191 > > ///! python
00:14:33 v #15192 > >
00:14:33 v #15193 > > ($'-3' : i32) <>. ($'3' : i32)
00:14:33 v #15194 > > |> _assert_eq true
00:14:40 v #15195 > >
00:14:40 v #15196 > > ── [ 7.27s - return value ] ────────────────────────────────────────────────────
00:14:40 v #15197 > > │ .py output (Cuda):
00:14:40 v #15198 > > │ __assert_eq / actual: True / expected: True
00:14:40 v #15199 > > │
00:14:40 v #15200 > > │ .rs output:
00:14:40 v #15201 > > │ __assert_eq / actual: true / expected: true
00:14:40 v #15202 > > │
00:14:40 v #15203 > > │ .ts output:
00:14:40 v #15204 > > │ __assert_eq / actual: true / expected: true
00:14:40 v #15205 > > │
00:14:40 v #15206 > > │ .py output:
00:14:40 v #15207 > > │ __assert_eq / actual: true / expected: true
00:14:40 v #15208 > > │
00:14:40 v #15209 > > │
00:14:40 v #15210 > >
00:14:40 v #15211 > > ── [ 7.27s - stdout ] ──────────────────────────────────────────────────────────
00:14:40 v #15212 > > │ .fsx output:
00:14:40 v #15213 > > │ __assert_eq / actual: true / expected: true
00:14:40 v #15214 > > │
00:14:40 v #15215 > >
00:14:40 v #15216 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:40 v #15217 > > │ ### (<>..)
00:14:40 v #15218 > >
00:14:40 v #15219 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:40 v #15220 > > inl (<>..) a b =
00:14:40 v #15221 > >     fun () => a = b
00:14:40 v #15222 > >     |> dyn
00:14:40 v #15223 > >     |> eval
00:14:40 v #15224 > >     |> not
00:14:40 v #15225 > >
00:14:40 v #15226 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:40 v #15227 > > //// test
00:14:40 v #15228 > > ///! fsharp
00:14:40 v #15229 > > ///! cuda
00:14:40 v #15230 > > ///! rust
00:14:40 v #15231 > > ///! typescript
00:14:40 v #15232 > > ///! python
00:14:40 v #15233 > >
00:14:40 v #15234 > > ($'-3' : i32) <>.. ($'3' : i32)
00:14:40 v #15235 > > |> _assert_eq true
00:14:48 v #15236 > >
00:14:48 v #15237 > > ── [ 7.56s - return value ] ────────────────────────────────────────────────────
00:14:48 v #15238 > > │ .py output (Cuda):
00:14:48 v #15239 > > │ __assert_eq / actual: True / expected: True
00:14:48 v #15240 > > │
00:14:48 v #15241 > > │ .rs output:
00:14:48 v #15242 > > │ __assert_eq / actual: true / expected: true
00:14:48 v #15243 > > │
00:14:48 v #15244 > > │ .ts output:
00:14:48 v #15245 > > │ __assert_eq / actual: true / expected: true
00:14:48 v #15246 > > │
00:14:48 v #15247 > > │ .py output:
00:14:48 v #15248 > > │ __assert_eq / actual: true / expected: true
00:14:48 v #15249 > > │
00:14:48 v #15250 > > │
00:14:48 v #15251 > >
00:14:48 v #15252 > > ── [ 7.56s - stdout ] ──────────────────────────────────────────────────────────
00:14:48 v #15253 > > │ .fsx output:
00:14:48 v #15254 > > │ __assert_eq / actual: true / expected: true
00:14:48 v #15255 > > │
00:14:48 v #15256 > >
00:14:48 v #15257 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:48 v #15258 > > │ ## composition
00:14:48 v #15259 > >
00:14:48 v #15260 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:48 v #15261 > > │ ### append
00:14:48 v #15262 > >
00:14:48 v #15263 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:48 v #15264 > > prototype append t : t -> t -> t
00:14:48 v #15265 > >
00:14:48 v #15266 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:48 v #15267 > > │ ### (++)
00:14:48 v #15268 > >
00:14:48 v #15269 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:48 v #15270 > > inl (++) a b =
00:14:48 v #15271 > >     b |> append a
00:14:48 v #15272 > >
00:14:48 v #15273 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:48 v #15274 > > │ ## pair
00:14:48 v #15275 > >
00:14:48 v #15276 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:48 v #15277 > > │ ### pair
00:14:48 v #15278 > >
00:14:48 v #15279 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:48 v #15280 > > nominal pair a b = $'(`a * `b)'
00:14:48 v #15281 > >
00:14:48 v #15282 > > inl pair x y =
00:14:48 v #15283 > >     x, y
00:14:48 v #15284 > >
00:14:48 v #15285 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:48 v #15286 > > //// test
00:14:48 v #15287 > > ///! fsharp
00:14:48 v #15288 > > ///! cuda
00:14:48 v #15289 > > ///! rust
00:14:48 v #15290 > > ///! typescript
00:14:48 v #15291 > > ///! python
00:14:48 v #15292 > >
00:14:48 v #15293 > > pair 1i32 2i32
00:14:48 v #15294 > > |> _assert_eq (1, 2)
00:14:55 v #15295 > >
00:14:55 v #15296 > > ── [ 7.33s - return value ] ────────────────────────────────────────────────────
00:14:55 v #15297 > > │ .py output (Cuda):
00:14:55 v #15298 > > │ __assert_eq / actual: (1, 2) / expected: (1, 2)
00:14:55 v #15299 > > │
00:14:55 v #15300 > > │ .rs output:
00:14:55 v #15301 > > │ __assert_eq / actual: (1, 2) / expected: (1, 2)
00:14:55 v #15302 > > │
00:14:55 v #15303 > > │ .ts output:
00:14:55 v #15304 > > │ __assert_eq / actual: 1,2 / expected: 1,2
00:14:55 v #15305 > > │
00:14:55 v #15306 > > │ .py output:
00:14:55 v #15307 > > │ __assert_eq / actual: (1, 2) / expected: (1, 2)
00:14:55 v #15308 > > │
00:14:55 v #15309 > > │
00:14:55 v #15310 > >
00:14:55 v #15311 > > ── [ 7.33s - stdout ] ──────────────────────────────────────────────────────────
00:14:55 v #15312 > > │ .fsx output:
00:14:55 v #15313 > > │ __assert_eq / actual: struct (1, 2) / expected: struct (1, 2)
00:14:55 v #15314 > > │
00:14:55 v #15315 > >
00:14:55 v #15316 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:55 v #15317 > > │ ### new_pair
00:14:55 v #15318 > >
00:14:55 v #15319 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:55 v #15320 > > inl new_pair forall a b. (a : a) (b : b) : pair a b =
00:14:55 v #15321 > >     $'!a, !b '
00:14:56 v #15322 > >
00:14:56 v #15323 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:56 v #15324 > > │ ### from_pair
00:14:56 v #15325 > >
00:14:56 v #15326 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:56 v #15327 > > inl from_pair forall a b. (pair : pair a b) : a * b =
00:14:56 v #15328 > >     backend_switch {
00:14:56 v #15329 > >         Fsharp = fun () =>
00:14:56 v #15330 > >             $'let (a, b) = !pair '
00:14:56 v #15331 > >             ($'a' : a), ($'b' : b)
00:14:56 v #15332 > >         Python = fun () =>
00:14:56 v #15333 > >             $'a, b = !pair '
00:14:56 v #15334 > >             ($'a' : a), ($'b' : b)
00:14:56 v #15335 > >     }
00:14:56 v #15336 > >
00:14:56 v #15337 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:56 v #15338 > > //// test
00:14:56 v #15339 > > ///! fsharp
00:14:56 v #15340 > > ///! cuda
00:14:56 v #15341 > > ///! rust
00:14:56 v #15342 > > ///! typescript
00:14:56 v #15343 > > ///! python
00:14:56 v #15344 > >
00:14:56 v #15345 > > new_pair "a" (new_pair 1i32 "b")
00:14:56 v #15346 > > |> from_pair
00:14:56 v #15347 > > |> _assert_eq' ("a", (new_pair 1i32 "b"))
00:15:04 v #15348 > >
00:15:04 v #15349 > > ── [ 7.87s - return value ] ────────────────────────────────────────────────────
00:15:04 v #15350 > > │ .py output (Cuda):
00:15:04 v #15351 > > │ __assert_eq' / actual: ('a', (1, 'b')) / expected: ('a', (1,
00:15:04 v #15352 > > 'b'))
00:15:04 v #15353 > > │
00:15:04 v #15354 > > │ .rs output:
00:15:04 v #15355 > > │ __assert_eq' / actual: ("a", (1, "b")) / expected: ("a", (1,
00:15:04 v #15356 > > "b"))
00:15:04 v #15357 > > │
00:15:04 v #15358 > > │ .ts output:
00:15:04 v #15359 > > │ __assert_eq' / actual: a,1,b / expected: a,1,b
00:15:04 v #15360 > > │
00:15:04 v #15361 > > │ .py output:
00:15:04 v #15362 > > │ __assert_eq' / actual: ('a', (1, 'b')) / expected: ('a', (1,
00:15:04 v #15363 > > 'b'))
00:15:04 v #15364 > > │
00:15:04 v #15365 > > │
00:15:04 v #15366 > >
00:15:04 v #15367 > > ── [ 7.87s - stdout ] ──────────────────────────────────────────────────────────
00:15:04 v #15368 > > │ .fsx output:
00:15:04 v #15369 > > │ __assert_eq' / actual: struct ("a", (1, "b")) / expected:
00:15:04 v #15370 > > struct ("a", (1, "b"))
00:15:04 v #15371 > > │
00:15:04 v #15372 > >
00:15:04 v #15373 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:04 v #15374 > > │ ## application
00:15:04 v #15375 > >
00:15:04 v #15376 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:04 v #15377 > > │ ### (||>)
00:15:04 v #15378 > >
00:15:04 v #15379 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:04 v #15380 > > inl (||>) (arg1, arg2) fn =
00:15:04 v #15381 > >     arg2 |> fn arg1
00:15:04 v #15382 > >
00:15:04 v #15383 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:04 v #15384 > > │ ### (||>)
00:15:04 v #15385 > >
00:15:04 v #15386 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:04 v #15387 > > //// test
00:15:04 v #15388 > > ///! fsharp
00:15:04 v #15389 > > ///! cuda
00:15:04 v #15390 > > ///! rust
00:15:04 v #15391 > > ///! typescript
00:15:04 v #15392 > > ///! python
00:15:04 v #15393 > >
00:15:04 v #15394 > > (3i32, 2i32)
00:15:04 v #15395 > > ||> fun a b => a - b
00:15:04 v #15396 > > |> _assert_eq 1
00:15:11 v #15397 > >
00:15:11 v #15398 > > ── [ 7.28s - return value ] ────────────────────────────────────────────────────
00:15:11 v #15399 > > │ .py output (Cuda):
00:15:11 v #15400 > > │ __assert_eq / actual: 1 / expected: 1
00:15:11 v #15401 > > │
00:15:11 v #15402 > > │ .rs output:
00:15:11 v #15403 > > │ __assert_eq / actual: 1 / expected: 1
00:15:11 v #15404 > > │
00:15:11 v #15405 > > │ .ts output:
00:15:11 v #15406 > > │ __assert_eq / actual: 1 / expected: 1
00:15:11 v #15407 > > │
00:15:11 v #15408 > > │ .py output:
00:15:11 v #15409 > > │ __assert_eq / actual: 1 / expected: 1
00:15:11 v #15410 > > │
00:15:11 v #15411 > > │
00:15:11 v #15412 > >
00:15:11 v #15413 > > ── [ 7.28s - stdout ] ──────────────────────────────────────────────────────────
00:15:11 v #15414 > > │ .fsx output:
00:15:11 v #15415 > > │ __assert_eq / actual: 1 / expected: 1
00:15:11 v #15416 > > │
00:15:11 v #15417 > >
00:15:11 v #15418 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:11 v #15419 > > //// test
00:15:11 v #15420 > > ///! fsharp
00:15:11 v #15421 > > ///! cuda
00:15:11 v #15422 > > ///! rust
00:15:11 v #15423 > > ///! typescript
00:15:11 v #15424 > > ///! python
00:15:11 v #15425 > >
00:15:11 v #15426 > > (1i32, 2i32)
00:15:11 v #15427 > > ||> flip pair
00:15:11 v #15428 > > |> _assert_eq (2, 1)
00:15:18 v #15429 > >
00:15:18 v #15430 > > ── [ 7.20s - return value ] ────────────────────────────────────────────────────
00:15:18 v #15431 > > │ .py output (Cuda):
00:15:18 v #15432 > > │ __assert_eq / actual: (2, 1) / expected: (2, 1)
00:15:18 v #15433 > > │
00:15:18 v #15434 > > │ .rs output:
00:15:18 v #15435 > > │ __assert_eq / actual: (2, 1) / expected: (2, 1)
00:15:18 v #15436 > > │
00:15:18 v #15437 > > │ .ts output:
00:15:18 v #15438 > > │ __assert_eq / actual: 2,1 / expected: 2,1
00:15:18 v #15439 > > │
00:15:18 v #15440 > > │ .py output:
00:15:18 v #15441 > > │ __assert_eq / actual: (2, 1) / expected: (2, 1)
00:15:18 v #15442 > > │
00:15:18 v #15443 > > │
00:15:18 v #15444 > >
00:15:18 v #15445 > > ── [ 7.20s - stdout ] ──────────────────────────────────────────────────────────
00:15:18 v #15446 > > │ .fsx output:
00:15:18 v #15447 > > │ __assert_eq / actual: struct (2, 1) / expected: struct (2, 1)
00:15:18 v #15448 > > │
00:15:18 v #15449 > >
00:15:18 v #15450 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:18 v #15451 > > │ ### fix_condition
00:15:18 v #15452 > >
00:15:18 v #15453 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:18 v #15454 > > inl fix_condition x a b =
00:15:18 v #15455 > >     if x ()
00:15:18 v #15456 > >     then a () |> fun x => $'(* fix_condition then' : ()
00:15:18 v #15457 > >     else
00:15:18 v #15458 > >         $'fix_condition then *) else' : ()
00:15:18 v #15459 > >         b () |> fun x => $'(* fix_condition else' : ()
00:15:18 v #15460 > >     |> fun x => $'fix_condition else *)' : ()
00:15:18 v #15461 > >
00:15:18 v #15462 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:18 v #15463 > > │ ## type
00:15:18 v #15464 > >
00:15:18 v #15465 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:18 v #15466 > > │ ### infer
00:15:18 v #15467 > >
00:15:18 v #15468 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:18 v #15469 > > nominal infer = $'_'
00:15:19 v #15470 > >
00:15:19 v #15471 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:19 v #15472 > > │ ### infer'
00:15:19 v #15473 > >
00:15:19 v #15474 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:19 v #15475 > > nominal infer' t = $'_'
00:15:19 v #15476 > >
00:15:19 v #15477 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:19 v #15478 > > │ ### any
00:15:19 v #15479 > >
00:15:19 v #15480 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:19 v #15481 > > nominal any = $'obj'
00:15:19 v #15482 > >
00:15:19 v #15483 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:19 v #15484 > > │ ### null
00:15:19 v #15485 > >
00:15:19 v #15486 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:19 v #15487 > > inl null forall t. () : t =
00:15:19 v #15488 > >     backend_switch {
00:15:19 v #15489 > >         Fsharp = fun () => $'null |> unbox<`t>' : t
00:15:19 v #15490 > >         Python = fun () => $'None' : t
00:15:19 v #15491 > >     }
00:15:19 v #15492 > >
00:15:19 v #15493 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:19 v #15494 > > │ ### defaultof
00:15:19 v #15495 > >
00:15:19 v #15496 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:19 v #15497 > > inl defaultof forall t. () : t =
00:15:19 v #15498 > >     $'Unchecked.defaultof<`t>'
00:15:19 v #15499 > >
00:15:19 v #15500 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:19 v #15501 > > │ ### choice2'
00:15:19 v #15502 > >
00:15:19 v #15503 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:19 v #15504 > > nominal choice2' a b = $'Choice<`a, `b>'
00:15:19 v #15505 > >
00:15:19 v #15506 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:19 v #15507 > > │ ### choice2_unbox
00:15:19 v #15508 > >
00:15:19 v #15509 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:19 v #15510 > > inl choice2_unbox forall t1 t2. (choice : choice2' t1 t2) : choice2 t1 t2 =
00:15:19 v #15511 > >     run_target_args (fun () => choice) function
00:15:19 v #15512 > >         | Fsharp _ => fun choice =>
00:15:19 v #15513 > >             inl c1of2 (x : t1) : _ _ t2 = C1of2 x
00:15:19 v #15514 > >             inl c2of2 (x : t2) : _ t1 _ = C2of2 x
00:15:19 v #15515 > >             inl c1of2 = join c1of2
00:15:19 v #15516 > >             inl c2of2 = join c2of2
00:15:19 v #15517 > >             $'match !choice with Choice1Of2 x -> !c1of2 x | Choice2Of2 x ->
00:15:19 v #15518 > > !c2of2 x'
00:15:19 v #15519 > >         | _ => fun _ => null ()
00:15:19 v #15520 > >
00:15:19 v #15521 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:19 v #15522 > > │ ## ref
00:15:19 v #15523 > >
00:15:19 v #15524 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:19 v #15525 > > │ ### ref
00:15:19 v #15526 > >
00:15:19 v #15527 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:19 v #15528 > > nominal ref t = $'`t ref'
00:15:20 v #15529 > >
00:15:20 v #15530 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:20 v #15531 > > │ ### new_ref
00:15:20 v #15532 > >
00:15:20 v #15533 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:20 v #15534 > > inl new_ref forall t. (x : t) : ref t =
00:15:20 v #15535 > >     $'ref !x '
00:15:20 v #15536 > >
00:15:20 v #15537 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:20 v #15538 > > │ ### ref_value
00:15:20 v #15539 > >
00:15:20 v #15540 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:20 v #15541 > > inl ref_value forall t. (x : ref t) : t =
00:15:20 v #15542 > >     $'!x.Value'
00:15:20 v #15543 > >
00:15:20 v #15544 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:20 v #15545 > > │ ### ref_set_value
00:15:20 v #15546 > >
00:15:20 v #15547 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:20 v #15548 > > inl ref_set_value forall t. (value : t) (ref : ref t) : ref t =
00:15:20 v #15549 > >     $'!ref.Value <- !value '
00:15:20 v #15550 > >     ref
00:15:20 v #15551 > >
00:15:20 v #15552 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:20 v #15553 > > │ ## convert
00:15:20 v #15554 > >
00:15:20 v #15555 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:20 v #15556 > > │ ### to
00:15:20 v #15557 > >
00:15:20 v #15558 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:20 v #15559 > > inl to forall t u. (x : t) : u =
00:15:20 v #15560 > >     $'!x ' : u
00:15:20 v #15561 > >
00:15:20 v #15562 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:20 v #15563 > > │ ### convert
00:15:20 v #15564 > >
00:15:20 v #15565 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:20 v #15566 > > inl convert forall t u. (x : t) : u =
00:15:20 v #15567 > >     backend_switch {
00:15:20 v #15568 > >         Fsharp = fun () => $'!x |> `u ' : u
00:15:20 v #15569 > >         Python = fun () => $'`u(!x)' : u
00:15:20 v #15570 > >     }
00:15:20 v #15571 > >
00:15:20 v #15572 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:20 v #15573 > > │ ### unbox
00:15:20 v #15574 > >
00:15:20 v #15575 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:20 v #15576 > > inl unbox forall t u. (x : t) : u =
00:15:20 v #15577 > >     backend_switch {
00:15:20 v #15578 > >         Fsharp = fun () => $'!x |> unbox<`u>' : u
00:15:20 v #15579 > >         Python = fun () => x |> to : u
00:15:20 v #15580 > >     }
00:15:21 v #15581 > >
00:15:21 v #15582 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:21 v #15583 > > │ ### u8
00:15:21 v #15584 > >
00:15:21 v #15585 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:21 v #15586 > > inl u8 forall t. (x : t) : u8 =
00:15:21 v #15587 > >     backend_switch {
00:15:21 v #15588 > >         Fsharp = fun () => x |> $'uint8' : u8
00:15:21 v #15589 > >         Python = fun () => x |> to : u8
00:15:21 v #15590 > >     }
00:15:21 v #15591 > >
00:15:21 v #15592 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:21 v #15593 > > │ ### u16
00:15:21 v #15594 > >
00:15:21 v #15595 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:21 v #15596 > > inl u16 forall t. (x : t) : u16 =
00:15:21 v #15597 > >     backend_switch {
00:15:21 v #15598 > >         Fsharp = fun () => x |> $'uint16' : u16
00:15:21 v #15599 > >         Python = fun () => $'!x & 0xFFFF' : u16
00:15:21 v #15600 > >     }
00:15:21 v #15601 > >
00:15:21 v #15602 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:21 v #15603 > > │ ### u64
00:15:21 v #15604 > >
00:15:21 v #15605 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:21 v #15606 > > inl u64 forall t. (x : t) : u64 =
00:15:21 v #15607 > >     backend_switch {
00:15:21 v #15608 > >         Fsharp = fun () => x |> $'uint64' : u64
00:15:21 v #15609 > >         Python = fun () => x |> to : u64
00:15:21 v #15610 > >     }
00:15:21 v #15611 > >
00:15:21 v #15612 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:21 v #15613 > > │ ### i32
00:15:21 v #15614 > >
00:15:21 v #15615 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:21 v #15616 > > inl i32 forall t. (x : t) : i32 =
00:15:21 v #15617 > >     backend_switch {
00:15:21 v #15618 > >         Fsharp = fun () => x |> convert : i32
00:15:21 v #15619 > >         Python = fun () => x |> convert : i32
00:15:21 v #15620 > >     }
00:15:21 v #15621 > >
00:15:21 v #15622 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:21 v #15623 > > │ ### i64
00:15:21 v #15624 > >
00:15:21 v #15625 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:21 v #15626 > > inl i64 forall t. (x : t) : i64 =
00:15:21 v #15627 > >     backend_switch {
00:15:21 v #15628 > >         Fsharp = fun () => x |> $'int64' : i64
00:15:21 v #15629 > >         Python = fun () => x |> to : i64
00:15:21 v #15630 > >     }
00:15:21 v #15631 > >
00:15:21 v #15632 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:21 v #15633 > > │ ### f32
00:15:21 v #15634 > >
00:15:21 v #15635 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:21 v #15636 > > inl f32 forall t. (x : t) : f32 =
00:15:21 v #15637 > >     backend_switch {
00:15:21 v #15638 > >         Fsharp = fun () => x |> $'float32' : f32
00:15:21 v #15639 > >         Python = fun () => x |> to : f32
00:15:21 v #15640 > >     }
00:15:21 v #15641 > >
00:15:21 v #15642 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:21 v #15643 > > │ ### f64
00:15:21 v #15644 > >
00:15:21 v #15645 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:21 v #15646 > > inl f64 forall t. (x : t) : f64 =
00:15:21 v #15647 > >     backend_switch {
00:15:21 v #15648 > >         Fsharp = fun () => x |> $'float' : f64
00:15:21 v #15649 > >         Python = fun () => x |> to : f64
00:15:21 v #15650 > >     }
00:15:22 v #15651 > >
00:15:22 v #15652 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:22 v #15653 > > │ ### unativeint
00:15:22 v #15654 > >
00:15:22 v #15655 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:22 v #15656 > > nominal unativeint = $'unativeint'
00:15:22 v #15657 > >
00:15:22 v #15658 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:22 v #15659 > > │ ### convert_i32
00:15:22 v #15660 > >
00:15:22 v #15661 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:22 v #15662 > > inl convert_i32 forall t. (x : t) : i32 =
00:15:22 v #15663 > >     backend_switch {
00:15:22 v #15664 > >         Fsharp = fun () => x |> $'System.Convert.ToInt32' : i32
00:15:22 v #15665 > >         Python = fun () => x |> to : i32
00:15:22 v #15666 > >     }
00:15:22 v #15667 > >
00:15:22 v #15668 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:22 v #15669 > > │ ### convert_i32_base
00:15:22 v #15670 > >
00:15:22 v #15671 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:22 v #15672 > > inl convert_i32_base forall t. (base : i32) (x : t) : i32 =
00:15:22 v #15673 > >     backend_switch {
00:15:22 v #15674 > >         Fsharp = fun () => $'System.Convert.ToInt32 (!x, !base)' : i32
00:15:22 v #15675 > >         Python = fun () => $'int (!x, !base)' : i32
00:15:22 v #15676 > >     }
00:15:22 v #15677 > >
00:15:22 v #15678 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:22 v #15679 > > │ ### (:>)
00:15:22 v #15680 > >
00:15:22 v #15681 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:22 v #15682 > > prototype (~:>) r : forall t. t -> r
00:15:22 v #15683 > >
00:15:22 v #15684 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:22 v #15685 > > │ ### to_any
00:15:22 v #15686 > >
00:15:22 v #15687 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:22 v #15688 > > inl to_any forall t. (obj : t) : any =
00:15:22 v #15689 > >     obj |> to
00:15:22 v #15690 > >
00:15:22 v #15691 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:22 v #15692 > > │ ### (~:>) any
00:15:22 v #15693 > >
00:15:22 v #15694 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:22 v #15695 > > instance (~:>) any = to_any
00:15:23 v #15696 > >
00:15:23 v #15697 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:23 v #15698 > > │ ## error
00:15:23 v #15699 > >
00:15:23 v #15700 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:23 v #15701 > > │ ### exn
00:15:23 v #15702 > >
00:15:23 v #15703 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:23 v #15704 > > nominal exn = $"backend_switch `({ Fsharp : $'exn'; Python : $'BaseException'
00:15:23 v #15705 > > })"
00:15:23 v #15706 > >
00:15:23 v #15707 > > inl exn x =
00:15:23 v #15708 > >     x |> $'`exn '
00:15:23 v #15709 > >
00:15:23 v #15710 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:23 v #15711 > > │ ### try
00:15:23 v #15712 > >
00:15:23 v #15713 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:23 v #15714 > > inl try forall t. (fn : () -> t) (ex_fn : exn -> option t) : option t =
00:15:23 v #15715 > >     inl some x : option t = Some x
00:15:23 v #15716 > >     inl some = dyn some
00:15:23 v #15717 > >     inl fn = dyn fn
00:15:23 v #15718 > >     inl ex_fn = dyn ex_fn
00:15:23 v #15719 > >     backend_switch {
00:15:23 v #15720 > >         Fsharp = fun () =>
00:15:23 v #15721 > >             $'let result = ref !(None : option t)'
00:15:23 v #15722 > >             $'try'
00:15:23 v #15723 > >             $'    result.Value <- !fn () |> !some '
00:15:23 v #15724 > >             $'with ex ->'
00:15:23 v #15725 > >             $'    result.Value <- !ex_fn ex '
00:15:23 v #15726 > >             $'result.Value' : option t
00:15:23 v #15727 > >         Python = fun () =>
00:15:23 v #15728 > >             $'result = !(None : option t)'
00:15:23 v #15729 > >             inl fn = dyn fn
00:15:23 v #15730 > >             inl ex_fn = dyn ex_fn
00:15:23 v #15731 > >             $'try:'
00:15:23 v #15732 > >             $'    result = !some(!fn())\n        \'\'\''
00:15:23 v #15733 > >             $'\'\'\''
00:15:23 v #15734 > >             $'except Exception as e:'
00:15:23 v #15735 > >             $'    result = !ex_fn(e)'
00:15:23 v #15736 > >             $'result' : option t
00:15:23 v #15737 > >     }
00:15:23 v #15738 > >
00:15:23 v #15739 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:23 v #15740 > > //// test
00:15:23 v #15741 > > ///! fsharp
00:15:23 v #15742 > > ///! cuda
00:15:23 v #15743 > > ///! rust
00:15:23 v #15744 > > ///! typescript
00:15:23 v #15745 > > ///! python
00:15:23 v #15746 > >
00:15:23 v #15747 > > try
00:15:23 v #15748 > >     fun () => a ;[[ 0i32 ]] |> am'.index 1i32 |> sm'.format
00:15:23 v #15749 > >     (fun ex => $'!ex ' |> sm'.format_exception |> Some)
00:15:23 v #15750 > > |> optionm.value
00:15:23 v #15751 > > |> _assert_eq (run_target function
00:15:23 v #15752 > >     | Fsharp => fun () => join "System.IndexOutOfRangeException: Index was
00:15:23 v #15753 > > outside the bounds of the array."
00:15:23 v #15754 > >     | Cuda => fun () => "index 1 is out of bounds for axis 0 with size 1"
00:15:23 v #15755 > >     | Rust => fun () => "Exception { message: \"index out of bounds: the len is
00:15:23 v #15756 > > 1 but the index is 1\" }"
00:15:23 v #15757 > >     | TypeScript => fun () => "Error: Index was outside the bounds of the
00:15:23 v #15758 > > array.\\nParameter name: index"
00:15:23 v #15759 > >     | Python => fun () => "array index out of range"
00:15:23 v #15760 > > )
00:15:31 v #15761 > >
00:15:31 v #15762 > > ── [ 8.00s - return value ] ────────────────────────────────────────────────────
00:15:31 v #15763 > > │ .py output (Cuda):
00:15:31 v #15764 > > │ __assert_eq / actual: index 1 is out of bounds for axis 0
00:15:31 v #15765 > > with size 1 / expected: index 1 is out of bounds for axis 0 with size 1
00:15:31 v #15766 > > │
00:15:31 v #15767 > > │ .rs output:
00:15:31 v #15768 > > │ __assert_eq / actual: "Exception { message: "index out of
00:15:31 v #15769 > > bounds: the len is 1 but the index is 1" }" / expected: "Exception { message:
00:15:31 v #15770 > > "index out of bounds: the len is 1 but the index is 1" }"
00:15:31 v #15771 > > │
00:15:31 v #15772 > > │ .ts output:
00:15:31 v #15773 > > │ __assert_eq / actual: Error: Index was outside the bounds of
00:15:31 v #15774 > > the array.\nParameter name: index / expected: Error: Index was outside the
00:15:31 v #15775 > > bounds of the array.\nParameter name: index
00:15:31 v #15776 > > │
00:15:31 v #15777 > > │ .py output:
00:15:31 v #15778 > > │ __assert_eq / actual: array index out of range / expected:
00:15:31 v #15779 > > array index out of range
00:15:31 v #15780 > > │
00:15:31 v #15781 > > │
00:15:31 v #15782 > >
00:15:31 v #15783 > > ── [ 8.00s - stdout ] ──────────────────────────────────────────────────────────
00:15:31 v #15784 > > │ .fsx output:
00:15:31 v #15785 > > │ __assert_eq / actual: "System.IndexOutOfRangeException: Index
00:15:31 v #15786 > > was outside the bounds of the array." / expected:
00:15:31 v #15787 > > "System.IndexOutOfRangeException: Index was outside the bounds of the array."
00:15:31 v #15788 > > │
00:15:31 v #15789 > >
00:15:31 v #15790 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:31 v #15791 > > │ ### try_unit
00:15:31 v #15792 > >
00:15:31 v #15793 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:31 v #15794 > > inl try_unit forall t. (fn : () -> ()) (ex_fn : (() -> exn) -> ()) : t =
00:15:31 v #15795 > >     backend_switch {
00:15:31 v #15796 > >         Fsharp = fun () => $'try' : ()
00:15:31 v #15797 > >         Python = fun () => $'try:' : ()
00:15:31 v #15798 > >     }
00:15:31 v #15799 > >     fn |> indent
00:15:31 v #15800 > >     backend_switch {
00:15:31 v #15801 > >         Fsharp = fun () => $'with ex ->' : ()
00:15:31 v #15802 > >         Python = fun () => $'except Exception as ex:' : ()
00:15:31 v #15803 > >     }
00:15:31 v #15804 > >     fun () =>
00:15:31 v #15805 > >         inl ex = $'ex'
00:15:31 v #15806 > >         inl ex () =
00:15:31 v #15807 > >             ex
00:15:31 v #15808 > >         ex_fn ex
00:15:31 v #15809 > >     |> indent
00:15:31 v #15810 > >     backend_switch {
00:15:31 v #15811 > >         Fsharp = fun () =>
00:15:31 v #15812 > >             $'(* try_unit'
00:15:31 v #15813 > >             $'try_unit *)' : t
00:15:31 v #15814 > >         Python = fun () => $'' : t
00:15:31 v #15815 > >     }
00:15:31 v #15816 > >
00:15:31 v #15817 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:31 v #15818 > > │ ### try_unit'
00:15:31 v #15819 > >
00:15:31 v #15820 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:31 v #15821 > > inl try_unit' forall t. (ex_fn : (() -> exn) -> ()) (fn : () -> ()) : t =
00:15:31 v #15822 > >     try_unit fn ex_fn
00:15:31 v #15823 > >
00:15:31 v #15824 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:31 v #15825 > > │ ### try_finally
00:15:31 v #15826 > >
00:15:31 v #15827 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:31 v #15828 > > inl try_finally forall t. (fn : () -> ()) (finally : () -> ()) : t =
00:15:31 v #15829 > >     backend_switch {
00:15:31 v #15830 > >         Fsharp = fun () => $'try' : ()
00:15:31 v #15831 > >         Python = fun () => $'try:' : ()
00:15:31 v #15832 > >     }
00:15:31 v #15833 > >     fn |> indent
00:15:31 v #15834 > >     backend_switch {
00:15:31 v #15835 > >         Fsharp = fun () => $'finally' : ()
00:15:31 v #15836 > >         Python = fun () => $'finally:' : ()
00:15:31 v #15837 > >     }
00:15:31 v #15838 > >     finally |> indent
00:15:31 v #15839 > >     backend_switch {
00:15:31 v #15840 > >         Fsharp = fun () =>
00:15:31 v #15841 > >             $'(* try_finally'
00:15:31 v #15842 > >             $'try_finally *)'
00:15:31 v #15843 > >             ()
00:15:31 v #15844 > >         Python = fun () => ()
00:15:31 v #15845 > >     }
00:15:31 v #15846 > 00:02:25 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 87814 }
00:15:31 v #15847 > 00:02:25 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/base.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/base.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:15:32 v #15848 > 00:02:26 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/base.dib.ipynb to html
00:15:32 v #15849 > 00:02:26 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:15:32 v #15850 > 00:02:26 v #7 !   validate(nb)
00:15:33 v #15851 > 00:02:26 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:15:33 v #15852 > 00:02:26 v #9 !   return _pygments_highlight(
00:15:33 v #15853 > 00:02:27 v #10 ! [NbConvertApp] Writing 479171 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/base.dib.html
00:15:33 v #15854 > 00:02:27 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 892 }
00:15:33 v #15855 > 00:02:27 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 892 }
00:15:33 v #15856 > 00:02:27 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/base.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/base.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:15:34 v #15857 > 00:02:27 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:15:34 v #15858 > 00:02:27 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:15:34 v #15859 > 00:02:27 d #16 spiral.run / dib / { exit_code = 0; result_length = 88765 }
00:15:34 d #15860 runtime.execute_with_options_async / { exit_code = 0; output_length = 95796 }
00:15:34 d #19 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path base.dib --retries 3
00:15:34 d #15861 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path date_time.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path date_time.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:15:34 v #15862 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "date_time.dib", "--retries", "3"])) }
00:15:34 v #15863 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/date_time.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/date_time.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/date_time.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/date_time.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:15:35 v #15864 > >
00:15:35 v #15865 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:35 v #15866 > > │ # date_time
00:15:37 v #15867 > >
00:15:37 v #15868 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:37 v #15869 > > open rust.rust_operators
00:15:37 v #15870 > > open sm'_operators
00:15:38 v #15871 > >
00:15:38 v #15872 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:38 v #15873 > > //// test
00:15:38 v #15874 > >
00:15:38 v #15875 > > open testing
00:15:38 v #15876 > >
00:15:38 v #15877 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:38 v #15878 > > │ ## date_time
00:15:38 v #15879 > >
00:15:38 v #15880 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:38 v #15881 > > │ ### timestamp
00:15:38 v #15882 > >
00:15:38 v #15883 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:38 v #15884 > > nominal timestamp_python =
00:15:38 v #15885 > >     `(
00:15:38 v #15886 > >         backend_switch `(()) `({}) {
00:15:38 v #15887 > >             Python = (fun () => global "import datetime") : () -> ()
00:15:38 v #15888 > >         }
00:15:38 v #15889 > >         $'' : i64
00:15:38 v #15890 > >     )
00:15:38 v #15891 > > type timestamp_switch =
00:15:38 v #15892 > >     {
00:15:38 v #15893 > >         Fsharp : i64
00:15:38 v #15894 > >         Python : timestamp_python
00:15:38 v #15895 > >     }
00:15:38 v #15896 > > nominal timestamp = $'backend_switch `(timestamp_switch)'
00:15:38 v #15897 > >
00:15:38 v #15898 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:38 v #15899 > > │ ### timestamp_guid
00:15:38 v #15900 > >
00:15:38 v #15901 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:38 v #15902 > > type timestamp_guid = guid.guid
00:15:38 v #15903 > >
00:15:38 v #15904 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:38 v #15905 > > │ ### date_time_guid
00:15:38 v #15906 > >
00:15:38 v #15907 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:38 v #15908 > > type date_time_guid = guid.guid
00:15:38 v #15909 > >
00:15:38 v #15910 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:38 v #15911 > > │ ### test_guid
00:15:38 v #15912 > >
00:15:38 v #15913 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:38 v #15914 > > //// test
00:15:38 v #15915 > >
00:15:38 v #15916 > > inl test_guid () =
00:15:38 v #15917 > >     "6543210F-EDCB-A987-6543-210FEDCBA987" |> guid.new_guid
00:15:39 v #15918 > >
00:15:39 v #15919 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:39 v #15920 > > │ ## fsharp
00:15:39 v #15921 > >
00:15:39 v #15922 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:39 v #15923 > > │ ### date_time
00:15:39 v #15924 > >
00:15:39 v #15925 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:39 v #15926 > > nominal date_time_python =
00:15:39 v #15927 > >     `(
00:15:39 v #15928 > >         backend_switch `(()) `({}) {
00:15:39 v #15929 > >             Python = (fun () => global "import datetime") : () -> ()
00:15:39 v #15930 > >         }
00:15:39 v #15931 > >         $'' : $'datetime.datetime'
00:15:39 v #15932 > >     )
00:15:39 v #15933 > > type date_time_switch =
00:15:39 v #15934 > >     {
00:15:39 v #15935 > >         Fsharp : $'System.DateTime'
00:15:39 v #15936 > >         Python : date_time_python
00:15:39 v #15937 > >     }
00:15:39 v #15938 > > nominal date_time = $'backend_switch `(date_time_switch)'
00:15:39 v #15939 > >
00:15:39 v #15940 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:39 v #15941 > > │ ### year
00:15:39 v #15942 > >
00:15:39 v #15943 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:39 v #15944 > > inl year (date_time : date_time) : i32 =
00:15:39 v #15945 > >     backend_switch {
00:15:39 v #15946 > >         Fsharp = fun () => date_time |> $'_.Year' : i32
00:15:39 v #15947 > >         Python = fun () => $'!date_time.year' : i32
00:15:39 v #15948 > >     }
00:15:39 v #15949 > >
00:15:39 v #15950 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:39 v #15951 > > │ ### format
00:15:39 v #15952 > >
00:15:39 v #15953 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:39 v #15954 > > inl format (format : string) (date_time : date_time) : string =
00:15:39 v #15955 > >     backend_switch {
00:15:39 v #15956 > >         Fsharp = fun () =>
00:15:39 v #15957 > >             inl format =
00:15:39 v #15958 > >                 if format = ""
00:15:39 v #15959 > >                 then "M-d-y hh:mm:ss tt"
00:15:39 v #15960 > >                 else format
00:15:39 v #15961 > >             $'!date_time.ToString' format : string
00:15:39 v #15962 > >         Python = fun () =>
00:15:39 v #15963 > >             inl date_time = join date_time
00:15:39 v #15964 > >             if format <> ""
00:15:39 v #15965 > >             then $'!date_time.strftime(!format)' : string
00:15:39 v #15966 > >             elif year date_time < 1000
00:15:39 v #15967 > >             then $'\'{dt.month}-{dt.day}-{dt.year} {dt:%I}:{dt:%M}:{dt:%S}
00:15:39 v #15968 > > {dt:%p}\'.format(dt=!date_time)' : string
00:15:39 v #15969 > >             else $'\'{dt.month}-{dt.day}-{dt:%y} {dt:%I}:{dt:%M}:{dt:%S}
00:15:39 v #15970 > > {dt:%p}\'.format(dt=!date_time)' : string
00:15:39 v #15971 > >     }
00:15:39 v #15972 > >
00:15:39 v #15973 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:39 v #15974 > > │ ### format_iso8601
00:15:39 v #15975 > >
00:15:39 v #15976 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:39 v #15977 > > inl format_iso8601 (date_time : date_time) : string =
00:15:39 v #15978 > >     backend_switch {
00:15:39 v #15979 > >         Fsharp = fun () => date_time |> format "yyyy-MM-ddTHH-mm-ss.fff" :
00:15:39 v #15980 > > string
00:15:39 v #15981 > >         Python = fun () => date_time |> format "%Y-%m-%dT%H-%M-%S.%f" : string
00:15:39 v #15982 > >     }
00:15:39 v #15983 > >
00:15:39 v #15984 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:39 v #15985 > > │ ### min_value
00:15:39 v #15986 > >
00:15:39 v #15987 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:39 v #15988 > > inl min_value () : date_time =
00:15:39 v #15989 > >     backend_switch {
00:15:39 v #15990 > >         Fsharp = fun () => $'System.DateTime.MinValue' : date_time
00:15:39 v #15991 > >         Python = fun () => $'datetime.datetime.min' : date_time
00:15:39 v #15992 > >     }
00:15:39 v #15993 > >
00:15:39 v #15994 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:39 v #15995 > > //// test
00:15:39 v #15996 > > ///! fsharp
00:15:39 v #15997 > > ///! cuda
00:15:39 v #15998 > >
00:15:39 v #15999 > > min_value ()
00:15:39 v #16000 > > |> format ""
00:15:39 v #16001 > > |> _assert_eq "1-1-1 12:00:00 AM"
00:15:41 v #16002 > >
00:15:41 v #16003 > > ── [ 1.10s - return value ] ────────────────────────────────────────────────────
00:15:41 v #16004 > > │ .py output (Cuda):
00:15:41 v #16005 > > │ __assert_eq / actual: 1-1-1 12:00:00 AM / expected: 1-1-1
00:15:41 v #16006 > > 12:00:00 AM
00:15:41 v #16007 > > │
00:15:41 v #16008 > > │
00:15:41 v #16009 > >
00:15:41 v #16010 > > ── [ 1.11s - stdout ] ──────────────────────────────────────────────────────────
00:15:41 v #16011 > > │ .fsx output:
00:15:41 v #16012 > > │ __assert_eq / actual: "1-1-1 12:00:00 AM" / expected: "1-1-1
00:15:41 v #16013 > > 12:00:00 AM"
00:15:41 v #16014 > > │
00:15:41 v #16015 > >
00:15:41 v #16016 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:41 v #16017 > > │ ### max_value
00:15:41 v #16018 > >
00:15:41 v #16019 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:41 v #16020 > > inl max_value () : date_time =
00:15:41 v #16021 > >     backend_switch {
00:15:41 v #16022 > >         Fsharp = fun () => $'System.DateTime.MaxValue' : date_time
00:15:41 v #16023 > >         Python = fun () => $'datetime.datetime.max' : date_time
00:15:41 v #16024 > >     }
00:15:41 v #16025 > >
00:15:41 v #16026 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:41 v #16027 > > //// test
00:15:41 v #16028 > > ///! fsharp
00:15:41 v #16029 > > ///! cuda
00:15:41 v #16030 > >
00:15:41 v #16031 > > max_value ()
00:15:41 v #16032 > > |> format ""
00:15:41 v #16033 > > |> _assert_eq "12-31-99 11:59:59 PM"
00:15:41 v #16034 > >
00:15:41 v #16035 > > ── [ 572.89ms - return value ] ─────────────────────────────────────────────────
00:15:41 v #16036 > > │ .py output (Cuda):
00:15:41 v #16037 > > │ __assert_eq / actual: 12-31-99 11:59:59 PM / expected:
00:15:41 v #16038 > > 12-31-99 11:59:59 PM
00:15:41 v #16039 > > │
00:15:41 v #16040 > > │
00:15:41 v #16041 > >
00:15:41 v #16042 > > ── [ 573.36ms - stdout ] ───────────────────────────────────────────────────────
00:15:41 v #16043 > > │ .fsx output:
00:15:41 v #16044 > > │ __assert_eq / actual: "12-31-99 11:59:59 PM" / expected:
00:15:41 v #16045 > > "12-31-99 11:59:59 PM"
00:15:41 v #16046 > > │
00:15:41 v #16047 > >
00:15:41 v #16048 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:41 v #16049 > > │ ### unix_epoch
00:15:41 v #16050 > >
00:15:41 v #16051 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:41 v #16052 > > inl unix_epoch () : date_time =
00:15:41 v #16053 > >     backend_switch {
00:15:41 v #16054 > >         Fsharp = fun () => $'System.DateTime.UnixEpoch' : date_time
00:15:41 v #16055 > >         Python = fun () => $'datetime.datetime(1970, 1, 1)' : date_time
00:15:41 v #16056 > >     }
00:15:41 v #16057 > >
00:15:41 v #16058 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:41 v #16059 > > //// test
00:15:41 v #16060 > > ///! fsharp
00:15:41 v #16061 > > ///! cuda
00:15:41 v #16062 > >
00:15:41 v #16063 > > unix_epoch ()
00:15:41 v #16064 > > |> format ""
00:15:41 v #16065 > > |> _assert_eq "1-1-70 12:00:00 AM"
00:15:42 v #16066 > >
00:15:42 v #16067 > > ── [ 497.50ms - return value ] ─────────────────────────────────────────────────
00:15:42 v #16068 > > │ .py output (Cuda):
00:15:42 v #16069 > > │ __assert_eq / actual: 1-1-70 12:00:00 AM / expected: 1-1-70
00:15:42 v #16070 > > 12:00:00 AM
00:15:42 v #16071 > > │
00:15:42 v #16072 > > │
00:15:42 v #16073 > >
00:15:42 v #16074 > > ── [ 498.02ms - stdout ] ───────────────────────────────────────────────────────
00:15:42 v #16075 > > │ .fsx output:
00:15:42 v #16076 > > │ __assert_eq / actual: "1-1-70 12:00:00 AM" / expected:
00:15:42 v #16077 > > "1-1-70 12:00:00 AM"
00:15:42 v #16078 > > │
00:15:42 v #16079 > >
00:15:42 v #16080 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:42 v #16081 > > │ ### date_time_milliseconds
00:15:42 v #16082 > >
00:15:42 v #16083 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:42 v #16084 > > inl date_time_milliseconds
00:15:42 v #16085 > >     (year : int) (month : int) (day : int) (hour : int) (minute : int) (second :
00:15:42 v #16086 > > int) (millisecond : int)
00:15:42 v #16087 > >     : date_time
00:15:42 v #16088 > >     =
00:15:42 v #16089 > >     backend_switch {
00:15:42 v #16090 > >         Fsharp = fun () =>
00:15:42 v #16091 > >             $'System.DateTime (!year, !month, !day, !hour, !minute, !second,
00:15:42 v #16092 > > !millisecond)' : date_time
00:15:42 v #16093 > >         Python = fun () =>
00:15:42 v #16094 > >             $'datetime.datetime(!year, !month, !day, !hour, !minute, !second,
00:15:42 v #16095 > > !millisecond)' : date_time
00:15:42 v #16096 > >     }
00:15:42 v #16097 > >
00:15:42 v #16098 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:42 v #16099 > > //// test
00:15:42 v #16100 > > ///! fsharp
00:15:42 v #16101 > > ///! cuda
00:15:42 v #16102 > >
00:15:42 v #16103 > > date_time_milliseconds 1970 1 1 0 0 0 0
00:15:42 v #16104 > > |> format ""
00:15:42 v #16105 > > |> _assert_eq "1-1-70 12:00:00 AM"
00:15:43 v #16106 > >
00:15:43 v #16107 > > ── [ 617.60ms - return value ] ─────────────────────────────────────────────────
00:15:43 v #16108 > > │ .py output (Cuda):
00:15:43 v #16109 > > │ __assert_eq / actual: 1-1-70 12:00:00 AM / expected: 1-1-70
00:15:43 v #16110 > > 12:00:00 AM
00:15:43 v #16111 > > │
00:15:43 v #16112 > > │
00:15:43 v #16113 > >
00:15:43 v #16114 > > ── [ 618.09ms - stdout ] ───────────────────────────────────────────────────────
00:15:43 v #16115 > > │ .fsx output:
00:15:43 v #16116 > > │ __assert_eq / actual: "1-1-70 12:00:00 AM" / expected:
00:15:43 v #16117 > > "1-1-70 12:00:00 AM"
00:15:43 v #16118 > > │
00:15:43 v #16119 > >
00:15:43 v #16120 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:43 v #16121 > > │ ### date_time_utc
00:15:43 v #16122 > >
00:15:43 v #16123 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:43 v #16124 > > inl date_time_utc
00:15:43 v #16125 > >     (year : int) (month : int) (day : int) (hour : int) (minute : int) (second :
00:15:43 v #16126 > > int)
00:15:43 v #16127 > >     : date_time
00:15:43 v #16128 > >     =
00:15:43 v #16129 > >     backend_switch {
00:15:43 v #16130 > >         Fsharp = fun () =>
00:15:43 v #16131 > >             $'System.DateTime (!year, !month, !day, !hour, !minute, !second,
00:15:43 v #16132 > > System.DateTimeKind.Utc)' : date_time
00:15:43 v #16133 > >         Python = fun () =>
00:15:43 v #16134 > >             $'datetime.datetime(!year, !month, !day, !hour, !minute, !second,
00:15:43 v #16135 > > tzinfo=datetime.timezone.utc)' : date_time
00:15:43 v #16136 > >     }
00:15:43 v #16137 > >
00:15:43 v #16138 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:43 v #16139 > > //// test
00:15:43 v #16140 > > ///! fsharp
00:15:43 v #16141 > > ///! cuda
00:15:43 v #16142 > >
00:15:43 v #16143 > > date_time_utc 1970 1 1 0 0 0
00:15:43 v #16144 > > |> format ""
00:15:43 v #16145 > > |> _assert_eq "1-1-70 12:00:00 AM"
00:15:43 v #16146 > >
00:15:43 v #16147 > > ── [ 540.29ms - return value ] ─────────────────────────────────────────────────
00:15:43 v #16148 > > │ .py output (Cuda):
00:15:43 v #16149 > > │ __assert_eq / actual: 1-1-70 12:00:00 AM / expected: 1-1-70
00:15:43 v #16150 > > 12:00:00 AM
00:15:43 v #16151 > > │
00:15:43 v #16152 > > │
00:15:43 v #16153 > >
00:15:43 v #16154 > > ── [ 540.85ms - stdout ] ───────────────────────────────────────────────────────
00:15:43 v #16155 > > │ .fsx output:
00:15:43 v #16156 > > │ __assert_eq / actual: "1-1-70 12:00:00 AM" / expected:
00:15:43 v #16157 > > "1-1-70 12:00:00 AM"
00:15:43 v #16158 > > │
00:15:43 v #16159 > >
00:15:43 v #16160 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:43 v #16161 > > │ ### date_time_kind
00:15:43 v #16162 > >
00:15:43 v #16163 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:43 v #16164 > > union date_time_kind =
00:15:43 v #16165 > >     | Unspecified
00:15:43 v #16166 > >     | Utc
00:15:43 v #16167 > >     | Local
00:15:44 v #16168 > >
00:15:44 v #16169 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:44 v #16170 > > │ ### specify_date_kind
00:15:44 v #16171 > >
00:15:44 v #16172 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:44 v #16173 > > inl specify_date_kind (kind : date_time_kind) (date_time : date_time) :
00:15:44 v #16174 > > date_time =
00:15:44 v #16175 > >     backend_switch {
00:15:44 v #16176 > >         Fsharp = fun () =>
00:15:44 v #16177 > >             inl kind : $'System.DateTimeKind' =
00:15:44 v #16178 > >                 match kind with
00:15:44 v #16179 > >                 | Unspecified => $'System.DateTimeKind.Unspecified'
00:15:44 v #16180 > >                 | Utc => $'System.DateTimeKind.Utc'
00:15:44 v #16181 > >                 | Local => $'System.DateTimeKind.Local'
00:15:44 v #16182 > >             $'System.DateTime.SpecifyKind (!date_time, !kind)' : date_time
00:15:44 v #16183 > >         Python = fun () => $'!date_time.replace(tzinfo=None)' : date_time
00:15:44 v #16184 > >     }
00:15:44 v #16185 > >
00:15:44 v #16186 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:44 v #16187 > > │ ### to_universal_time
00:15:44 v #16188 > >
00:15:44 v #16189 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:44 v #16190 > > inl to_universal_time (date_time : date_time) : date_time =
00:15:44 v #16191 > >     backend_switch {
00:15:44 v #16192 > >         Fsharp = fun () => date_time |> $'_.ToUniversalTime()' : date_time
00:15:44 v #16193 > >         Python = fun () => $'!date_time.replace(tzinfo=datetime.timezone.utc)' :
00:15:44 v #16194 > > date_time
00:15:44 v #16195 > >     }
00:15:44 v #16196 > >
00:15:44 v #16197 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:44 v #16198 > > //// test
00:15:44 v #16199 > > ///! fsharp
00:15:44 v #16200 > > ///! cuda
00:15:44 v #16201 > >
00:15:44 v #16202 > > date_time_milliseconds 1970 1 1 0 0 0 0
00:15:44 v #16203 > > |> specify_date_kind Utc
00:15:44 v #16204 > > |> to_universal_time
00:15:44 v #16205 > > |> format ""
00:15:44 v #16206 > > |> _assert_eq "1-1-70 12:00:00 AM"
00:15:44 v #16207 > >
00:15:44 v #16208 > > ── [ 618.13ms - return value ] ─────────────────────────────────────────────────
00:15:44 v #16209 > > │ .py output (Cuda):
00:15:44 v #16210 > > │ __assert_eq / actual: 1-1-70 12:00:00 AM / expected: 1-1-70
00:15:44 v #16211 > > 12:00:00 AM
00:15:44 v #16212 > > │
00:15:44 v #16213 > > │
00:15:44 v #16214 > >
00:15:44 v #16215 > > ── [ 618.68ms - stdout ] ───────────────────────────────────────────────────────
00:15:44 v #16216 > > │ .fsx output:
00:15:44 v #16217 > > │ __assert_eq / actual: "1-1-70 12:00:00 AM" / expected:
00:15:44 v #16218 > > "1-1-70 12:00:00 AM"
00:15:44 v #16219 > > │
00:15:44 v #16220 > >
00:15:44 v #16221 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:44 v #16222 > > //// test
00:15:44 v #16223 > > ///! fsharp
00:15:44 v #16224 > > ///! cuda
00:15:44 v #16225 > >
00:15:44 v #16226 > > date_time_utc 1970 1 1 0 0 0
00:15:44 v #16227 > > |> specify_date_kind Utc
00:15:44 v #16228 > > |> format ""
00:15:44 v #16229 > > |> _assert_eq "1-1-70 12:00:00 AM"
00:15:45 v #16230 > >
00:15:45 v #16231 > > ── [ 565.85ms - return value ] ─────────────────────────────────────────────────
00:15:45 v #16232 > > │ .py output (Cuda):
00:15:45 v #16233 > > │ __assert_eq / actual: 1-1-70 12:00:00 AM / expected: 1-1-70
00:15:45 v #16234 > > 12:00:00 AM
00:15:45 v #16235 > > │
00:15:45 v #16236 > > │
00:15:45 v #16237 > >
00:15:45 v #16238 > > ── [ 566.37ms - stdout ] ───────────────────────────────────────────────────────
00:15:45 v #16239 > > │ .fsx output:
00:15:45 v #16240 > > │ __assert_eq / actual: "1-1-70 12:00:00 AM" / expected:
00:15:45 v #16241 > > "1-1-70 12:00:00 AM"
00:15:45 v #16242 > > │
00:15:45 v #16243 > >
00:15:45 v #16244 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:45 v #16245 > > //// test
00:15:45 v #16246 > > ///! fsharp
00:15:45 v #16247 > > ///! cuda
00:15:45 v #16248 > >
00:15:45 v #16249 > > date_time_utc 1970 1 1 0 0 0
00:15:45 v #16250 > > |> specify_date_kind Local
00:15:45 v #16251 > > |> format ""
00:15:45 v #16252 > > |> _assert_eq "1-1-70 12:00:00 AM"
00:15:46 v #16253 > >
00:15:46 v #16254 > > ── [ 571.02ms - return value ] ─────────────────────────────────────────────────
00:15:46 v #16255 > > │ .py output (Cuda):
00:15:46 v #16256 > > │ __assert_eq / actual: 1-1-70 12:00:00 AM / expected: 1-1-70
00:15:46 v #16257 > > 12:00:00 AM
00:15:46 v #16258 > > │
00:15:46 v #16259 > > │
00:15:46 v #16260 > >
00:15:46 v #16261 > > ── [ 571.46ms - stdout ] ───────────────────────────────────────────────────────
00:15:46 v #16262 > > │ .fsx output:
00:15:46 v #16263 > > │ __assert_eq / actual: "1-1-70 12:00:00 AM" / expected:
00:15:46 v #16264 > > "1-1-70 12:00:00 AM"
00:15:46 v #16265 > > │
00:15:46 v #16266 > >
00:15:46 v #16267 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:46 v #16268 > > //// test
00:15:46 v #16269 > > ///! fsharp
00:15:46 v #16270 > > ///! cuda
00:15:46 v #16271 > >
00:15:46 v #16272 > > date_time_utc 1970 1 1 0 0 0
00:15:46 v #16273 > > |> specify_date_kind Unspecified
00:15:46 v #16274 > > |> format ""
00:15:46 v #16275 > > |> _assert_eq "1-1-70 12:00:00 AM"
00:15:46 v #16276 > >
00:15:46 v #16277 > > ── [ 543.76ms - return value ] ─────────────────────────────────────────────────
00:15:46 v #16278 > > │ .py output (Cuda):
00:15:46 v #16279 > > │ __assert_eq / actual: 1-1-70 12:00:00 AM / expected: 1-1-70
00:15:46 v #16280 > > 12:00:00 AM
00:15:46 v #16281 > > │
00:15:46 v #16282 > > │
00:15:46 v #16283 > >
00:15:46 v #16284 > > ── [ 544.19ms - stdout ] ───────────────────────────────────────────────────────
00:15:46 v #16285 > > │ .fsx output:
00:15:46 v #16286 > > │ __assert_eq / actual: "1-1-70 12:00:00 AM" / expected:
00:15:46 v #16287 > > "1-1-70 12:00:00 AM"
00:15:46 v #16288 > > │
00:15:46 v #16289 > >
00:15:46 v #16290 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:46 v #16291 > > │ ### time_span
00:15:46 v #16292 > >
00:15:46 v #16293 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:46 v #16294 > > nominal time_span_python =
00:15:46 v #16295 > >     `(
00:15:46 v #16296 > >         backend_switch `(()) `({}) {
00:15:46 v #16297 > >             Python = (fun () => global "import datetime") : () -> ()
00:15:46 v #16298 > >         }
00:15:46 v #16299 > >         $'' : $'datetime.timedelta'
00:15:46 v #16300 > >     )
00:15:46 v #16301 > > type time_span_switch =
00:15:46 v #16302 > >     {
00:15:46 v #16303 > >         Fsharp : $'System.TimeSpan'
00:15:46 v #16304 > >         Python : time_span_python
00:15:46 v #16305 > >     }
00:15:46 v #16306 > > nominal time_span = $'backend_switch `(time_span_switch)'
00:15:46 v #16307 > >
00:15:46 v #16308 > > inl time_span x : time_span =
00:15:46 v #16309 > >     backend_switch {
00:15:46 v #16310 > >         Fsharp = fun () => x |> convert : time_span
00:15:46 v #16311 > >         Python = fun () => $'datetime.timedelta(!x)' : time_span
00:15:46 v #16312 > >     }
00:15:46 v #16313 > >
00:15:46 v #16314 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:46 v #16315 > > │ ### new_time_span
00:15:46 v #16316 > >
00:15:46 v #16317 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:46 v #16318 > > inl new_time_span (a : date_time) (b : date_time) : time_span =
00:15:46 v #16319 > >     $'!b - !a '
00:15:46 v #16320 > >
00:15:46 v #16321 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:46 v #16322 > > │ ### total_seconds
00:15:46 v #16323 > >
00:15:46 v #16324 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:46 v #16325 > > inl total_seconds (time_span : time_span) : f64 =
00:15:46 v #16326 > >     backend_switch {
00:15:46 v #16327 > >         Fsharp = fun () => time_span |> $'_.TotalSeconds' : f64
00:15:46 v #16328 > >         Python = fun () => $'!time_span.total_seconds()' : f64
00:15:46 v #16329 > >     }
00:15:47 v #16330 > >
00:15:47 v #16331 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:47 v #16332 > > │ ### ticks
00:15:47 v #16333 > >
00:15:47 v #16334 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:47 v #16335 > > inl ticks (date_time : date_time) : timestamp =
00:15:47 v #16336 > >     backend_switch {
00:15:47 v #16337 > >         Fsharp = fun () =>
00:15:47 v #16338 > >             run_target function
00:15:47 v #16339 > >                 | Rust (Contract) => fun () => null ()
00:15:47 v #16340 > >                 | _ => fun () => date_time |> $'_.Ticks'
00:15:47 v #16341 > >             : timestamp
00:15:47 v #16342 > >         Python = fun () =>
00:15:47 v #16343 > >             date_time |> new_time_span (min_value ()) |> total_seconds |> ((*)
00:15:47 v #16344 > > 10000000) |> convert : timestamp
00:15:47 v #16345 > >     }
00:15:47 v #16346 > >
00:15:47 v #16347 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:47 v #16348 > > //// test
00:15:47 v #16349 > > ///! fsharp
00:15:47 v #16350 > > ///! cuda
00:15:47 v #16351 > > ///! rust
00:15:47 v #16352 > >
00:15:47 v #16353 > > unix_epoch ()
00:15:47 v #16354 > > |> ticks
00:15:47 v #16355 > > |> _assert_eq' (621355968000000000i64 |> convert)
00:15:52 v #16356 > >
00:15:52 v #16357 > > ── [ 5.72s - return value ] ────────────────────────────────────────────────────
00:15:52 v #16358 > > │ .py output (Cuda):
00:15:52 v #16359 > > │ __assert_eq' / actual: 621355968000000000 / expected:
00:15:52 v #16360 > > 621355968000000000
00:15:52 v #16361 > > │
00:15:52 v #16362 > > │ .rs output:
00:15:52 v #16363 > > │ __assert_eq' / actual: 621355968000000000 / expected:
00:15:52 v #16364 > > 621355968000000000
00:15:52 v #16365 > > │
00:15:52 v #16366 > > │
00:15:52 v #16367 > >
00:15:52 v #16368 > > ── [ 5.72s - stdout ] ──────────────────────────────────────────────────────────
00:15:52 v #16369 > > │ .fsx output:
00:15:52 v #16370 > > │ __assert_eq' / actual: 621355968000000000L / expected:
00:15:52 v #16371 > > 621355968000000000L
00:15:52 v #16372 > > │
00:15:52 v #16373 > >
00:15:52 v #16374 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:52 v #16375 > > │ ### time_span_format
00:15:52 v #16376 > >
00:15:52 v #16377 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:52 v #16378 > > inl time_span_format (format : string) (time_span : time_span) : string =
00:15:52 v #16379 > >     run_target function
00:15:52 v #16380 > >         | TypeScript _
00:15:52 v #16381 > >         | Python _ => fun () =>
00:15:52 v #16382 > >             $'!time_span.ToString ("c",
00:15:52 v #16383 > > System.Globalization.CultureInfo.InvariantCulture)'
00:15:52 v #16384 > >         | _ => fun () =>
00:15:52 v #16385 > >             backend_switch {
00:15:52 v #16386 > >                 Fsharp = fun () => $'!time_span.ToString !format ' : string
00:15:52 v #16387 > >                 Python = fun () => $'!time_span ' : string
00:15:52 v #16388 > >             }
00:15:53 v #16389 > >
00:15:53 v #16390 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:53 v #16391 > > │ ### hours
00:15:53 v #16392 > >
00:15:53 v #16393 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:53 v #16394 > > inl hours (time_span : time_span) : i32 =
00:15:53 v #16395 > >     backend_switch {
00:15:53 v #16396 > >         Fsharp = fun () => time_span |> $'_.Hours' : i32
00:15:53 v #16397 > >         Python = fun () => $'!time_span.seconds // 3600' : i32
00:15:53 v #16398 > >     }
00:15:53 v #16399 > >
00:15:53 v #16400 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:53 v #16401 > > //// test
00:15:53 v #16402 > > ///! fsharp
00:15:53 v #16403 > > ///! cuda
00:15:53 v #16404 > > ///! rust
00:15:53 v #16405 > > ///! typescript
00:15:53 v #16406 > > ///! python
00:15:53 v #16407 > >
00:15:53 v #16408 > > (join date_time_milliseconds 2002 2 2 20 22 24 26)
00:15:53 v #16409 > > |> new_time_span (date_time_milliseconds 2001 1 1 10 11 12 13)
00:15:53 v #16410 > > |> hours
00:15:53 v #16411 > > |> _assert_eq 10
00:16:00 v #16412 > >
00:16:00 v #16413 > > ── [ 7.70s - return value ] ────────────────────────────────────────────────────
00:16:00 v #16414 > > │ .py output (Cuda):
00:16:00 v #16415 > > │ __assert_eq / actual: 10 / expected: 10
00:16:00 v #16416 > > │
00:16:00 v #16417 > > │ .rs output:
00:16:00 v #16418 > > │ __assert_eq / actual: 10 / expected: 10
00:16:00 v #16419 > > │
00:16:00 v #16420 > > │ .ts output:
00:16:00 v #16421 > > │ __assert_eq / actual: 10 / expected: 10
00:16:00 v #16422 > > │
00:16:00 v #16423 > > │ .py output:
00:16:00 v #16424 > > │ __assert_eq / actual: 10 / expected: 10
00:16:00 v #16425 > > │
00:16:00 v #16426 > > │
00:16:00 v #16427 > >
00:16:00 v #16428 > > ── [ 7.70s - stdout ] ──────────────────────────────────────────────────────────
00:16:00 v #16429 > > │ .fsx output:
00:16:00 v #16430 > > │ __assert_eq / actual: 10 / expected: 10
00:16:00 v #16431 > > │
00:16:00 v #16432 > >
00:16:00 v #16433 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:00 v #16434 > > │ ### minutes
00:16:00 v #16435 > >
00:16:00 v #16436 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:00 v #16437 > > inl minutes (time_span : time_span) : i32 =
00:16:00 v #16438 > >     backend_switch {
00:16:00 v #16439 > >         Fsharp = fun () => time_span |> $'_.Minutes' : i32
00:16:00 v #16440 > >         Python = fun () => $'(!time_span.seconds // 60) % 60' : i32
00:16:00 v #16441 > >     }
00:16:01 v #16442 > >
00:16:01 v #16443 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:01 v #16444 > > //// test
00:16:01 v #16445 > > ///! fsharp
00:16:01 v #16446 > > ///! cuda
00:16:01 v #16447 > > ///! rust
00:16:01 v #16448 > > ///! typescript
00:16:01 v #16449 > > ///! python
00:16:01 v #16450 > >
00:16:01 v #16451 > > (join date_time_milliseconds 2002 2 2 20 22 24 26)
00:16:01 v #16452 > > |> new_time_span (date_time_milliseconds 2001 1 1 10 11 12 13)
00:16:01 v #16453 > > |> minutes
00:16:01 v #16454 > > |> _assert_eq 11
00:16:08 v #16455 > >
00:16:08 v #16456 > > ── [ 7.74s - return value ] ────────────────────────────────────────────────────
00:16:08 v #16457 > > │ .py output (Cuda):
00:16:08 v #16458 > > │ __assert_eq / actual: 11 / expected: 11
00:16:08 v #16459 > > │
00:16:08 v #16460 > > │ .rs output:
00:16:08 v #16461 > > │ __assert_eq / actual: 11 / expected: 11
00:16:08 v #16462 > > │
00:16:08 v #16463 > > │ .ts output:
00:16:08 v #16464 > > │ __assert_eq / actual: 11 / expected: 11
00:16:08 v #16465 > > │
00:16:08 v #16466 > > │ .py output:
00:16:08 v #16467 > > │ __assert_eq / actual: 11 / expected: 11
00:16:08 v #16468 > > │
00:16:08 v #16469 > > │
00:16:08 v #16470 > >
00:16:08 v #16471 > > ── [ 7.74s - stdout ] ──────────────────────────────────────────────────────────
00:16:08 v #16472 > > │ .fsx output:
00:16:08 v #16473 > > │ __assert_eq / actual: 11 / expected: 11
00:16:08 v #16474 > > │
00:16:08 v #16475 > >
00:16:08 v #16476 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:08 v #16477 > > │ ### seconds
00:16:08 v #16478 > >
00:16:08 v #16479 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:08 v #16480 > > inl seconds (time_span : time_span) : i32 =
00:16:08 v #16481 > >     backend_switch {
00:16:08 v #16482 > >         Fsharp = fun () => time_span |> $'_.Seconds' : i32
00:16:08 v #16483 > >         Python = fun () => $'!time_span.seconds % 60' : i32
00:16:08 v #16484 > >     }
00:16:09 v #16485 > >
00:16:09 v #16486 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:09 v #16487 > > //// test
00:16:09 v #16488 > > ///! fsharp
00:16:09 v #16489 > > ///! cuda
00:16:09 v #16490 > > ///! rust
00:16:09 v #16491 > > ///! typescript
00:16:09 v #16492 > > ///! python
00:16:09 v #16493 > >
00:16:09 v #16494 > > (join date_time_milliseconds 2002 2 2 20 22 24 26)
00:16:09 v #16495 > > |> new_time_span (date_time_milliseconds 2001 1 1 10 11 12 13)
00:16:09 v #16496 > > |> seconds
00:16:09 v #16497 > > |> _assert_eq 12
00:16:16 v #16498 > >
00:16:16 v #16499 > > ── [ 7.73s - return value ] ────────────────────────────────────────────────────
00:16:16 v #16500 > > │ .py output (Cuda):
00:16:16 v #16501 > > │ __assert_eq / actual: 12 / expected: 12
00:16:16 v #16502 > > │
00:16:16 v #16503 > > │ .rs output:
00:16:16 v #16504 > > │ __assert_eq / actual: 12 / expected: 12
00:16:16 v #16505 > > │
00:16:16 v #16506 > > │ .ts output:
00:16:16 v #16507 > > │ __assert_eq / actual: 12 / expected: 12
00:16:16 v #16508 > > │
00:16:16 v #16509 > > │ .py output:
00:16:16 v #16510 > > │ __assert_eq / actual: 12 / expected: 12
00:16:16 v #16511 > > │
00:16:16 v #16512 > > │
00:16:16 v #16513 > >
00:16:16 v #16514 > > ── [ 7.73s - stdout ] ──────────────────────────────────────────────────────────
00:16:16 v #16515 > > │ .fsx output:
00:16:16 v #16516 > > │ __assert_eq / actual: 12 / expected: 12
00:16:16 v #16517 > > │
00:16:16 v #16518 > >
00:16:16 v #16519 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:16 v #16520 > > │ ### milliseconds
00:16:16 v #16521 > >
00:16:16 v #16522 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:16 v #16523 > > inl milliseconds (time_span : time_span) : i32 =
00:16:16 v #16524 > >     backend_switch {
00:16:16 v #16525 > >         Fsharp = fun () => time_span |> $'_.Milliseconds' : i32
00:16:16 v #16526 > >         Python = fun () => $'!time_span.microseconds' : i32
00:16:16 v #16527 > >     }
00:16:16 v #16528 > >
00:16:16 v #16529 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:16 v #16530 > > //// test
00:16:16 v #16531 > > ///! fsharp
00:16:16 v #16532 > > ///! cuda
00:16:16 v #16533 > > ///! rust
00:16:16 v #16534 > > ///! typescript
00:16:16 v #16535 > > ///! python
00:16:16 v #16536 > >
00:16:16 v #16537 > > (join date_time_milliseconds 2002 2 2 20 22 24 26)
00:16:16 v #16538 > > |> new_time_span (date_time_milliseconds 2001 1 1 10 11 12 13)
00:16:16 v #16539 > > |> milliseconds
00:16:16 v #16540 > > |> _assert_eq 13
00:16:24 v #16541 > >
00:16:24 v #16542 > > ── [ 7.38s - return value ] ────────────────────────────────────────────────────
00:16:24 v #16543 > > │ .py output (Cuda):
00:16:24 v #16544 > > │ __assert_eq / actual: 13 / expected: 13
00:16:24 v #16545 > > │
00:16:24 v #16546 > > │ .rs output:
00:16:24 v #16547 > > │ __assert_eq / actual: 13 / expected: 13
00:16:24 v #16548 > > │
00:16:24 v #16549 > > │ .ts output:
00:16:24 v #16550 > > │ __assert_eq / actual: 13 / expected: 13
00:16:24 v #16551 > > │
00:16:24 v #16552 > > │ .py output:
00:16:24 v #16553 > > │ __assert_eq / actual: 13 / expected: 13
00:16:24 v #16554 > > │
00:16:24 v #16555 > > │
00:16:24 v #16556 > >
00:16:24 v #16557 > > ── [ 7.38s - stdout ] ──────────────────────────────────────────────────────────
00:16:24 v #16558 > > │ .fsx output:
00:16:24 v #16559 > > │ __assert_eq / actual: 13 / expected: 13
00:16:24 v #16560 > > │
00:16:24 v #16561 > >
00:16:24 v #16562 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:24 v #16563 > > │ ### time_zone_info
00:16:24 v #16564 > >
00:16:24 v #16565 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:24 v #16566 > > nominal time_zone_info = $'System.TimeZoneInfo'
00:16:24 v #16567 > >
00:16:24 v #16568 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:24 v #16569 > > │ ### add_days
00:16:24 v #16570 > >
00:16:24 v #16571 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:24 v #16572 > > inl add_days (days : i32) (date_time : date_time) : date_time =
00:16:24 v #16573 > >     $'!date_time.AddDays' days
00:16:24 v #16574 > >
00:16:24 v #16575 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:24 v #16576 > > │ ### now
00:16:24 v #16577 > >
00:16:24 v #16578 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:24 v #16579 > > inl now () : date_time =
00:16:24 v #16580 > >     backend_switch {
00:16:24 v #16581 > >         Fsharp = fun () =>
00:16:24 v #16582 > >             run_target function
00:16:24 v #16583 > >                 | Rust (Contract) => fun () => null ()
00:16:24 v #16584 > >                 | _ => fun () => $'System.DateTime.Now'
00:16:24 v #16585 > >             : date_time
00:16:24 v #16586 > >         Python = fun () => $'datetime.datetime.now()' : date_time
00:16:24 v #16587 > >     }
00:16:24 v #16588 > >
00:16:24 v #16589 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:24 v #16590 > > │ ### utc_now
00:16:24 v #16591 > >
00:16:24 v #16592 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:24 v #16593 > > inl utc_now () : date_time =
00:16:24 v #16594 > >     backend_switch {
00:16:24 v #16595 > >         Fsharp = fun () => $'System.DateTime.UtcNow' : date_time
00:16:24 v #16596 > >         Python = fun () => $'datetime.datetime.utcnow()' : date_time
00:16:24 v #16597 > >     }
00:16:24 v #16598 > >
00:16:24 v #16599 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:24 v #16600 > > │ ### stopwatch
00:16:24 v #16601 > >
00:16:24 v #16602 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:24 v #16603 > > nominal stopwatch_python =
00:16:24 v #16604 > >     `(
00:16:24 v #16605 > >         global "import timeit"
00:16:24 v #16606 > >         $'' : $'timeit.default_timer'
00:16:24 v #16607 > >     )
00:16:24 v #16608 > > type stopwatch_switch =
00:16:24 v #16609 > >     {
00:16:24 v #16610 > >         Fsharp : $'System.Diagnostics.Stopwatch'
00:16:24 v #16611 > >         Python : stopwatch_python
00:16:24 v #16612 > >     }
00:16:24 v #16613 > > nominal stopwatch = $'backend_switch `(stopwatch_switch)'
00:16:24 v #16614 > >
00:16:24 v #16615 > > inl stopwatch () : stopwatch =
00:16:24 v #16616 > >     backend_switch {
00:16:24 v #16617 > >         Fsharp = fun () => () |> convert : stopwatch
00:16:24 v #16618 > >         Python = fun () => $'`stopwatch ' : stopwatch
00:16:24 v #16619 > >     }
00:16:25 v #16620 > >
00:16:25 v #16621 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:25 v #16622 > > inl stopwatch_elapsed_milliseconds (stopwatch : stopwatch) : i64 =
00:16:25 v #16623 > >     $'!stopwatch.ElapsedMilliseconds'
00:16:25 v #16624 > >
00:16:25 v #16625 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:25 v #16626 > > inl stopwatch_start (stopwatch : stopwatch) : () =
00:16:25 v #16627 > >     $'!stopwatch.Start' ()
00:16:25 v #16628 > >
00:16:25 v #16629 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:25 v #16630 > > │ ## rust
00:16:25 v #16631 > >
00:16:25 v #16632 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:25 v #16633 > > │ ### duration
00:16:25 v #16634 > >
00:16:25 v #16635 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:25 v #16636 > > nominal duration =
00:16:25 v #16637 > >     `(
00:16:25 v #16638 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:25 v #16639 > > Fable.Core.Emit(\"std::time::Duration\")>]]\n#endif\ntype std_time_Duration =
00:16:25 v #16640 > > class end"
00:16:25 v #16641 > >         $'' : $'std_time_Duration'
00:16:25 v #16642 > >     )
00:16:25 v #16643 > >
00:16:25 v #16644 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:25 v #16645 > > │ ### date_time'
00:16:25 v #16646 > >
00:16:25 v #16647 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:25 v #16648 > > nominal date_time' t =
00:16:25 v #16649 > >     `(
00:16:25 v #16650 > >         backend_switch `(()) `({}) {
00:16:25 v #16651 > >             Fsharp = (fun () => global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:25 v #16652 > > Fable.Core.Emit(\"chrono::DateTime<$0>\")>]]\n#endif\ntype chrono_DateTime<'T> =
00:16:25 v #16653 > > class end") : () -> ()
00:16:25 v #16654 > >         }
00:16:25 v #16655 > >         $'' : $'chrono_DateTime<`t>'
00:16:25 v #16656 > >     )
00:16:25 v #16657 > >
00:16:25 v #16658 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:25 v #16659 > > │ ### local
00:16:25 v #16660 > >
00:16:25 v #16661 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:25 v #16662 > > nominal local =
00:16:25 v #16663 > >     `(
00:16:25 v #16664 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:25 v #16665 > > Fable.Core.Emit(\"chrono::Local\")>]]\n#endif\ntype chrono_Local = class end"
00:16:25 v #16666 > >         $'' : $'chrono_Local'
00:16:25 v #16667 > >     )
00:16:25 v #16668 > >
00:16:25 v #16669 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:25 v #16670 > > │ ### naive_date_time
00:16:25 v #16671 > >
00:16:25 v #16672 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:25 v #16673 > > nominal naive_date_time =
00:16:25 v #16674 > >     `(
00:16:25 v #16675 > >         backend_switch `(()) `({}) {
00:16:25 v #16676 > >             Fsharp = (fun () => global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:25 v #16677 > > Fable.Core.Emit(\"chrono::NaiveDateTime\")>]]\n#endif\ntype chrono_NaiveDateTime
00:16:25 v #16678 > > = class end") : () -> ()
00:16:25 v #16679 > >         }
00:16:25 v #16680 > >         $'' : $'chrono_NaiveDateTime'
00:16:25 v #16681 > >     )
00:16:25 v #16682 > >
00:16:25 v #16683 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:25 v #16684 > > │ ## utc
00:16:25 v #16685 > >
00:16:25 v #16686 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:25 v #16687 > > nominal utc =
00:16:25 v #16688 > >     `(
00:16:25 v #16689 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:25 v #16690 > > Fable.Core.Emit(\"chrono::Utc\")>]]\n#endif\ntype chrono_Utc = class end"
00:16:25 v #16691 > >         $'' : $'chrono_Utc'
00:16:25 v #16692 > >     )
00:16:26 v #16693 > >
00:16:26 v #16694 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:26 v #16695 > > │ ### naive_utc
00:16:26 v #16696 > >
00:16:26 v #16697 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:26 v #16698 > > inl naive_utc (date_time : date_time' utc) : naive_date_time =
00:16:26 v #16699 > >     !\\(date_time, $'"$0.naive_utc()"')
00:16:26 v #16700 > >
00:16:26 v #16701 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:26 v #16702 > > │ ### to_local
00:16:26 v #16703 > >
00:16:26 v #16704 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:26 v #16705 > > inl to_local (date_time : date_time' utc) : date_time' local =
00:16:26 v #16706 > >     inl naive_date_time = date_time |> naive_utc
00:16:26 v #16707 > >     !\\(naive_date_time,
00:16:26 v #16708 > > $'"chrono::offset::TimeZone::from_utc_datetime(&chrono::Local, &$0)"')
00:16:26 v #16709 > >
00:16:26 v #16710 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:26 v #16711 > > │ ### from_timestamp_micros
00:16:26 v #16712 > >
00:16:26 v #16713 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:26 v #16714 > > inl from_timestamp_micros forall t {number; int}. (timestamp : t) : option
00:16:26 v #16715 > > (date_time' utc) =
00:16:26 v #16716 > >     inl result : optionm'.option' (date_time' utc) =
00:16:26 v #16717 > >         !\\(timestamp, $'"chrono::DateTime::from_timestamp_micros($0)"')
00:16:26 v #16718 > >     result |> optionm'.unbox
00:16:26 v #16719 > >
00:16:26 v #16720 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:26 v #16721 > > │ ### format'
00:16:26 v #16722 > >
00:16:26 v #16723 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:26 v #16724 > > inl format' (format : string) (date_time : date_time' utc) : sm'.std_string =
00:16:26 v #16725 > >     !\\((date_time, #format), $'"$0.format($1).to_string()"')
00:16:26 v #16726 > >
00:16:26 v #16727 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:26 v #16728 > > │ ### format''
00:16:26 v #16729 > >
00:16:26 v #16730 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:26 v #16731 > > inl format'' (format : string) (date_time : date_time' _) : sm'.std_string =
00:16:26 v #16732 > >     !\\((date_time, #format), $'"$0.format($1).to_string()"')
00:16:26 v #16733 > >
00:16:26 v #16734 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:26 v #16735 > > │ ### format_timestamp
00:16:26 v #16736 > >
00:16:26 v #16737 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:26 v #16738 > > inl format_timestamp forall t {number; int}. (timestamp : t) =
00:16:26 v #16739 > >     inl timestamp = join timestamp
00:16:26 v #16740 > >     (timestamp / 1000)
00:16:26 v #16741 > >     |> from_timestamp_micros
00:16:26 v #16742 > >     |> optionm.map fun x =>
00:16:26 v #16743 > >         x
00:16:26 v #16744 > >         |> to_local
00:16:26 v #16745 > >         |> format'' "%Y-%m-%d %H:%M:%S"
00:16:26 v #16746 > >         |> sm'.from_std_string
00:16:26 v #16747 > >     |> resultm.from_option
00:16:27 v #16748 > >
00:16:27 v #16749 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:27 v #16750 > > │ ### duration_from_millis
00:16:27 v #16751 > >
00:16:27 v #16752 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:27 v #16753 > > inl duration_from_millis (ms : u64) : duration =
00:16:27 v #16754 > >     inl ms = join ms
00:16:27 v #16755 > >     !\($'"std::time::Duration::from_millis(!ms)"')
00:16:27 v #16756 > >
00:16:27 v #16757 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:27 v #16758 > > │ ## date_time
00:16:27 v #16759 > >
00:16:27 v #16760 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:27 v #16761 > > │ ### time_zone_local
00:16:27 v #16762 > >
00:16:27 v #16763 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:27 v #16764 > > inl time_zone_local () : time_zone_info =
00:16:27 v #16765 > >     run_target function
00:16:27 v #16766 > >         | Fsharp _ => fun () =>
00:16:27 v #16767 > >             $'System.TimeZoneInfo.Local'
00:16:27 v #16768 > >         | Rust (Native) => fun () =>
00:16:27 v #16769 > >             open rust.rust_operators
00:16:27 v #16770 > >
00:16:27 v #16771 > > !\($'"std::sync::Arc::new(chrono::FixedOffset::local_minus_utc(chrono::Local::no
00:16:27 v #16772 > > w().offset()) as i64)"')
00:16:27 v #16773 > >         | _ => fun () => null ()
00:16:27 v #16774 > >
00:16:27 v #16775 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:27 v #16776 > > │ ### get_utc_offset
00:16:27 v #16777 > >
00:16:27 v #16778 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:27 v #16779 > > inl get_utc_offset (time_zone_info : time_zone_info) (date_time : date_time) :
00:16:27 v #16780 > > time_span =
00:16:27 v #16781 > >     run_target function
00:16:27 v #16782 > >         | Fsharp _ => fun () => date_time |> $'_.GetUtcOffset' (time_zone_local
00:16:27 v #16783 > > ())
00:16:27 v #16784 > >         | Rust (Native | Wasm) => fun () =>
00:16:27 v #16785 > >             open rust.rust_operators
00:16:27 v #16786 > >             inl ticks = date_time |> ticks
00:16:27 v #16787 > >             // inl ticks = ticks |> rust.rust.emit
00:16:27 v #16788 > >             (!\\((date_time, ticks),
00:16:27 v #16789 > > $'"chrono::FixedOffset::local_minus_utc(&chrono::DateTime::timezone(&chrono::Dat
00:16:27 v #16790 > > eTime::fixed_offset(&chrono::DateTime::from_timestamp_nanos($1))))"') : i32)
00:16:27 v #16791 > >             |> convert
00:16:27 v #16792 > >         | target => fun () =>
00:16:27 v #16793 > >             backend_switch {
00:16:27 v #16794 > >                 Fsharp = fun () => failwith $'$"date_time.get_utc_offset
00:16:27 v #16795 > > target: {!target}"' : time_span
00:16:27 v #16796 > >                 Python = fun () => $'!date_time.utcoffset()' : time_span
00:16:27 v #16797 > >             }
00:16:27 v #16798 > >
00:16:27 v #16799 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:27 v #16800 > > │ ### date_time_guid_from_date_time
00:16:27 v #16801 > >
00:16:27 v #16802 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:27 v #16803 > > let date_time_guid_from_date_time (guid' : guid.guid) (date_time : date_time) =
00:16:27 v #16804 > >     inl create prefix time_zone : date_time_guid =
00:16:27 v #16805 > >         inl guid_range =
00:16:27 v #16806 > >             guid'
00:16:27 v #16807 > >             |> sm'.obj_to_string
00:16:27 v #16808 > >             |> sm'.range
00:16:27 v #16809 > >                 (am'.Start ((prefix |> sm'.length |> fun x => x : i32) +
00:16:27 v #16810 > > (time_zone |> sm'.length)))
00:16:27 v #16811 > >                 (am'.End eval)
00:16:27 v #16812 > >         ($'$"{!prefix}{!time_zone}{!guid_range}"' : string) |> guid.new_guid
00:16:27 v #16813 > >     run_target function
00:16:27 v #16814 > >         | Rust (Contract) => fun () => null ()
00:16:27 v #16815 > >         | Rust (Native | Wasm) => fun () =>
00:16:27 v #16816 > >             inl epoch =
00:16:27 v #16817 > >                 unix_epoch ()
00:16:27 v #16818 > >                 |> to_universal_time
00:16:27 v #16819 > >             inl date_time =
00:16:27 v #16820 > >                 date_time
00:16:27 v #16821 > >                 |> specify_date_kind Local
00:16:27 v #16822 > >                 |> to_universal_time
00:16:27 v #16823 > >             inl unixticks =
00:16:27 v #16824 > >                 match date_time |> ticks, epoch |> ticks with
00:16:27 v #16825 > >                 | timestamp date_time, timestamp epoch => convert date_time -
00:16:27 v #16826 > > convert epoch : i64
00:16:27 v #16827 > >             inl prefix =
00:16:27 v #16828 > >                 unixticks / 10
00:16:27 v #16829 > >                 |> from_timestamp_micros
00:16:27 v #16830 > >                 |> optionm.map (
00:16:27 v #16831 > >                     to_local
00:16:27 v #16832 > >                     >> format'' "%Y%m%d-%H%M-%S%f"
00:16:27 v #16833 > >                     >> sm'.from_std_string
00:16:27 v #16834 > >                     >> fun s => $'$"{!s.[[0..17]]}-{!s.[[18..21]]}-{!s.[[22]]}"'
00:16:27 v #16835 > >                 )
00:16:27 v #16836 > >                 |> optionm'.default_value ""
00:16:27 v #16837 > >             inl time_zone = date_time |> get_utc_offset (time_zone_local ())
00:16:27 v #16838 > >             inl time_zone_signal = if hours time_zone > 0 then 1u8 else 0
00:16:27 v #16839 > >             inl time_zone_value = time_zone |> time_span_format (join "hh:mm")
00:16:27 v #16840 > >             inl time_zone =
00:16:27 v #16841 > > $'$"{!time_zone_signal}{!time_zone_value.[[0..1]]}{!time_zone_value.[[3..4]]}"'
00:16:27 v #16842 > >             create prefix time_zone
00:16:27 v #16843 > >         | target => fun () =>
00:16:27 v #16844 > >             inl prefix = date_time |> format (join "yyyyMMdd-HHmm-ssff-ffff-f")
00:16:27 v #16845 > >             inl time_zone = date_time |> get_utc_offset (time_zone_local ())
00:16:27 v #16846 > >             inl time_zone_signal = if hours time_zone > 0 then 1u8 else 0
00:16:27 v #16847 > >             inl time_zone_value = time_zone |> time_span_format (join "hhmm")
00:16:27 v #16848 > >             inl time_zone = $'$"{!time_zone_signal}{!time_zone_value}"'
00:16:27 v #16849 > >             create prefix time_zone
00:16:27 v #16850 > >
00:16:27 v #16851 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:27 v #16852 > > //// test
00:16:27 v #16853 > > ///! fsharp
00:16:27 v #16854 > > ////! cuda
00:16:27 v #16855 > > ///! rust -d chrono
00:16:27 v #16856 > >
00:16:27 v #16857 > > inl suffix = test_guid () |> sm'.obj_to_string |> sm'.range (am'.End fun x => x
00:16:27 v #16858 > > () - 6i32) (am'.End eval)
00:16:27 v #16859 > > unix_epoch ()
00:16:27 v #16860 > > |> specify_date_kind Utc
00:16:27 v #16861 > > |> to_universal_time
00:16:27 v #16862 > > |> date_time_guid_from_date_time (test_guid ())
00:16:27 v #16863 > > |> sm'.obj_to_string
00:16:27 v #16864 > > |> fun s => s |> _assert_eq' $'$"{!(s |> sm'.slice 0i32 29)}{!suffix}"'
00:16:33 v #16865 > >
00:16:33 v #16866 > > ── [ 6.28s - return value ] ────────────────────────────────────────────────────
00:16:33 v #16867 > > │ .rs output (rust -d chrono):
00:16:33 v #16868 > > │ __assert_eq' / actual: "19700101-0000-0000-0000-000000cba987"
00:16:33 v #16869 > > / expected: "19700101-0000-0000-0000-000000cba987"
00:16:33 v #16870 > > │
00:16:33 v #16871 > > │
00:16:33 v #16872 > >
00:16:33 v #16873 > > ── [ 6.28s - stdout ] ──────────────────────────────────────────────────────────
00:16:33 v #16874 > > │ .fsx output:
00:16:33 v #16875 > > │ __assert_eq' / actual: "19700101-0000-0000-0000-000000cba987"
00:16:33 v #16876 > > / expected: "19700101-0000-0000-0000-000000cba987"
00:16:33 v #16877 > > │
00:16:33 v #16878 > >
00:16:33 v #16879 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:33 v #16880 > > //// test
00:16:33 v #16881 > > ///! fsharp
00:16:33 v #16882 > > ///! rust -d chrono
00:16:33 v #16883 > >
00:16:33 v #16884 > > inl suffix = test_guid () |> sm'.obj_to_string |> sm'.range (am'.End fun x => x
00:16:33 v #16885 > > () - 6i32) (am'.End eval)
00:16:33 v #16886 > > min_value ()
00:16:33 v #16887 > > |> specify_date_kind Local
00:16:33 v #16888 > > |> date_time_guid_from_date_time (test_guid ())
00:16:33 v #16889 > > |> sm'.obj_to_string
00:16:33 v #16890 > > |> fun s => s |> _assert_eq' $'$"00010101-0000-0000-0000-0{!(s |> sm'.slice
00:16:33 v #16891 > > 25i32 29)}{!suffix}"'
00:16:39 v #16892 > >
00:16:39 v #16893 > > ── [ 6.00s - return value ] ────────────────────────────────────────────────────
00:16:39 v #16894 > > │ .rs output (rust -d chrono):
00:16:39 v #16895 > > │ __assert_eq' / actual: "00010101-0000-0000-0000-000000cba987"
00:16:39 v #16896 > > / expected: "00010101-0000-0000-0000-000000cba987"
00:16:39 v #16897 > > │
00:16:39 v #16898 > > │
00:16:39 v #16899 > >
00:16:39 v #16900 > > ── [ 6.00s - stdout ] ──────────────────────────────────────────────────────────
00:16:39 v #16901 > > │ .fsx output:
00:16:39 v #16902 > > │ __assert_eq' / actual: "00010101-0000-0000-0000-000000cba987"
00:16:39 v #16903 > > / expected: "00010101-0000-0000-0000-000000cba987"
00:16:39 v #16904 > > │
00:16:39 v #16905 > >
00:16:39 v #16906 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:39 v #16907 > > //// test
00:16:39 v #16908 > > ///! fsharp
00:16:39 v #16909 > >
00:16:39 v #16910 > > inl suffix = test_guid () |> sm'.obj_to_string |> sm'.range (am'.End fun x => x
00:16:39 v #16911 > > () - 6i32) (am'.End eval)
00:16:39 v #16912 > > max_value ()
00:16:39 v #16913 > > |> specify_date_kind Utc
00:16:39 v #16914 > > |> add_days -1
00:16:39 v #16915 > > |> date_time_guid_from_date_time (test_guid ())
00:16:39 v #16916 > > |> sm'.obj_to_string
00:16:39 v #16917 > > |> fun s => s |> _assert_eq $'$"99991230-2359-5999-9999-9{!(s |> sm'.slice 25i32
00:16:39 v #16918 > > 29)}{!suffix}"'
00:16:40 v #16919 > >
00:16:40 v #16920 > > ── [ 367.35ms - stdout ] ───────────────────────────────────────────────────────
00:16:40 v #16921 > > │ __assert_eq / actual: "99991230-2359-5999-9999-900000cba987"
00:16:40 v #16922 > > / expected: "99991230-2359-5999-9999-900000cba987"
00:16:40 v #16923 > > │
00:16:40 v #16924 > >
00:16:40 v #16925 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:40 v #16926 > > //// test
00:16:40 v #16927 > > ///! rust -d chrono
00:16:40 v #16928 > >
00:16:40 v #16929 > > inl suffix = test_guid () |> sm'.obj_to_string |> sm'.range (am'.End fun x => x
00:16:40 v #16930 > > () - 6i32) (am'.End eval)
00:16:40 v #16931 > > max_value ()
00:16:40 v #16932 > > |> specify_date_kind Utc
00:16:40 v #16933 > > |> add_days -1
00:16:40 v #16934 > > |> date_time_guid_from_date_time (test_guid ())
00:16:40 v #16935 > > |> sm'.obj_to_string
00:16:40 v #16936 > > |> fun s => s |> _assert_eq $'$"99991230-2359-5999-9999-0{!(s |> sm'.slice 25i32
00:16:40 v #16937 > > 29)}{!suffix}"'
00:16:46 v #16938 > >
00:16:46 v #16939 > > ── [ 5.96s - return value ] ────────────────────────────────────────────────────
00:16:46 v #16940 > > │ __assert_eq / actual: "99991230-2359-5999-9999-000000cba987"
00:16:46 v #16941 > > / expected: "99991230-2359-5999-9999-000000cba987"
00:16:46 v #16942 > > │
00:16:46 v #16943 > >
00:16:46 v #16944 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:46 v #16945 > > //// test
00:16:46 v #16946 > > ///! fsharp
00:16:46 v #16947 > > ///! rust -d chrono
00:16:46 v #16948 > >
00:16:46 v #16949 > > inl suffix = test_guid () |> sm'.obj_to_string |> sm'.range (am'.End fun x => x
00:16:46 v #16950 > > () - 6i32) (am'.End eval)
00:16:46 v #16951 > > unix_epoch ()
00:16:46 v #16952 > > |> specify_date_kind Utc
00:16:46 v #16953 > > |> add_days 1
00:16:46 v #16954 > > |> date_time_guid_from_date_time (test_guid ())
00:16:46 v #16955 > > |> sm'.obj_to_string
00:16:46 v #16956 > > |> fun s => s |> _assert_eq $'$"19700102-0000-0000-0000-0{!(s |> sm'.slice 25i32
00:16:46 v #16957 > > 29)}{!suffix}"'
00:16:52 v #16958 > >
00:16:52 v #16959 > > ── [ 6.03s - return value ] ────────────────────────────────────────────────────
00:16:52 v #16960 > > │ .rs output (rust -d chrono):
00:16:52 v #16961 > > │ __assert_eq / actual: "19700102-0000-0000-0000-000000cba987"
00:16:52 v #16962 > > / expected: "19700102-0000-0000-0000-000000cba987"
00:16:52 v #16963 > > │
00:16:52 v #16964 > > │
00:16:52 v #16965 > >
00:16:52 v #16966 > > ── [ 6.03s - stdout ] ──────────────────────────────────────────────────────────
00:16:52 v #16967 > > │ .fsx output:
00:16:52 v #16968 > > │ __assert_eq / actual: "19700102-0000-0000-0000-000000cba987"
00:16:52 v #16969 > > / expected: "19700102-0000-0000-0000-000000cba987"
00:16:52 v #16970 > > │
00:16:52 v #16971 > >
00:16:52 v #16972 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:52 v #16973 > > │ ### date_time_from_guid
00:16:52 v #16974 > >
00:16:52 v #16975 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:52 v #16976 > > inl date_time_from_guid (date_time_guid : date_time_guid) =
00:16:52 v #16977 > >     inl date_time_guid = date_time_guid |> sm'.obj_to_string
00:16:52 v #16978 > >     inl sm_replace = sm'.replace "-" ""
00:16:52 v #16979 > >     run_target_args (fun () => sm_replace) function
00:16:52 v #16980 > >         | (Rust _ | TypeScript _) => fun sm_replace =>
00:16:52 v #16981 > >             $'System.DateTime.Parse (!date_time_guid.[[..24]] |> !sm_replace)' :
00:16:52 v #16982 > > date_time
00:16:52 v #16983 > >         | _ => fun sm_replace => $'System.DateTime.ParseExact
00:16:52 v #16984 > > (!date_time_guid.[[..24]] |> !sm_replace, "yyyyMMddHHmmssfffffff", null)' :
00:16:52 v #16985 > > date_time
00:16:52 v #16986 > >
00:16:52 v #16987 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:52 v #16988 > > //// test
00:16:52 v #16989 > >
00:16:52 v #16990 > > date_time_from_guid (guid.new_guid "00010101-0000-0000-0000-0a9876543210")
00:16:52 v #16991 > > |> _assert_eq' (min_value ())
00:16:52 v #16992 > >
00:16:52 v #16993 > > ── [ 166.27ms - stdout ] ───────────────────────────────────────────────────────
00:16:52 v #16994 > > │ __assert_eq' / actual: 01/01/0001 00:00:00 / expected:
00:16:52 v #16995 > > 01/01/0001 00:00:00
00:16:52 v #16996 > > │
00:16:52 v #16997 > >
00:16:52 v #16998 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:52 v #16999 > > //// test
00:16:52 v #17000 > >
00:16:52 v #17001 > > date_time_from_guid (guid.new_guid $'$"99991231-2359-5999-9999-9{(!test_guid ()
00:16:52 v #17002 > > |> string).[[^10..]]}"')
00:16:52 v #17003 > > |> _assert_eq' (max_value ())
00:16:52 v #17004 > >
00:16:52 v #17005 > > ── [ 178.73ms - stdout ] ───────────────────────────────────────────────────────
00:16:52 v #17006 > > │ __assert_eq' / actual: 12/31/9999 23:59:59 / expected:
00:16:52 v #17007 > > 12/31/9999 23:59:59
00:16:52 v #17008 > > │
00:16:52 v #17009 > >
00:16:52 v #17010 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:52 v #17011 > > //// test
00:16:52 v #17012 > >
00:16:52 v #17013 > > date_time_from_guid (guid.new_guid $'$"19700101-0000-0000-0000-0{(!test_guid ()
00:16:52 v #17014 > > |> string).[[^10..]]}"')
00:16:52 v #17015 > > |> _assert_eq' $'System.DateTime.UnixEpoch'
00:16:53 v #17016 > >
00:16:53 v #17017 > > ── [ 189.64ms - stdout ] ───────────────────────────────────────────────────────
00:16:53 v #17018 > > │ __assert_eq' / actual: 01/01/1970 00:00:00 / expected:
00:16:53 v #17019 > > 01/01/1970 00:00:00
00:16:53 v #17020 > > │
00:16:53 v #17021 > >
00:16:53 v #17022 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:53 v #17023 > > │ ### timestamp_guid_from_timestamp
00:16:53 v #17024 > >
00:16:53 v #17025 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:53 v #17026 > > inl timestamp_guid_from_timestamp (guid : guid.guid) (timestamp : timestamp) :
00:16:53 v #17027 > > timestamp_guid =
00:16:53 v #17028 > >     inl guid = guid |> sm'.obj_to_string
00:16:53 v #17029 > >     inl timestamp = timestamp |> sm'.obj_to_string |> sm'.pad_left 18i32 '0'
00:16:53 v #17030 > >     $'`timestamp_guid
00:16:53 v #17031 > > $"{!timestamp.[[0..7]]}-{!timestamp.[[8..11]]}-{!timestamp.[[12..15]]}-{!timesta
00:16:53 v #17032 > > mp.[[16..17]]}{!guid.[[21..]]}"'
00:16:53 v #17033 > >
00:16:53 v #17034 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:53 v #17035 > > //// test
00:16:53 v #17036 > >
00:16:53 v #17037 > > timestamp_guid_from_timestamp (test_guid ()) (0i64 |> convert |> timestamp)
00:16:53 v #17038 > > |> _assert_eq' (guid.new_guid "00000000-0000-0000-0043-210fedcba987")
00:16:53 v #17039 > >
00:16:53 v #17040 > > ── [ 218.24ms - stdout ] ───────────────────────────────────────────────────────
00:16:53 v #17041 > > │ __assert_eq' / actual: 00000000-0000-0000-0043-210fedcba987
00:16:53 v #17042 > > expected: 00000000-0000-0000-0043-210fedcba987
00:16:53 v #17043 > > │
00:16:53 v #17044 > >
00:16:53 v #17045 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:53 v #17046 > > //// test
00:16:53 v #17047 > >
00:16:53 v #17048 > > timestamp_guid_from_timestamp (test_guid ()) (999999999999999999i64 |> convert
00:16:53 v #17049 > > |> timestamp)
00:16:53 v #17050 > > |> _assert_eq' (guid.new_guid $'$"99999999-9999-9999-9943-2{(!test_guid () |>
00:16:53 v #17051 > > string).[[^10..]]}"')
00:16:53 v #17052 > >
00:16:53 v #17053 > > ── [ 187.96ms - stdout ] ───────────────────────────────────────────────────────
00:16:53 v #17054 > > │ __assert_eq' / actual: 99999999-9999-9999-9943-210fedcba987
00:16:53 v #17055 > > expected: 99999999-9999-9999-9943-210fedcba987
00:16:53 v #17056 > > │
00:16:53 v #17057 > >
00:16:53 v #17058 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:53 v #17059 > > │ ### timestamp_from_guid
00:16:53 v #17060 > >
00:16:53 v #17061 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:53 v #17062 > > inl timestamp_from_guid (guid : date_time_guid) : timestamp =
00:16:53 v #17063 > >     inl guid = guid |> sm'.obj_to_string
00:16:53 v #17064 > >     $'`i64
00:16:53 v #17065 > > $"{!guid.[[0..7]]}{!guid.[[9..12]]}{!guid.[[14..17]]}{!guid.[[19..20]]}"'
00:16:53 v #17066 > >
00:16:53 v #17067 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:53 v #17068 > > //// test
00:16:53 v #17069 > >
00:16:53 v #17070 > > timestamp_from_guid (guid.new_guid "00000000-0000-0000-00dc-ba9876543210")
00:16:53 v #17071 > > |> _assert_eq' (0i64 |> convert |> timestamp)
00:16:53 v #17072 > >
00:16:53 v #17073 > > ── [ 167.93ms - stdout ] ───────────────────────────────────────────────────────
00:16:53 v #17074 > > │ __assert_eq' / actual: 0L / expected: 0L
00:16:53 v #17075 > > │
00:16:53 v #17076 > >
00:16:53 v #17077 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:53 v #17078 > > //// test
00:16:53 v #17079 > >
00:16:53 v #17080 > > timestamp_from_guid (guid.new_guid $'$"99999999-9999-9999-99{(!test_guid () |>
00:16:53 v #17081 > > string).[[^14..]]}"')
00:16:53 v #17082 > > |> _assert_eq' (999999999999999999i64 |> convert |> timestamp)
00:16:54 v #17083 > >
00:16:54 v #17084 > > ── [ 184.04ms - stdout ] ───────────────────────────────────────────────────────
00:16:54 v #17085 > > │ __assert_eq' / actual: 999999999999999999L / expected:
00:16:54 v #17086 > > 999999999999999999L
00:16:54 v #17087 > > │
00:16:54 v #17088 > >
00:16:54 v #17089 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:54 v #17090 > > │ ### new_guid_from_date_time
00:16:54 v #17091 > >
00:16:54 v #17092 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:54 v #17093 > > inl new_guid_from_date_time (date_time : date_time) =
00:16:54 v #17094 > >     inl guid = guid.new_raw_guid ()
00:16:54 v #17095 > >     date_time_guid_from_date_time guid date_time
00:16:54 v #17096 > >
00:16:54 v #17097 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:54 v #17098 > > //// test
00:16:54 v #17099 > >
00:16:54 v #17100 > > utc_now ()
00:16:54 v #17101 > > |> new_guid_from_date_time
00:16:54 v #17102 > > |> date_time_from_guid
00:16:54 v #17103 > > |> fun date_time => new_time_span date_time (utc_now ()) |> total_seconds |> i32
00:16:54 v #17104 > > |> _assert_eq 0
00:16:54 v #17105 > >
00:16:54 v #17106 > > ── [ 350.79ms - stdout ] ───────────────────────────────────────────────────────
00:16:54 v #17107 > > │ __assert_eq / actual: 0 / expected: 0
00:16:54 v #17108 > > │
00:16:54 v #17109 > >
00:16:54 v #17110 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:54 v #17111 > > │ ### new_guid_from_timestamp
00:16:54 v #17112 > >
00:16:54 v #17113 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:54 v #17114 > > inl new_guid_from_timestamp (timestamp : timestamp) =
00:16:54 v #17115 > >     inl guid = guid.new_raw_guid ()
00:16:54 v #17116 > >     timestamp_guid_from_timestamp guid timestamp
00:16:54 v #17117 > >
00:16:54 v #17118 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:54 v #17119 > > //// test
00:16:54 v #17120 > >
00:16:54 v #17121 > > utc_now ()
00:16:54 v #17122 > > |> ticks
00:16:54 v #17123 > > |> new_guid_from_timestamp
00:16:54 v #17124 > > |> timestamp_from_guid
00:16:54 v #17125 > > |> fun (timestamp t) => (convert t - (utc_now () |> ticks |> fun (timestamp x)
00:16:54 v #17126 > > => convert x)) / 100000i64
00:16:54 v #17127 > > |> _assert_eq 0i64
00:16:54 v #17128 > >
00:16:54 v #17129 > > ── [ 185.76ms - stdout ] ───────────────────────────────────────────────────────
00:16:54 v #17130 > > │ __assert_eq / actual: 0L / expected: 0L
00:16:54 v #17131 > > │
00:16:54 v #17132 > >
00:16:54 v #17133 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:54 v #17134 > > │ ## main
00:16:54 v #17135 > >
00:16:54 v #17136 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:54 v #17137 > > inl main () =
00:16:54 v #17138 > >     $'let date_time_guid_from_date_time x = !date_time_guid_from_date_time x' :
00:16:54 v #17139 > > ()
00:16:54 v #17140 > >     $'let date_time_from_guid x = !date_time_from_guid x' : ()
00:16:54 v #17141 > >     $'let timestamp_guid_from_timestamp x = !timestamp_guid_from_timestamp x' :
00:16:54 v #17142 > > ()
00:16:54 v #17143 > >     $'let timestamp_from_guid x = !timestamp_from_guid x' : ()
00:16:54 v #17144 > >     $'let new_guid_from_date_time x = !new_guid_from_date_time x' : ()
00:16:54 v #17145 > >     $'let new_guid_from_timestamp x = !new_guid_from_timestamp x' : ()
00:16:54 v #17146 > >     $'let format x = !format x' : ()
00:16:54 v #17147 > >     $'let format_iso8601 x = !format_iso8601 x' : ()
00:16:55 v #17148 > 00:01:21 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 50146 }
00:16:55 v #17149 > 00:01:21 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/date_time.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/date_time.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:16:56 v #17150 > 00:01:21 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/date_time.dib.ipynb to html
00:16:56 v #17151 > 00:01:21 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:16:56 v #17152 > 00:01:21 v #7 !   validate(nb)
00:16:56 v #17153 > 00:01:22 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:16:56 v #17154 > 00:01:22 v #9 !   return _pygments_highlight(
00:16:57 v #17155 > 00:01:23 v #10 ! [NbConvertApp] Writing 452301 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/date_time.dib.html
00:16:57 v #17156 > 00:01:23 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 902 }
00:16:57 v #17157 > 00:01:23 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 902 }
00:16:57 v #17158 > 00:01:23 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/date_time.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/date_time.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:16:57 v #17159 > 00:01:23 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:16:57 v #17160 > 00:01:23 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:16:57 v #17161 > 00:01:23 d #16 spiral.run / dib / { exit_code = 0; result_length = 51107 }
00:16:57 d #17162 runtime.execute_with_options_async / { exit_code = 0; output_length = 56357 }
00:16:57 d #20 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path date_time.dib --retries 3
00:16:57 d #17163 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path math.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path math.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:16:57 v #17164 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "math.dib", "--retries", "3"])) }
00:16:57 v #17165 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/math.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/math.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/math.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/math.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:16:58 v #17166 > >
00:16:58 v #17167 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:58 v #17168 > > │ # math
00:17:01 v #17169 > >
00:17:01 v #17170 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:01 v #17171 > > //// test
00:17:01 v #17172 > >
00:17:01 v #17173 > > open testing
00:17:01 v #17174 > >
00:17:01 v #17175 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:01 v #17176 > > │ ## math
00:17:01 v #17177 > >
00:17:01 v #17178 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:01 v #17179 > > │ ### e
00:17:01 v #17180 > >
00:17:01 v #17181 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:01 v #17182 > > inl e () =
00:17:01 v #17183 > >     exp 1f64
00:17:01 v #17184 > >
00:17:01 v #17185 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:01 v #17186 > > │ ## square
00:17:01 v #17187 > >
00:17:01 v #17188 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:01 v #17189 > > inl square x =
00:17:01 v #17190 > >     x ** 2
00:17:02 v #17191 > >
00:17:02 v #17192 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:02 v #17193 > > //// test
00:17:02 v #17194 > >
00:17:02 v #17195 > > 5f64
00:17:02 v #17196 > > |> sqrt
00:17:02 v #17197 > > |> square
00:17:02 v #17198 > > |> _assert_approx_eq None 5
00:17:02 v #17199 > >
00:17:02 v #17200 > > ── [ 519.69ms - stdout ] ───────────────────────────────────────────────────────
00:17:02 v #17201 > > │ __assert_approx_eq / actual: 5.0 / expected: 5.0
00:17:02 v #17202 > > │
00:17:02 v #17203 > >
00:17:02 v #17204 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:02 v #17205 > > //// test
00:17:02 v #17206 > >
00:17:02 v #17207 > > e () |> square
00:17:02 v #17208 > > |> _assert_approx_eq None 7.3890560989306495
00:17:02 v #17209 > >
00:17:02 v #17210 > > ── [ 165.42ms - stdout ] ───────────────────────────────────────────────────────
00:17:02 v #17211 > > │ __assert_approx_eq / actual: 7.389056099 / expected:
00:17:02 v #17212 > > 7.389056099
00:17:02 v #17213 > > │
00:17:02 v #17214 > >
00:17:02 v #17215 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:02 v #17216 > > //// test
00:17:02 v #17217 > >
00:17:02 v #17218 > > 2 * 2 / 0.4f64 |> sqrt
00:17:02 v #17219 > > |> _assert_approx_eq None 3.1622776601683795
00:17:02 v #17220 > >
00:17:02 v #17221 > > ── [ 154.93ms - stdout ] ───────────────────────────────────────────────────────
00:17:02 v #17222 > > │ __assert_approx_eq / actual: 3.16227766 / expected:
00:17:02 v #17223 > > 3.16227766
00:17:02 v #17224 > > │
00:17:02 v #17225 > >
00:17:02 v #17226 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:02 v #17227 > > //// test
00:17:02 v #17228 > >
00:17:02 v #17229 > > 2f64 / 3
00:17:02 v #17230 > > |> _assert_approx_eq None 0.6666666666666666
00:17:03 v #17231 > >
00:17:03 v #17232 > > ── [ 174.10ms - stdout ] ───────────────────────────────────────────────────────
00:17:03 v #17233 > > │ __assert_approx_eq / actual: 0.6666666667 / expected:
00:17:03 v #17234 > > 0.6666666667
00:17:03 v #17235 > > │
00:17:03 v #17236 > >
00:17:03 v #17237 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:03 v #17238 > > //// test
00:17:03 v #17239 > >
00:17:03 v #17240 > > 2f64 |> log
00:17:03 v #17241 > > |> _assert_approx_eq None 0.6931471805599453
00:17:03 v #17242 > >
00:17:03 v #17243 > > ── [ 178.85ms - stdout ] ───────────────────────────────────────────────────────
00:17:03 v #17244 > > │ __assert_approx_eq / actual: 0.6931471806 / expected:
00:17:03 v #17245 > > 0.6931471806
00:17:03 v #17246 > > │
00:17:03 v #17247 > >
00:17:03 v #17248 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:03 v #17249 > > //// test
00:17:03 v #17250 > >
00:17:03 v #17251 > > pi
00:17:03 v #17252 > > |> _assert_approx_eq None 3.141592653589793f64
00:17:03 v #17253 > >
00:17:03 v #17254 > > ── [ 151.91ms - stdout ] ───────────────────────────────────────────────────────
00:17:03 v #17255 > > │ __assert_approx_eq / actual: 3.141592654 / expected:
00:17:03 v #17256 > > 3.141592654
00:17:03 v #17257 > > │
00:17:03 v #17258 > >
00:17:03 v #17259 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:03 v #17260 > > //// test
00:17:03 v #17261 > >
00:17:03 v #17262 > > pi |> cos
00:17:03 v #17263 > > |> _assert_eq -1f64
00:17:03 v #17264 > >
00:17:03 v #17265 > > ── [ 156.30ms - stdout ] ───────────────────────────────────────────────────────
00:17:03 v #17266 > > │ __assert_eq / actual: -1.0 / expected: -1.0
00:17:03 v #17267 > > │
00:17:03 v #17268 > >
00:17:03 v #17269 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:03 v #17270 > > //// test
00:17:03 v #17271 > >
00:17:03 v #17272 > > pi
00:17:03 v #17273 > > |> cos
00:17:03 v #17274 > > |> fun n => n / 2f64
00:17:03 v #17275 > > |> _assert_approx_eq None -0.5
00:17:03 v #17276 > >
00:17:03 v #17277 > > ── [ 151.60ms - stdout ] ───────────────────────────────────────────────────────
00:17:03 v #17278 > > │ __assert_approx_eq / actual: -0.5 / expected: -0.5
00:17:03 v #17279 > > │
00:17:03 v #17280 > >
00:17:03 v #17281 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:03 v #17282 > > //// test
00:17:03 v #17283 > >
00:17:03 v #17284 > > pi / 2 |> cos
00:17:03 v #17285 > > |> _assert_approx_eq None 0.00000000000000006123233995736766f64
00:17:03 v #17286 > >
00:17:03 v #17287 > > ── [ 161.73ms - stdout ] ───────────────────────────────────────────────────────
00:17:03 v #17288 > > │ __assert_approx_eq / actual: 6.123233996e-17 / expected:
00:17:03 v #17289 > > 6.123233996e-17
00:17:03 v #17290 > > │
00:17:03 v #17291 > >
00:17:03 v #17292 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:03 v #17293 > > │ ## fsharp
00:17:03 v #17294 > >
00:17:03 v #17295 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:03 v #17296 > > │ ### atan2
00:17:03 v #17297 > >
00:17:03 v #17298 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:03 v #17299 > > inl atan2 (y : f64) (x : f64) : f64 =
00:17:03 v #17300 > >     $'System.Math.Atan2 (!y, !x)'
00:17:04 v #17301 > >
00:17:04 v #17302 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:04 v #17303 > > //// test
00:17:04 v #17304 > >
00:17:04 v #17305 > > 0 |> atan2 1
00:17:04 v #17306 > > |> _assert_eq 1.5707963267948966
00:17:04 v #17307 > >
00:17:04 v #17308 > > ── [ 242.91ms - stdout ] ───────────────────────────────────────────────────────
00:17:04 v #17309 > > │ __assert_eq / actual: 1.570796327 / expected: 1.570796327
00:17:04 v #17310 > > │
00:17:04 v #17311 > >
00:17:04 v #17312 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:04 v #17313 > > │ ## floor
00:17:04 v #17314 > >
00:17:04 v #17315 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:04 v #17316 > > inl floor forall t {float}. (n : t) : t =
00:17:04 v #17317 > >     n |> $'floor'
00:17:04 v #17318 > >
00:17:04 v #17319 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:04 v #17320 > > //// test
00:17:04 v #17321 > >
00:17:04 v #17322 > > 0.6 |> floor
00:17:04 v #17323 > > |> _assert_eq 0f64
00:17:04 v #17324 > >
00:17:04 v #17325 > > ── [ 159.64ms - stdout ] ───────────────────────────────────────────────────────
00:17:04 v #17326 > > │ __assert_eq / actual: 0.0 / expected: 0.0
00:17:04 v #17327 > > │
00:17:04 v #17328 > >
00:17:04 v #17329 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:04 v #17330 > > │ ## ceil
00:17:04 v #17331 > >
00:17:04 v #17332 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:04 v #17333 > > inl ceil forall t {float}. (n : t) : t =
00:17:04 v #17334 > >     n |> $'ceil'
00:17:04 v #17335 > >
00:17:04 v #17336 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:04 v #17337 > > //// test
00:17:04 v #17338 > >
00:17:04 v #17339 > > 0.6 |> ceil
00:17:04 v #17340 > > |> _assert_eq 1f64
00:17:04 v #17341 > >
00:17:04 v #17342 > > ── [ 167.45ms - stdout ] ───────────────────────────────────────────────────────
00:17:04 v #17343 > > │ __assert_eq / actual: 1.0 / expected: 1.0
00:17:04 v #17344 > > │
00:17:04 v #17345 > >
00:17:04 v #17346 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:04 v #17347 > > │ ## round
00:17:04 v #17348 > >
00:17:04 v #17349 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:04 v #17350 > > inl round forall t {float}. (n : t) : t =
00:17:04 v #17351 > >     n |> $'round'
00:17:05 v #17352 > >
00:17:05 v #17353 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:05 v #17354 > > //// test
00:17:05 v #17355 > >
00:17:05 v #17356 > > 0.5 |> round
00:17:05 v #17357 > > |> _assert_eq 0f64
00:17:05 v #17358 > >
00:17:05 v #17359 > > 1.5 |> round
00:17:05 v #17360 > > |> _assert_eq 2f64
00:17:05 v #17361 > >
00:17:05 v #17362 > > 2.5 |> round
00:17:05 v #17363 > > |> _assert_eq 2f64
00:17:05 v #17364 > >
00:17:05 v #17365 > > 3.5 |> round
00:17:05 v #17366 > > |> _assert_eq 4f64
00:17:05 v #17367 > >
00:17:05 v #17368 > > ── [ 191.98ms - stdout ] ───────────────────────────────────────────────────────
00:17:05 v #17369 > > │ __assert_eq / actual: 0.0 / expected: 0.0
00:17:05 v #17370 > > │ __assert_eq / actual: 2.0 / expected: 2.0
00:17:05 v #17371 > > │ __assert_eq / actual: 2.0 / expected: 2.0
00:17:05 v #17372 > > │ __assert_eq / actual: 4.0 / expected: 4.0
00:17:05 v #17373 > > │
00:17:05 v #17374 > >
00:17:05 v #17375 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:05 v #17376 > > │ ## log_base
00:17:05 v #17377 > >
00:17:05 v #17378 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:05 v #17379 > > inl log_base (new_base : f64) (a : f64) : f64 =
00:17:05 v #17380 > >     $'System.Math.Log (!a, !new_base)'
00:17:05 v #17381 > >
00:17:05 v #17382 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:05 v #17383 > > //// test
00:17:05 v #17384 > >
00:17:05 v #17385 > > 100 |> log_base 10
00:17:05 v #17386 > > |> _assert_eq 2
00:17:05 v #17387 > >
00:17:05 v #17388 > > ── [ 167.58ms - stdout ] ───────────────────────────────────────────────────────
00:17:05 v #17389 > > │ __assert_eq / actual: 2.0 / expected: 2.0
00:17:05 v #17390 > > │
00:17:05 v #17391 > >
00:17:05 v #17392 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:05 v #17393 > > │ ## round
00:17:05 v #17394 > >
00:17:05 v #17395 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:05 v #17396 > > inl round forall t {float}. (x : t) : t =
00:17:05 v #17397 > >     x |> $'round'
00:17:05 v #17398 > >
00:17:05 v #17399 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:05 v #17400 > > //// test
00:17:05 v #17401 > >
00:17:05 v #17402 > > 0.5 |> round
00:17:05 v #17403 > > |> _assert_eq 0f64
00:17:05 v #17404 > >
00:17:05 v #17405 > > ── [ 160.43ms - stdout ] ───────────────────────────────────────────────────────
00:17:05 v #17406 > > │ __assert_eq / actual: 0.0 / expected: 0.0
00:17:05 v #17407 > > │
00:17:05 v #17408 > >
00:17:05 v #17409 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:05 v #17410 > > //// test
00:17:05 v #17411 > >
00:17:05 v #17412 > > 0.6 |> round
00:17:05 v #17413 > > |> _assert_eq 1f64
00:17:06 v #17414 > >
00:17:06 v #17415 > > ── [ 168.70ms - stdout ] ───────────────────────────────────────────────────────
00:17:06 v #17416 > > │ __assert_eq / actual: 1.0 / expected: 1.0
00:17:06 v #17417 > > │
00:17:06 v #17418 > 00:00:08 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 8687 }
00:17:06 v #17419 > 00:00:08 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/math.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/math.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:17:06 v #17420 > 00:00:09 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/math.dib.ipynb to html
00:17:06 v #17421 > 00:00:09 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:17:06 v #17422 > 00:00:09 v #7 !   validate(nb)
00:17:07 v #17423 > 00:00:09 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:17:07 v #17424 > 00:00:09 v #9 !   return _pygments_highlight(
00:17:07 v #17425 > 00:00:09 v #10 ! [NbConvertApp] Writing 304861 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/math.dib.html
00:17:07 v #17426 > 00:00:09 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 892 }
00:17:07 v #17427 > 00:00:09 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 892 }
00:17:07 v #17428 > 00:00:09 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/math.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/math.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:17:07 v #17429 > 00:00:10 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:17:07 v #17430 > 00:00:10 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:17:07 v #17431 > 00:00:10 d #16 spiral.run / dib / { exit_code = 0; result_length = 9638 }
00:17:07 d #17432 runtime.execute_with_options_async / { exit_code = 0; output_length = 12777 }
00:17:07 d #21 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path math.dib --retries 3
00:17:07 d #17433 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path mapm.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path mapm.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:17:07 v #17434 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "mapm.dib", "--retries", "3"])) }
00:17:07 v #17435 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/mapm.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/mapm.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/mapm.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/mapm.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:17:09 v #17436 > >
00:17:09 v #17437 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:09 v #17438 > > │ # mapm
00:17:11 v #17439 > >
00:17:11 v #17440 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:11 v #17441 > > open rust.rust_operators
00:17:12 v #17442 > >
00:17:12 v #17443 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:12 v #17444 > > │ ## rust
00:17:12 v #17445 > >
00:17:12 v #17446 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:12 v #17447 > > │ ### hash_map
00:17:12 v #17448 > >
00:17:12 v #17449 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:12 v #17450 > > nominal hash_map k v =
00:17:12 v #17451 > >     `(
00:17:12 v #17452 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:17:12 v #17453 > > Fable.Core.Emit(\"std::collections::HashMap<$0, $1>\")>]]\n#endif\ntype
00:17:12 v #17454 > > std_collections_HashMap<'K, 'V> = class end"
00:17:12 v #17455 > >         $'' : $'std_collections_HashMap<`k, `v>'
00:17:12 v #17456 > >     )
00:17:12 v #17457 > >
00:17:12 v #17458 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:12 v #17459 > > │ ### b_tree_map
00:17:12 v #17460 > >
00:17:12 v #17461 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:12 v #17462 > > nominal b_tree_map k v =
00:17:12 v #17463 > >     `(
00:17:12 v #17464 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:17:12 v #17465 > > Fable.Core.Emit(\"std::collections::BTreeMap<$0, $1>\")>]]\n#endif\ntype
00:17:12 v #17466 > > std_collections_BTreeMap<'K, 'V> = class end"
00:17:12 v #17467 > >         $'' : $'std_collections_BTreeMap<`k, `v>'
00:17:12 v #17468 > >     )
00:17:12 v #17469 > >
00:17:12 v #17470 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:12 v #17471 > > │ ### new_hash_map
00:17:12 v #17472 > >
00:17:12 v #17473 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:12 v #17474 > > inl new_hash_map () : hash_map _ _ =
00:17:12 v #17475 > >     !\($'"std::collections::HashMap::new()"')
00:17:12 v #17476 > >
00:17:12 v #17477 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:12 v #17478 > > │ ### new_b_tree_map
00:17:12 v #17479 > >
00:17:12 v #17480 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:12 v #17481 > > inl new_b_tree_map () : b_tree_map _ _ =
00:17:12 v #17482 > >     !\($'"std::collections::BTreeMap::new()"')
00:17:12 v #17483 > >
00:17:12 v #17484 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:12 v #17485 > > │ ### get
00:17:12 v #17486 > >
00:17:12 v #17487 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:12 v #17488 > > inl get forall k v. (key : k) (map : hash_map k v) : optionm'.option' v =
00:17:12 v #17489 > >     inl key = join key
00:17:12 v #17490 > >     !\\(map, $'"std::collections::HashMap::get(&$0, &!key).map(|x|
00:17:12 v #17491 > > x).cloned()"')
00:17:12 v #17492 > >
00:17:12 v #17493 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:12 v #17494 > > │ ### insert
00:17:12 v #17495 > >
00:17:12 v #17496 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:12 v #17497 > > inl insert forall k v. (key : k) (value : v) (map : hash_map k v) :
00:17:12 v #17498 > > optionm'.option' v =
00:17:12 v #17499 > >     inl key = join key
00:17:12 v #17500 > >     !\($'"let mut !map = !map"')
00:17:12 v #17501 > >     !\($'"std::collections::HashMap::insert(&mut !map, !key, !value)"')
00:17:13 v #17502 > >
00:17:13 v #17503 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:13 v #17504 > > │ ### map'
00:17:13 v #17505 > >
00:17:13 v #17506 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:13 v #17507 > > inl map' forall k v w. (fn : v -> w) (map : hash_map k v) : hash_map k w =
00:17:13 v #17508 > >     !\\((map, fn), $'"$0.into_iter().map(|(k, v)| (k, $1(v))).collect()"')
00:17:13 v #17509 > >
00:17:13 v #17510 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:13 v #17511 > > │ ### hash_map_count
00:17:13 v #17512 > >
00:17:13 v #17513 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:13 v #17514 > > inl hash_map_count forall k v. (map : hash_map k v) : i32 =
00:17:13 v #17515 > >     !\\(map, $'"$0.count()"')
00:17:13 v #17516 > >
00:17:13 v #17517 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:13 v #17518 > > │ ### from_vec
00:17:13 v #17519 > >
00:17:13 v #17520 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:13 v #17521 > > inl from_vec forall k v. (vec : am'.vec (k * v)) : hash_map k v =
00:17:13 v #17522 > >     !\($'"std::collections::HashMap::from_iter(!vec)"')
00:17:13 v #17523 > >
00:17:13 v #17524 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:13 v #17525 > > │ ### from_vec_pairs
00:17:13 v #17526 > >
00:17:13 v #17527 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:13 v #17528 > > inl from_vec_pairs forall k v. (vec : am'.vec (pair k v)) : hash_map k v =
00:17:13 v #17529 > >     !\($'"std::collections::HashMap::from_iter(!vec.iter().map(|x|
00:17:13 v #17530 > > x.as_ref()).map(|&(ref k, ref v)| (k.clone(), v.clone())))"')
00:17:13 v #17531 > >
00:17:13 v #17532 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:13 v #17533 > > │ ### b_tree_map_from_vec_pairs
00:17:13 v #17534 > >
00:17:13 v #17535 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:13 v #17536 > > inl b_tree_map_from_vec_pairs forall k v. (vec : am'.vec (pair k v)) :
00:17:13 v #17537 > > b_tree_map k v =
00:17:13 v #17538 > >     !\($'"std::collections::BTreeMap::from_iter(!vec.iter().map(|x|
00:17:13 v #17539 > > x.as_ref()).map(|&(ref k, ref v)| (k.clone(), v.clone())))"')
00:17:13 v #17540 > >
00:17:13 v #17541 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:13 v #17542 > > │ ### from_array
00:17:13 v #17543 > >
00:17:13 v #17544 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:13 v #17545 > > inl from_array forall k v. (array : array_base (k * v)) : hash_map k v =
00:17:13 v #17546 > >     array |> am'.to_vec |> from_vec
00:17:13 v #17547 > >
00:17:13 v #17548 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:13 v #17549 > > │ ### from_list
00:17:13 v #17550 > >
00:17:13 v #17551 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:13 v #17552 > > inl from_list forall k v. (list : list (k * v)) : hash_map k v =
00:17:13 v #17553 > >     inl (a list) : _ i32 _ = list |> listm.toArray
00:17:13 v #17554 > >     list |> am'.to_vec |> from_vec
00:17:14 v #17555 > >
00:17:14 v #17556 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:14 v #17557 > > │ ### to_vec
00:17:14 v #17558 > >
00:17:14 v #17559 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:14 v #17560 > > inl to_vec forall k v. (map : hash_map k v) : am'.vec (k * v) =
00:17:14 v #17561 > >     !\\(map, $'"$0.into_iter().map(|(k, v)| (k, v)).collect::<Vec<_>>()"')
00:17:14 v #17562 > >
00:17:14 v #17563 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:14 v #17564 > > │ ## fsharp
00:17:14 v #17565 > >
00:17:14 v #17566 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:14 v #17567 > > │ ### map
00:17:14 v #17568 > >
00:17:14 v #17569 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:14 v #17570 > > nominal map k v = $'Map<`k, `v>'
00:17:14 v #17571 > >
00:17:14 v #17572 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:14 v #17573 > > │ ### item
00:17:14 v #17574 > >
00:17:14 v #17575 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:14 v #17576 > > inl item forall k v. (k : k) (map : map k v) : v =
00:17:14 v #17577 > >     $'!map.[[!k]]'
00:17:14 v #17578 > >
00:17:14 v #17579 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:14 v #17580 > > │ ### of_array
00:17:14 v #17581 > >
00:17:14 v #17582 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:14 v #17583 > > inl of_array forall k v. (array : a _ (k * v)) : map k v =
00:17:14 v #17584 > >     $'!array |> Array.map (fun (struct (a, b)) -> a, b) |> Map.ofArray'
00:17:14 v #17585 > 00:00:07 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 6994 }
00:17:14 v #17586 > 00:00:07 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/mapm.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/mapm.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:17:15 v #17587 > 00:00:07 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/mapm.dib.ipynb to html
00:17:15 v #17588 > 00:00:07 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:17:15 v #17589 > 00:00:07 v #7 !   validate(nb)
00:17:15 v #17590 > 00:00:08 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:17:15 v #17591 > 00:00:08 v #9 !   return _pygments_highlight(
00:17:16 v #17592 > 00:00:08 v #10 ! [NbConvertApp] Writing 301410 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/mapm.dib.html
00:17:16 v #17593 > 00:00:08 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 892 }
00:17:16 v #17594 > 00:00:08 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 892 }
00:17:16 v #17595 > 00:00:08 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/mapm.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/mapm.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:17:16 v #17596 > 00:00:08 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:17:16 v #17597 > 00:00:08 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:17:16 v #17598 > 00:00:08 d #16 spiral.run / dib / { exit_code = 0; result_length = 7945 }
00:17:16 d #17599 runtime.execute_with_options_async / { exit_code = 0; output_length = 10878 }
00:17:16 d #22 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path mapm.dib --retries 3
00:17:16 d #17600 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path optionm'.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path optionm'.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:17:16 v #17601 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "optionm'.dib", "--retries", "3"])) }
00:17:16 v #17602 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/optionm'.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/optionm'.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/optionm'.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/optionm'.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:17:17 v #17603 > >
00:17:17 v #17604 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:17 v #17605 > > │ # optionm'
00:17:19 v #17606 > >
00:17:19 v #17607 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:19 v #17608 > > open rust
00:17:19 v #17609 > > open rust_operators
00:17:20 v #17610 > >
00:17:20 v #17611 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:20 v #17612 > > //// test
00:17:20 v #17613 > >
00:17:20 v #17614 > > open testing
00:17:20 v #17615 > >
00:17:20 v #17616 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:20 v #17617 > > │ ## optionm'
00:17:20 v #17618 > >
00:17:20 v #17619 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:20 v #17620 > > │ ### default_value
00:17:20 v #17621 > >
00:17:20 v #17622 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:20 v #17623 > > inl default_value d =
00:17:20 v #17624 > >     optionm.defaultWith d
00:17:20 v #17625 > >
00:17:20 v #17626 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:20 v #17627 > > //// test
00:17:20 v #17628 > >
00:17:20 v #17629 > > None
00:17:20 v #17630 > > |> default_value 3i32
00:17:20 v #17631 > > |> _assert_eq 3i32
00:17:21 v #17632 > >
00:17:21 v #17633 > > ── [ 549.02ms - stdout ] ───────────────────────────────────────────────────────
00:17:21 v #17634 > > │ __assert_eq / actual: 3 / expected: 3
00:17:21 v #17635 > > │
00:17:21 v #17636 > >
00:17:21 v #17637 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:21 v #17638 > > │ ### (/??)
00:17:21 v #17639 > >
00:17:21 v #17640 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:21 v #17641 > > inl (/??) a b =
00:17:21 v #17642 > >     a |> default_value b
00:17:21 v #17643 > >
00:17:21 v #17644 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:21 v #17645 > > //// test
00:17:21 v #17646 > >
00:17:21 v #17647 > > None /?? 3i32
00:17:21 v #17648 > > |> _assert_eq 3i32
00:17:21 v #17649 > >
00:17:21 v #17650 > > ── [ 163.82ms - stdout ] ───────────────────────────────────────────────────────
00:17:21 v #17651 > > │ __assert_eq / actual: 3 / expected: 3
00:17:21 v #17652 > > │
00:17:21 v #17653 > >
00:17:21 v #17654 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:21 v #17655 > > │ ### default_with
00:17:21 v #17656 > >
00:17:21 v #17657 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:21 v #17658 > > inl default_with fn = function
00:17:21 v #17659 > >     | Some x => x
00:17:21 v #17660 > >     | None => fn ()
00:17:21 v #17661 > >
00:17:21 v #17662 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:21 v #17663 > > //// test
00:17:21 v #17664 > >
00:17:21 v #17665 > > None
00:17:21 v #17666 > > |> default_with fun () => 3i32
00:17:21 v #17667 > > |> _assert_eq 3i32
00:17:22 v #17668 > >
00:17:22 v #17669 > > ── [ 157.15ms - stdout ] ───────────────────────────────────────────────────────
00:17:22 v #17670 > > │ __assert_eq / actual: 3 / expected: 3
00:17:22 v #17671 > > │
00:17:22 v #17672 > >
00:17:22 v #17673 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:22 v #17674 > > │ ### choose
00:17:22 v #17675 > >
00:17:22 v #17676 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:22 v #17677 > > inl choose fn a b =
00:17:22 v #17678 > >     match a, b with
00:17:22 v #17679 > >     | Some x, Some y => fn x y |> Some
00:17:22 v #17680 > >     | _ => None
00:17:22 v #17681 > >
00:17:22 v #17682 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:22 v #17683 > > //// test
00:17:22 v #17684 > >
00:17:22 v #17685 > > (Some 2i32, Some 3)
00:17:22 v #17686 > > ||> choose (+)
00:17:22 v #17687 > > |> _assert_eq (Some 5)
00:17:22 v #17688 > >
00:17:22 v #17689 > > ── [ 469.78ms - stdout ] ───────────────────────────────────────────────────────
00:17:22 v #17690 > > │ __assert_eq / actual: US0_0 5 / expected: US0_0 5
00:17:22 v #17691 > > │
00:17:22 v #17692 > >
00:17:22 v #17693 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:22 v #17694 > > │ ### iter
00:17:22 v #17695 > >
00:17:22 v #17696 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:22 v #17697 > > inl iter fn = function
00:17:22 v #17698 > >     | Some x => fn x
00:17:22 v #17699 > >     | None => ()
00:17:22 v #17700 > >
00:17:22 v #17701 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:22 v #17702 > > //// test
00:17:22 v #17703 > >
00:17:22 v #17704 > > inl n = mut 1i32
00:17:22 v #17705 > > inl fn =
00:17:22 v #17706 > >     fun n' =>
00:17:22 v #17707 > >         n <- *n + n'
00:17:22 v #17708 > > Some 1i32 |> iter fn
00:17:22 v #17709 > > None |> iter fn
00:17:22 v #17710 > > *n
00:17:22 v #17711 > > |> _assert_eq 2i32
00:17:23 v #17712 > >
00:17:23 v #17713 > > ── [ 260.00ms - stdout ] ───────────────────────────────────────────────────────
00:17:23 v #17714 > > │ __assert_eq / actual: 2 / expected: 2
00:17:23 v #17715 > > │
00:17:23 v #17716 > >
00:17:23 v #17717 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:23 v #17718 > > │ ### flatten
00:17:23 v #17719 > >
00:17:23 v #17720 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:23 v #17721 > > inl flatten x =
00:17:23 v #17722 > >     match x with
00:17:23 v #17723 > >     | Some (Some x) => Some x
00:17:23 v #17724 > >     | _ => None
00:17:23 v #17725 > >
00:17:23 v #17726 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:23 v #17727 > > │ ## fsharp
00:17:23 v #17728 > >
00:17:23 v #17729 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:23 v #17730 > > │ ### option'
00:17:23 v #17731 > >
00:17:23 v #17732 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:23 v #17733 > > nominal option' t = $"backend_switch `({ Fsharp : $"`t option"; Python : t })"
00:17:23 v #17734 > >
00:17:23 v #17735 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:23 v #17736 > > │ ### none'
00:17:23 v #17737 > >
00:17:23 v #17738 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:23 v #17739 > > inl none' forall t. () : option' t =
00:17:23 v #17740 > >     $'None'
00:17:23 v #17741 > >
00:17:23 v #17742 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:23 v #17743 > > │ ### some'
00:17:23 v #17744 > >
00:17:23 v #17745 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:23 v #17746 > > inl some' forall t. (x : t) : option' t =
00:17:23 v #17747 > >     backend_switch {
00:17:23 v #17748 > >         Fsharp = fun () => $'Some !x ' : option' t
00:17:23 v #17749 > >         Python = fun () => $'!x # some\' ' : option' t
00:17:23 v #17750 > >     }
00:17:23 v #17751 > >
00:17:23 v #17752 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:23 v #17753 > > │ ### default_value'
00:17:23 v #17754 > >
00:17:23 v #17755 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:23 v #17756 > > inl default_value' forall t. (value : t) (x : option' t) : t =
00:17:23 v #17757 > >     backend_switch {
00:17:23 v #17758 > >         Fsharp = fun () => $'!x |> Option.defaultValue !value ' : t
00:17:23 v #17759 > >         Python = fun () => $'!x or !value ' : t
00:17:23 v #17760 > >     }
00:17:23 v #17761 > >
00:17:23 v #17762 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:23 v #17763 > > │ ### value'
00:17:23 v #17764 > >
00:17:23 v #17765 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:23 v #17766 > > inl value' forall t. (x : option' t) : t =
00:17:23 v #17767 > >     backend_switch {
00:17:23 v #17768 > >         Fsharp = fun () => $'!x |> Option.value' : t
00:17:23 v #17769 > >         Python = fun () => $'!x ' : t
00:17:23 v #17770 > >     }
00:17:24 v #17771 > >
00:17:24 v #17772 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:24 v #17773 > > │ ### box
00:17:24 v #17774 > >
00:17:24 v #17775 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:24 v #17776 > > inl box forall t. (x : option t) : option' t =
00:17:24 v #17777 > >     // x
00:17:24 v #17778 > >     // |> optionm.map some'
00:17:24 v #17779 > >     // |> default_with none'
00:17:24 v #17780 > >     match x with
00:17:24 v #17781 > >     | Some x => some' x
00:17:24 v #17782 > >     | None => none' ()
00:17:24 v #17783 > >
00:17:24 v #17784 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:24 v #17785 > > │ ### map
00:17:24 v #17786 > >
00:17:24 v #17787 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:24 v #17788 > > inl map forall t u. (fn : t -> u) (x : option' t) : option' u =
00:17:24 v #17789 > >     inl x_ () =
00:17:24 v #17790 > >         backend_switch {
00:17:24 v #17791 > >             Fsharp = fun () =>
00:17:24 v #17792 > >                 inl result : mut (option' u) = none' () |> mut
00:17:24 v #17793 > >                 inl set_result x =
00:17:24 v #17794 > >                     result <- x
00:17:24 v #17795 > >                 inl get_result () =
00:17:24 v #17796 > >                     *result
00:17:24 v #17797 > >                 $'match !x with'
00:17:24 v #17798 > >                 $'| Some x -> ('
00:17:24 v #17799 > >                 $'(fun () ->'
00:17:24 v #17800 > >                 $'(fun () ->'
00:17:24 v #17801 > >                 inl x = dyn $'x'
00:17:24 v #17802 > >                 x |> fn |> emit_unit
00:17:24 v #17803 > >                 $')'
00:17:24 v #17804 > >                 $'|> fun x -> x () |> Some'
00:17:24 v #17805 > >                 $') () ) | None -> None'
00:17:24 v #17806 > >                 $'|> fun x -> !set_result x'
00:17:24 v #17807 > >                 $'!get_result ()' : option' u
00:17:24 v #17808 > >             Python = fun () =>
00:17:24 v #17809 > >                 if x =. none' ()
00:17:24 v #17810 > >                 then none' ()
00:17:24 v #17811 > >                 else fn $'!x ' |> fun x => $'!x ' : option' u
00:17:24 v #17812 > >         }
00:17:24 v #17813 > >
00:17:24 v #17814 > >     backend_switch {
00:17:24 v #17815 > >         Fsharp = fun () =>
00:17:24 v #17816 > >             inl fn = join fn
00:17:24 v #17817 > >             $'!x |> Option.map !fn ' : option' u
00:17:24 v #17818 > >         Python = fun () =>
00:17:24 v #17819 > >             if x =. none' ()
00:17:24 v #17820 > >             then none' ()
00:17:24 v #17821 > >             else fn $'!x ' |> fun x => $'!x ' : option' u
00:17:24 v #17822 > >     }
00:17:24 v #17823 > >
00:17:24 v #17824 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:24 v #17825 > > │ ### map''
00:17:24 v #17826 > >
00:17:24 v #17827 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:24 v #17828 > > inl map'' forall t u. (fn : t -> u) (x : option' t) : option' u =
00:17:24 v #17829 > >     x |> map fn
00:17:24 v #17830 > >
00:17:24 v #17831 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:24 v #17832 > > │ ### unbox
00:17:24 v #17833 > >
00:17:24 v #17834 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:24 v #17835 > > inl unbox forall t. (x : option' t) : option t =
00:17:24 v #17836 > >     x |> map'' Some |> default_value' None
00:17:24 v #17837 > >     // inl some x : option t = Some x
00:17:24 v #17838 > >     // inl some = join some
00:17:24 v #17839 > >     // inl none : option t = None
00:17:24 v #17840 > >     // $'!x |> Option.map !some |> Option.defaultValue !none '
00:17:24 v #17841 > >
00:17:24 v #17842 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:24 v #17843 > > //// test
00:17:24 v #17844 > > ///! fsharp
00:17:24 v #17845 > > ///! cuda
00:17:24 v #17846 > > ///! rust
00:17:24 v #17847 > > ///! typescript
00:17:24 v #17848 > > ///! python
00:17:24 v #17849 > >
00:17:24 v #17850 > > inl x = Some 3i32
00:17:24 v #17851 > > inl y : option i32 = None
00:17:24 v #17852 > > inl x' = x |> box |> unbox
00:17:24 v #17853 > > inl y' = y |> box |> map id |> unbox
00:17:24 v #17854 > > (x', y') |> _assert_eq' (x, y)
00:17:32 v #17855 > >
00:17:32 v #17856 > > ── [ 8.10s - return value ] ────────────────────────────────────────────────────
00:17:32 v #17857 > > │ .py output (Cuda):
00:17:32 v #17858 > > │ __assert_eq' / actual: (US0_0(v0=3), US0_1()) / expected:
00:17:32 v #17859 > > (US0_0(v0=3), US0_1())
00:17:32 v #17860 > > │
00:17:32 v #17861 > > │ .rs output:
00:17:32 v #17862 > > │ __assert_eq' / actual: (US0_0(3), US0_1) / expected:
00:17:32 v #17863 > > (US0_0(3), US0_1)
00:17:32 v #17864 > > │
00:17:32 v #17865 > > │ .ts output:
00:17:32 v #17866 > > │ __assert_eq' / actual: US0_0 3,US0_1 / expected: US0_0
00:17:32 v #17867 > > 3,US0_1
00:17:32 v #17868 > > │
00:17:32 v #17869 > > │ .py output:
00:17:32 v #17870 > > │ __assert_eq' / actual: (US0_0 3, US0_1) / expected: (US0_0 3,
00:17:32 v #17871 > > US0_1)
00:17:32 v #17872 > > │
00:17:32 v #17873 > > │
00:17:32 v #17874 > >
00:17:32 v #17875 > > ── [ 8.10s - stdout ] ──────────────────────────────────────────────────────────
00:17:32 v #17876 > > │ .fsx output:
00:17:32 v #17877 > > │ __assert_eq' / actual: struct (US0_0 3, US0_1) / expected:
00:17:32 v #17878 > > struct (US0_0 3, US0_1)
00:17:32 v #17879 > > │
00:17:32 v #17880 > >
00:17:32 v #17881 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:32 v #17882 > > │ ### of_obj
00:17:32 v #17883 > >
00:17:32 v #17884 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:32 v #17885 > > inl of_obj forall t. (x : t) : option' t =
00:17:32 v #17886 > >     backend_switch {
00:17:32 v #17887 > >         Fsharp = fun () =>
00:17:32 v #17888 > >             $'let mutable _!x = None'
00:17:32 v #17889 > >             $'#if \!FABLE_COMPILER && \!WASM && \!CONTRACT'
00:17:32 v #17890 > >             ((x |> $'Option.ofObj') : option' t) |> emit_unit
00:17:32 v #17891 > >             $'#else'
00:17:32 v #17892 > >             $'Some !x '
00:17:32 v #17893 > >             $'#endif'
00:17:32 v #17894 > >             $'|> fun x -> _!x <- Some x'
00:17:32 v #17895 > >             $'match _!x with Some x -> x | None -> failwith "optionm\'.of_obj
00:17:32 v #17896 > > _!x=None"' : option' t
00:17:32 v #17897 > >         Python = fun () =>
00:17:32 v #17898 > >             $'!x ' : option' t
00:17:32 v #17899 > >     }
00:17:32 v #17900 > >
00:17:32 v #17901 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:32 v #17902 > > //// test
00:17:32 v #17903 > > ///! fsharp
00:17:32 v #17904 > > ///! cuda
00:17:32 v #17905 > > ////! rust // attempted to zero-initialize type `alloc::sync::Arc<dyn
00:17:32 v #17906 > > core::any::Any>`, which is invalid
00:17:32 v #17907 > > ///! typescript
00:17:32 v #17908 > > ///! python
00:17:32 v #17909 > >
00:17:32 v #17910 > > null ()
00:17:32 v #17911 > > |> of_obj
00:17:32 v #17912 > > |> unbox
00:17:32 v #17913 > > |> _assert_eq (None : option string)
00:17:39 v #17914 > >
00:17:39 v #17915 > > ── [ 6.32s - return value ] ────────────────────────────────────────────────────
00:17:39 v #17916 > > │ .py output (Cuda):
00:17:39 v #17917 > > │ __assert_eq / actual: US0_1() / expected: US0_1()
00:17:39 v #17918 > > │
00:17:39 v #17919 > > │ .ts output:
00:17:39 v #17920 > > │ __assert_eq / actual: US0_1 / expected: US0_1
00:17:39 v #17921 > > │
00:17:39 v #17922 > > │ .py output:
00:17:39 v #17923 > > │ __assert_eq / actual: US0_1 / expected: US0_1
00:17:39 v #17924 > > │
00:17:39 v #17925 > > │
00:17:39 v #17926 > >
00:17:39 v #17927 > > ── [ 6.33s - stdout ] ──────────────────────────────────────────────────────────
00:17:39 v #17928 > > │ .fsx output:
00:17:39 v #17929 > > │ __assert_eq / actual: US0_1 / expected: US0_1
00:17:39 v #17930 > > │
00:17:39 v #17931 > >
00:17:39 v #17932 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:39 v #17933 > > //// test
00:17:39 v #17934 > > ///! fsharp
00:17:39 v #17935 > > ///! cuda
00:17:39 v #17936 > > ///! rust
00:17:39 v #17937 > > ///! typescript
00:17:39 v #17938 > > ///! python
00:17:39 v #17939 > >
00:17:39 v #17940 > > ""
00:17:39 v #17941 > > |> of_obj
00:17:39 v #17942 > > |> unbox
00:17:39 v #17943 > > |> _assert_eq' (Some "")
00:17:47 v #17944 > >
00:17:47 v #17945 > > ── [ 7.90s - return value ] ────────────────────────────────────────────────────
00:17:47 v #17946 > > │ .py output (Cuda):
00:17:47 v #17947 > > │ __assert_eq' / actual: US0_0(v0='') / expected: US0_0(v0='')
00:17:47 v #17948 > > │
00:17:47 v #17949 > > │ .rs output:
00:17:47 v #17950 > > │ __assert_eq' / actual: US0_0("") / expected: US0_0("")
00:17:47 v #17951 > > │
00:17:47 v #17952 > > │ .ts output:
00:17:47 v #17953 > > │ __assert_eq' / actual: US0_0  / expected: US0_0
00:17:47 v #17954 > > │
00:17:47 v #17955 > > │ .py output:
00:17:47 v #17956 > > │ __assert_eq' / actual: US0_0 "" / expected: US0_0 ""
00:17:47 v #17957 > > │
00:17:47 v #17958 > > │
00:17:47 v #17959 > >
00:17:47 v #17960 > > ── [ 7.90s - stdout ] ──────────────────────────────────────────────────────────
00:17:47 v #17961 > > │ .fsx output:
00:17:47 v #17962 > > │ __assert_eq' / actual: US0_0 "" / expected: US0_0 ""
00:17:47 v #17963 > > │
00:17:47 v #17964 > >
00:17:47 v #17965 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:47 v #17966 > > │ ### flatten'
00:17:47 v #17967 > >
00:17:47 v #17968 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:47 v #17969 > > inl flatten' x =
00:17:47 v #17970 > >     x
00:17:47 v #17971 > >     |> unbox
00:17:47 v #17972 > >     |> optionm.map unbox
00:17:47 v #17973 > >     |> flatten
00:17:47 v #17974 > >
00:17:47 v #17975 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:47 v #17976 > > │ ## rust
00:17:47 v #17977 > >
00:17:47 v #17978 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:47 v #17979 > > │ ### try'
00:17:47 v #17980 > >
00:17:47 v #17981 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:47 v #17982 > > inl try' forall t. (x : option' t) : t =
00:17:47 v #17983 > >     !\\(x, $'"$0?"')
00:17:47 v #17984 > >
00:17:47 v #17985 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:47 v #17986 > > │ ### map'
00:17:47 v #17987 > >
00:17:47 v #17988 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:47 v #17989 > > inl map' forall t u. (fn : t -> u) (x : option' t) : option' u =
00:17:47 v #17990 > >     (!\\(x, $'"true; let _optionm_map_ = $0.map(|x| { //"') : bool) |> ignore
00:17:47 v #17991 > >     inl result = fn !\($'"x"')
00:17:47 v #17992 > >     (!\\(result, $'"true; $0 })"') : bool) |> ignore
00:17:47 v #17993 > >     !\($'"_optionm_map_"')
00:17:47 v #17994 > >
00:17:47 v #17995 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:47 v #17996 > > │ ### unwrap
00:17:47 v #17997 > >
00:17:47 v #17998 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:47 v #17999 > > inl unwrap forall t. (x : option' t) : t =
00:17:47 v #18000 > >     !\\(x, $'"$0.unwrap()"')
00:17:47 v #18001 > >
00:17:47 v #18002 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:47 v #18003 > > │ ### take
00:17:47 v #18004 > >
00:17:47 v #18005 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:47 v #18006 > > inl take forall t. (x : option' t) : option' t =
00:17:47 v #18007 > >     (!\\(x, $'"true; let mut !x = !x"') : bool) |> ignore
00:17:47 v #18008 > >     !\\(x, $'"Option::take(&mut $0)"')
00:17:47 v #18009 > >
00:17:47 v #18010 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:47 v #18011 > > │ ### take_ref
00:17:47 v #18012 > >
00:17:47 v #18013 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:47 v #18014 > > inl take_ref forall t. (x : rust.ref (option' t)) : option' t =
00:17:47 v #18015 > >     (!\\(x, $'"true; let mut !x = !x"') : bool) |> ignore
00:17:47 v #18016 > >     !\\(x, $'"Option::take(&mut $0)"')
00:17:47 v #18017 > >
00:17:47 v #18018 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:47 v #18019 > > │ ### take_ref_mut
00:17:47 v #18020 > >
00:17:47 v #18021 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:47 v #18022 > > inl take_ref_mut forall t. (x : rust.ref (rust.mut' (option' t))) : option' t =
00:17:47 v #18023 > >     !\\(x, $'"Option::take($0)"')
00:17:48 v #18024 > >
00:17:48 v #18025 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:48 v #18026 > > │ ### cloned
00:17:48 v #18027 > >
00:17:48 v #18028 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:48 v #18029 > > inl cloned forall t. (x : option' (rust.ref t)) : option' t =
00:17:48 v #18030 > >     !\\(x, $'"$0.cloned()"')
00:17:48 v #18031 > >
00:17:48 v #18032 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:48 v #18033 > > │ ### as_ref
00:17:48 v #18034 > >
00:17:48 v #18035 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:48 v #18036 > > inl as_ref forall t. (x : rust.ref (option' t)) : option' (rust.ref t) =
00:17:48 v #18037 > >     !\\(x, $'"$0.as_ref()"')
00:17:48 v #18038 > >
00:17:48 v #18039 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:48 v #18040 > > │ ### as_mut
00:17:48 v #18041 > >
00:17:48 v #18042 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:48 v #18043 > > inl as_mut forall t. (x : rust.ref (rust.mut' (option' t))) : option' (rust.ref
00:17:48 v #18044 > > (rust.mut' t)) =
00:17:48 v #18045 > >     !\\(x, $'"$0.as_mut()"')
00:17:48 v #18046 > >
00:17:48 v #18047 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:48 v #18048 > > │ ### unwrap_or
00:17:48 v #18049 > >
00:17:48 v #18050 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:48 v #18051 > > inl unwrap_or forall t. (def : t) (x : option' t) : t =
00:17:48 v #18052 > >     !\($'"!x.unwrap_or(!def)"')
00:17:48 v #18053 > >
00:17:48 v #18054 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:48 v #18055 > > │ ### and_then
00:17:48 v #18056 > >
00:17:48 v #18057 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:48 v #18058 > > inl and_then forall t u. (fn : t -> option' u) (x : option' t) : option' u =
00:17:48 v #18059 > >     !\\((x, fn), $'"$0.and_then(|x| $1(x))"')
00:17:48 v #18060 > >
00:17:48 v #18061 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:48 v #18062 > > │ ### rc_upgrade
00:17:48 v #18063 > >
00:17:48 v #18064 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:48 v #18065 > > inl rc_upgrade forall t. (x : rust.weak_rc t) : option' (rust.rc t) =
00:17:48 v #18066 > >     !\\(x, $'"std::rc::Weak::upgrade(&$0)"')
00:17:49 v #18067 > >
00:17:49 v #18068 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:49 v #18069 > > │ ### rc_into_inner
00:17:49 v #18070 > >
00:17:49 v #18071 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:49 v #18072 > > inl rc_into_inner forall t. (x : rust.rc t) : option' t =
00:17:49 v #18073 > >     !\\(x, $'"std::rc::Rc::into_inner($0)"')
00:17:49 v #18074 > >
00:17:49 v #18075 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:49 v #18076 > > //// test
00:17:49 v #18077 > > ///! rust
00:17:49 v #18078 > >
00:17:49 v #18079 > > rust.new_rc 0i32
00:17:49 v #18080 > > |> rc_into_inner
00:17:49 v #18081 > > |> unbox
00:17:49 v #18082 > > |> _assert_eq' (Some 0i32)
00:17:54 v #18083 > >
00:17:54 v #18084 > > ── [ 5.41s - return value ] ────────────────────────────────────────────────────
00:17:54 v #18085 > > │ __assert_eq' / actual: US0_0(0) / expected: US0_0(0)
00:17:54 v #18086 > > │
00:17:54 v #18087 > 00:00:38 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 18247 }
00:17:54 v #18088 > 00:00:38 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/optionm'.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/optionm'.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:17:55 v #18089 > 00:00:38 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/optionm'.dib.ipynb to html
00:17:55 v #18090 > 00:00:38 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:17:55 v #18091 > 00:00:38 v #7 !   validate(nb)
00:17:55 v #18092 > 00:00:39 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:17:55 v #18093 > 00:00:39 v #9 !   return _pygments_highlight(
00:17:56 v #18094 > 00:00:39 v #10 ! [NbConvertApp] Writing 347081 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/optionm'.dib.html
00:17:56 v #18095 > 00:00:39 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 900 }
00:17:56 v #18096 > 00:00:39 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 900 }
00:17:56 v #18097 > 00:00:39 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/optionm''.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/optionm''.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:17:56 v #18098 > 00:00:40 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:17:56 v #18099 > 00:00:40 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:17:56 v #18100 > 00:00:40 d #16 spiral.run / dib / { exit_code = 0; result_length = 19206 }
00:17:56 d #18101 runtime.execute_with_options_async / { exit_code = 0; output_length = 22849 }
00:17:56 d #23 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path optionm'.dib --retries 3
00:17:56 d #18102 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path listm'.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path listm'.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:17:56 v #18103 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "listm'.dib", "--retries", "3"])) }
00:17:56 v #18104 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/listm'.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/listm'.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/listm'.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/listm'.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:17:57 v #18105 > >
00:17:57 v #18106 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:57 v #18107 > > │ # listm'
00:17:59 v #18108 > >
00:17:59 v #18109 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:59 v #18110 > > //// test
00:17:59 v #18111 > >
00:17:59 v #18112 > > open testing
00:18:00 v #18113 > >
00:18:00 v #18114 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:00 v #18115 > > │ ## listm'
00:18:00 v #18116 > >
00:18:00 v #18117 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:00 v #18118 > > │ ### append
00:18:00 v #18119 > >
00:18:00 v #18120 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:00 v #18121 > > instance append list t =
00:18:00 v #18122 > >     listm.append
00:18:00 v #18123 > >
00:18:00 v #18124 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:00 v #18125 > > //// test
00:18:00 v #18126 > >
00:18:00 v #18127 > > [[ "a"; "b" ]] ++ [[ "c"; "d" ]]
00:18:00 v #18128 > > |> _assert_eq [[ "a"; "b"; "c"; "d" ]]
00:18:01 v #18129 > >
00:18:01 v #18130 > > ── [ 854.22ms - stdout ] ───────────────────────────────────────────────────────
00:18:01 v #18131 > > │ __assert_eq / actual: UH0_1 ("a", UH0_1 ("b", UH0_1 ("c",
00:18:01 v #18132 > > UH0_1 ("d", UH0_0)))) / expected: UH0_1 ("a", UH0_1 ("b", UH0_1 ("c", UH0_1
00:18:01 v #18133 > > ("d", UH0_0))))
00:18:01 v #18134 > > │
00:18:01 v #18135 > >
00:18:01 v #18136 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:01 v #18137 > > │ ### collect
00:18:01 v #18138 > >
00:18:01 v #18139 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:01 v #18140 > > inl collect forall t r. (fn : t -> list r) (items : list t) : list r =
00:18:01 v #18141 > >     items
00:18:01 v #18142 > >     |> listm.map fn
00:18:01 v #18143 > >     |> listm.fold (++) [[]]
00:18:01 v #18144 > >
00:18:01 v #18145 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:01 v #18146 > > │ ### replicate
00:18:01 v #18147 > >
00:18:01 v #18148 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:01 v #18149 > > inl replicate count x =
00:18:01 v #18150 > >     listm.init count fun _ => x
00:18:01 v #18151 > >
00:18:01 v #18152 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:01 v #18153 > > │ ### map4
00:18:01 v #18154 > >
00:18:01 v #18155 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:01 v #18156 > > inl map4 f l1 l2 l3 l4 =
00:18:01 v #18157 > >     inl rec loop l1 l2 l3 l4 acc =
00:18:01 v #18158 > >         match l1, l2, l3, l4 with
00:18:01 v #18159 > >         | (x1 :: xs1), (x2 :: xs2), (x3 :: xs3), (x4 :: xs4) =>
00:18:01 v #18160 > >             loop xs1 xs2 xs3 xs4 (f x1 x2 x3 x4 :: acc)
00:18:01 v #18161 > >         | _ => acc |> listm.rev
00:18:01 v #18162 > >     loop l1 l2 l3 l4 [[]]
00:18:02 v #18163 > >
00:18:02 v #18164 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:02 v #18165 > > │ ### init_series
00:18:02 v #18166 > >
00:18:02 v #18167 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:02 v #18168 > > inl init_series start end inc =
00:18:02 v #18169 > >     inl total : f64 = conv ((end - start) / inc) + 1
00:18:02 v #18170 > >     listm.init total (conv >> (*) inc >> (+) start)
00:18:02 v #18171 > >
00:18:02 v #18172 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:02 v #18173 > > //// test
00:18:02 v #18174 > >
00:18:02 v #18175 > > init_series 0 1 0.5
00:18:02 v #18176 > > |> _assert_eq [[ 0f64; 0.5; 1 ]]
00:18:02 v #18177 > >
00:18:02 v #18178 > > ── [ 204.01ms - stdout ] ───────────────────────────────────────────────────────
00:18:02 v #18179 > > │ __assert_eq / actual: UH0_1 (0.0, UH0_1 (0.5, UH0_1 (1.0,
00:18:02 v #18180 > > UH0_0))) / expected: UH0_1 (0.0, UH0_1 (0.5, UH0_1 (1.0, UH0_0)))
00:18:02 v #18181 > > │
00:18:02 v #18182 > >
00:18:02 v #18183 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:02 v #18184 > > │ ### try_item
00:18:02 v #18185 > >
00:18:02 v #18186 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:02 v #18187 > > inl rec try_item i = function
00:18:02 v #18188 > >     | Cons (x, _) when i = 0 => Some x
00:18:02 v #18189 > >     | Cons (_, xs) => try_item (i - 1) xs
00:18:02 v #18190 > >     | Nil => None
00:18:02 v #18191 > >
00:18:02 v #18192 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:02 v #18193 > > //// test
00:18:02 v #18194 > >
00:18:02 v #18195 > > listm.init 10i32 id
00:18:02 v #18196 > > |> try_item 9i32
00:18:02 v #18197 > > |> _assert_eq (Some 9)
00:18:02 v #18198 > >
00:18:02 v #18199 > > ── [ 207.19ms - stdout ] ───────────────────────────────────────────────────────
00:18:02 v #18200 > > │ __assert_eq / actual: US0_0 9 / expected: US0_0 9
00:18:02 v #18201 > > │
00:18:02 v #18202 > >
00:18:02 v #18203 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:02 v #18204 > > //// test
00:18:02 v #18205 > >
00:18:02 v #18206 > > listm.init 10i32 id
00:18:02 v #18207 > > |> try_item 10i32
00:18:02 v #18208 > > |> _assert_eq None
00:18:02 v #18209 > >
00:18:02 v #18210 > > ── [ 178.83ms - stdout ] ───────────────────────────────────────────────────────
00:18:02 v #18211 > > │ __assert_eq / actual: US0_1 / expected: US0_1
00:18:02 v #18212 > > │
00:18:02 v #18213 > >
00:18:02 v #18214 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:02 v #18215 > > │ ### item
00:18:02 v #18216 > >
00:18:02 v #18217 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:02 v #18218 > > inl item i =
00:18:02 v #18219 > >     try_item i >> optionm.value
00:18:03 v #18220 > >
00:18:03 v #18221 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:03 v #18222 > > //// test
00:18:03 v #18223 > >
00:18:03 v #18224 > > listm.init 10i32 id
00:18:03 v #18225 > > |> item 9i32
00:18:03 v #18226 > > |> _assert_eq 9
00:18:03 v #18227 > >
00:18:03 v #18228 > > ── [ 162.58ms - stdout ] ───────────────────────────────────────────────────────
00:18:03 v #18229 > > │ __assert_eq / actual: 9 / expected: 9
00:18:03 v #18230 > > │
00:18:03 v #18231 > >
00:18:03 v #18232 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:03 v #18233 > > //// test
00:18:03 v #18234 > >
00:18:03 v #18235 > > fun () =>
00:18:03 v #18236 > >     listm.init 10i32 id
00:18:03 v #18237 > >     |> item 10i32
00:18:03 v #18238 > >     |> ignore
00:18:03 v #18239 > > |> _throws
00:18:03 v #18240 > > |> optionm.map sm'.format_exception
00:18:03 v #18241 > > |> _assert_eq (Some "System.Exception: Option does not have a value.")
00:18:03 v #18242 > >
00:18:03 v #18243 > > ── [ 292.19ms - stdout ] ───────────────────────────────────────────────────────
00:18:03 v #18244 > > │ __assert_eq / actual: US1_0 "System.Exception: Option does
00:18:03 v #18245 > > not have a value." / expected: US1_0 "System.Exception: Option does not have a
00:18:03 v #18246 > > value."
00:18:03 v #18247 > > │
00:18:03 v #18248 > >
00:18:03 v #18249 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:03 v #18250 > > │ ### try_item_
00:18:03 v #18251 > >
00:18:03 v #18252 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:03 v #18253 > > let rec try_item_ i = function
00:18:03 v #18254 > >     | Cons (x, _) when i = 0 => Some x
00:18:03 v #18255 > >     | Cons (_, xs) => try_item_ (i - 1) xs
00:18:03 v #18256 > >     | Nil => None
00:18:03 v #18257 > >
00:18:03 v #18258 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:03 v #18259 > > │ ### item_
00:18:03 v #18260 > >
00:18:03 v #18261 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:03 v #18262 > > inl item_ i =
00:18:03 v #18263 > >     try_item_ i >> optionm.value
00:18:03 v #18264 > >
00:18:03 v #18265 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:03 v #18266 > > │ ### sum
00:18:03 v #18267 > >
00:18:03 v #18268 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:03 v #18269 > > inl sum list =
00:18:03 v #18270 > >     list |> listm.fold (+) 0
00:18:04 v #18271 > >
00:18:04 v #18272 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:04 v #18273 > > //// test
00:18:04 v #18274 > >
00:18:04 v #18275 > > listm.init 10i32 id
00:18:04 v #18276 > > |> sum
00:18:04 v #18277 > > |> _assert_eq 45
00:18:04 v #18278 > >
00:18:04 v #18279 > > ── [ 155.00ms - stdout ] ───────────────────────────────────────────────────────
00:18:04 v #18280 > > │ __assert_eq / actual: 45 / expected: 45
00:18:04 v #18281 > > │
00:18:04 v #18282 > >
00:18:04 v #18283 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:04 v #18284 > > │ ### unzip
00:18:04 v #18285 > >
00:18:04 v #18286 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:04 v #18287 > > inl unzip list =
00:18:04 v #18288 > >     (([[]], [[]]), list)
00:18:04 v #18289 > >     ||> listm.fold fun (acc_x, acc_y) (x, y) =>
00:18:04 v #18290 > >         x :: acc_x, y :: acc_y
00:18:04 v #18291 > >     |> fun x, y =>
00:18:04 v #18292 > >         x |> listm.rev, y |> listm.rev
00:18:04 v #18293 > >
00:18:04 v #18294 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:04 v #18295 > > //// test
00:18:04 v #18296 > >
00:18:04 v #18297 > > listm.init 10i32 id
00:18:04 v #18298 > > |> listm.map (fun x => x, x)
00:18:04 v #18299 > > |> unzip
00:18:04 v #18300 > > |> fun x, y =>
00:18:04 v #18301 > >     x |> sum
00:18:04 v #18302 > >     |> _assert_eq 45
00:18:04 v #18303 > >
00:18:04 v #18304 > >     y |> sum
00:18:04 v #18305 > >     |> _assert_eq 45
00:18:04 v #18306 > >
00:18:04 v #18307 > > ── [ 169.24ms - stdout ] ───────────────────────────────────────────────────────
00:18:04 v #18308 > > │ __assert_eq / actual: 45 / expected: 45
00:18:04 v #18309 > > │ __assert_eq / actual: 45 / expected: 45
00:18:04 v #18310 > > │
00:18:04 v #18311 > >
00:18:04 v #18312 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:04 v #18313 > > │ ### try_index_of
00:18:04 v #18314 > >
00:18:04 v #18315 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:04 v #18316 > > inl try_index_of item list =
00:18:04 v #18317 > >     inl rec loop i = function
00:18:04 v #18318 > >         | [[]] => None
00:18:04 v #18319 > >         | x :: xs =>
00:18:04 v #18320 > >             if x = item
00:18:04 v #18321 > >             then Some i
00:18:04 v #18322 > >             else loop (i + 1) xs
00:18:04 v #18323 > >     loop 0 list
00:18:04 v #18324 > >
00:18:04 v #18325 > > inl index_of item =
00:18:04 v #18326 > >     try_index_of item >> optionm.value
00:18:04 v #18327 > >
00:18:04 v #18328 > > inl try_index_of_ item list =
00:18:04 v #18329 > >     let rec loop i = function
00:18:04 v #18330 > >         | [[]] => None
00:18:04 v #18331 > >         | x :: xs =>
00:18:04 v #18332 > >             if x = item
00:18:04 v #18333 > >             then Some i
00:18:04 v #18334 > >             else loop (i + 1) xs
00:18:04 v #18335 > >     loop 0 list
00:18:04 v #18336 > >
00:18:04 v #18337 > > inl index_of_ item =
00:18:04 v #18338 > >     try_index_of_ item >> optionm.value
00:18:04 v #18339 > >
00:18:04 v #18340 > > inl try_index_of__ item list =
00:18:04 v #18341 > >     inl i = mut 0
00:18:04 v #18342 > >     inl list = mut list
00:18:04 v #18343 > >     inl result = mut None
00:18:04 v #18344 > >     let rec loop () =
00:18:04 v #18345 > >         match *list with
00:18:04 v #18346 > >         | [[]] => result <- None
00:18:04 v #18347 > >         | x :: xs =>
00:18:04 v #18348 > >             if x = item
00:18:04 v #18349 > >             then result <- Some *i
00:18:04 v #18350 > >             else
00:18:04 v #18351 > >                 i <- *i + 1
00:18:04 v #18352 > >                 list <- xs
00:18:04 v #18353 > >                 loop ()
00:18:04 v #18354 > >     loop ()
00:18:04 v #18355 > >     *result
00:18:04 v #18356 > >
00:18:04 v #18357 > > inl index_of__ item =
00:18:04 v #18358 > >     try_index_of__ item >> optionm.value
00:18:04 v #18359 > >
00:18:04 v #18360 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:04 v #18361 > > //// test
00:18:04 v #18362 > >
00:18:04 v #18363 > > listm.init 10i32 id
00:18:04 v #18364 > > |> index_of 5i32
00:18:04 v #18365 > > |> _assert_eq 5i32
00:18:04 v #18366 > >
00:18:04 v #18367 > > ── [ 174.28ms - stdout ] ───────────────────────────────────────────────────────
00:18:04 v #18368 > > │ __assert_eq / actual: 5 / expected: 5
00:18:04 v #18369 > > │
00:18:04 v #18370 > >
00:18:04 v #18371 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:04 v #18372 > > //// test
00:18:04 v #18373 > >
00:18:04 v #18374 > > listm.init 10i32 id
00:18:04 v #18375 > > |> try_index_of 10i32
00:18:04 v #18376 > > |> _assert_eq (None : option i32)
00:18:05 v #18377 > >
00:18:05 v #18378 > > ── [ 176.44ms - stdout ] ───────────────────────────────────────────────────────
00:18:05 v #18379 > > │ __assert_eq / actual: US0_1 / expected: US0_1
00:18:05 v #18380 > > │
00:18:05 v #18381 > >
00:18:05 v #18382 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:05 v #18383 > > │ ### try_find
00:18:05 v #18384 > >
00:18:05 v #18385 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:05 v #18386 > > inl try_find fn list =
00:18:05 v #18387 > >     inl rec loop = function
00:18:05 v #18388 > >         | [[]] => None
00:18:05 v #18389 > >         | x :: xs =>
00:18:05 v #18390 > >             if fn x
00:18:05 v #18391 > >             then Some x
00:18:05 v #18392 > >             else loop xs
00:18:05 v #18393 > >     loop list
00:18:05 v #18394 > >
00:18:05 v #18395 > > inl try_find_ fn list =
00:18:05 v #18396 > >     let rec loop = function
00:18:05 v #18397 > >         | [[]] => None
00:18:05 v #18398 > >         | x :: xs =>
00:18:05 v #18399 > >             if fn x
00:18:05 v #18400 > >             then Some x
00:18:05 v #18401 > >             else loop xs
00:18:05 v #18402 > >     loop list
00:18:05 v #18403 > >
00:18:05 v #18404 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:05 v #18405 > > //// test
00:18:05 v #18406 > >
00:18:05 v #18407 > > listm.init 10i32 id
00:18:05 v #18408 > > |> try_find ((=) 5i32)
00:18:05 v #18409 > > |> _assert_eq (Some 5i32)
00:18:05 v #18410 > >
00:18:05 v #18411 > > ── [ 153.67ms - stdout ] ───────────────────────────────────────────────────────
00:18:05 v #18412 > > │ __assert_eq / actual: US0_0 5 / expected: US0_0 5
00:18:05 v #18413 > > │
00:18:05 v #18414 > >
00:18:05 v #18415 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:05 v #18416 > > inl find x =
00:18:05 v #18417 > >     try_find x >> optionm.value
00:18:05 v #18418 > >
00:18:05 v #18419 > > inl find_ x =
00:18:05 v #18420 > >     try_find_ x >> optionm.value
00:18:05 v #18421 > >
00:18:05 v #18422 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:05 v #18423 > > //// test
00:18:05 v #18424 > >
00:18:05 v #18425 > > listm.init 10i32 id
00:18:05 v #18426 > > |> find ((=) 5i32)
00:18:05 v #18427 > > |> _assert_eq 5i32
00:18:05 v #18428 > >
00:18:05 v #18429 > > ── [ 173.22ms - stdout ] ───────────────────────────────────────────────────────
00:18:05 v #18430 > > │ __assert_eq / actual: 5 / expected: 5
00:18:05 v #18431 > > │
00:18:05 v #18432 > >
00:18:05 v #18433 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:05 v #18434 > > │ ### choose
00:18:05 v #18435 > >
00:18:05 v #18436 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:05 v #18437 > > inl choose f l =
00:18:05 v #18438 > >     (l, [[]])
00:18:05 v #18439 > >     ||> listm.foldBack fun x acc =>
00:18:05 v #18440 > >         match f x with
00:18:05 v #18441 > >         | Some y => y :: acc
00:18:05 v #18442 > >         | None => acc
00:18:05 v #18443 > >
00:18:05 v #18444 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:05 v #18445 > > //// test
00:18:05 v #18446 > >
00:18:05 v #18447 > > listm.init 10i32 id
00:18:05 v #18448 > > |> choose (fun x => if x % 2 = 0 then Some x else None)
00:18:05 v #18449 > > |> _assert_eq [[ 0; 2; 4; 6; 8 ]]
00:18:06 v #18450 > >
00:18:06 v #18451 > > ── [ 196.57ms - stdout ] ───────────────────────────────────────────────────────
00:18:06 v #18452 > > │ __assert_eq / actual: UH0_1 (0, UH0_1 (2, UH0_1 (4, UH0_1 (6,
00:18:06 v #18453 > > UH0_1 (8, UH0_0))))) / expected: UH0_1 (0, UH0_1 (2, UH0_1 (4, UH0_1 (6, UH0_1
00:18:06 v #18454 > > (8, UH0_0)))))
00:18:06 v #18455 > > │
00:18:06 v #18456 > >
00:18:06 v #18457 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:06 v #18458 > > │ ### filter
00:18:06 v #18459 > >
00:18:06 v #18460 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:06 v #18461 > > inl filter forall t. (fn : t -> bool) (list : list t) : list t =
00:18:06 v #18462 > >     (list, Nil)
00:18:06 v #18463 > >     ||> listm.foldBack fun x acc =>
00:18:06 v #18464 > >         if fn x then x :: acc else acc
00:18:06 v #18465 > >
00:18:06 v #18466 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:06 v #18467 > > │ ### zip_with
00:18:06 v #18468 > >
00:18:06 v #18469 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:06 v #18470 > > inl zip_with fn xs ys =
00:18:06 v #18471 > >     inl rec loop acc xs ys =
00:18:06 v #18472 > >         match xs, ys with
00:18:06 v #18473 > >         | Cons (x, xs), Cons (y, ys) =>
00:18:06 v #18474 > >             loop (fn x y :: acc) xs ys
00:18:06 v #18475 > >         | _ => listm.rev acc
00:18:06 v #18476 > >     loop [[]] xs ys
00:18:06 v #18477 > >
00:18:06 v #18478 > > inl zip_with_ fn xs ys =
00:18:06 v #18479 > >     let rec loop acc xs ys =
00:18:06 v #18480 > >         match xs, ys with
00:18:06 v #18481 > >         | Cons (x, xs), Cons (y, ys) =>
00:18:06 v #18482 > >             loop (fn x y :: acc) xs ys
00:18:06 v #18483 > >         | _ => listm.rev acc
00:18:06 v #18484 > >     loop [[]] xs ys
00:18:06 v #18485 > >
00:18:06 v #18486 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:06 v #18487 > > //// test
00:18:06 v #18488 > >
00:18:06 v #18489 > > ([[ 1i32; 2; 3 ]], [[ 4; 5; 6 ]])
00:18:06 v #18490 > > ||> zip_with (+)
00:18:06 v #18491 > > |> _assert_eq [[ 5; 7; 9 ]]
00:18:06 v #18492 > >
00:18:06 v #18493 > > ── [ 203.43ms - stdout ] ───────────────────────────────────────────────────────
00:18:06 v #18494 > > │ __assert_eq / actual: UH0_1 (5, UH0_1 (7, UH0_1 (9, UH0_0)))
00:18:06 v #18495 > > / expected: UH0_1 (5, UH0_1 (7, UH0_1 (9, UH0_0)))
00:18:06 v #18496 > > │
00:18:06 v #18497 > >
00:18:06 v #18498 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:06 v #18499 > > │ ### zip
00:18:06 v #18500 > >
00:18:06 v #18501 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:06 v #18502 > > inl zip xs ys =
00:18:06 v #18503 > >     zip_with pair xs ys
00:18:06 v #18504 > >
00:18:06 v #18505 > > inl zip_ xs ys =
00:18:06 v #18506 > >     zip_with_ pair xs ys
00:18:06 v #18507 > >
00:18:06 v #18508 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:06 v #18509 > > //// test
00:18:06 v #18510 > >
00:18:06 v #18511 > > ([[ 1i32; 2; 3 ]], [[ 4i32; 5; 6 ]])
00:18:06 v #18512 > > ||> zip
00:18:06 v #18513 > > |> _assert_eq [[ 1, 4; 2, 5; 3, 6 ]]
00:18:06 v #18514 > >
00:18:06 v #18515 > > ── [ 230.33ms - stdout ] ───────────────────────────────────────────────────────
00:18:06 v #18516 > > │ __assert_eq / actual: UH0_1 (1, 4, UH0_1 (2, 5, UH0_1 (3, 6,
00:18:06 v #18517 > > UH0_0))) / expected: UH0_1 (1, 4, UH0_1 (2, 5, UH0_1 (3, 6, UH0_0)))
00:18:06 v #18518 > > │
00:18:06 v #18519 > >
00:18:06 v #18520 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:06 v #18521 > > │ ### indexed
00:18:06 v #18522 > >
00:18:06 v #18523 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:06 v #18524 > > inl indexed list =
00:18:06 v #18525 > >     (([[]], 0), list)
00:18:06 v #18526 > >     ||> listm.fold fun (acc, i) x =>
00:18:06 v #18527 > >         (i, x) :: acc, i + 1
00:18:06 v #18528 > >     |> fst
00:18:06 v #18529 > >     |> listm.rev
00:18:07 v #18530 > >
00:18:07 v #18531 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:07 v #18532 > > //// test
00:18:07 v #18533 > >
00:18:07 v #18534 > > listm.init 5i32 ((*) 2)
00:18:07 v #18535 > > |> indexed
00:18:07 v #18536 > > |> _assert_eq [[ 0i32, 0; 1, 2; 2, 4; 3, 6; 4, 8 ]]
00:18:07 v #18537 > >
00:18:07 v #18538 > > ── [ 176.82ms - stdout ] ───────────────────────────────────────────────────────
00:18:07 v #18539 > > │ __assert_eq / actual: UH0_1 (0, 0, UH0_1 (1, 2, UH0_1 (2, 4,
00:18:07 v #18540 > > UH0_1 (3, 6, UH0_1 (4, 8, UH0_0))))) / expected: UH0_1 (0, 0, UH0_1 (1, 2, UH0_1
00:18:07 v #18541 > > (2, 4, UH0_1 (3, 6, UH0_1 (4, 8, UH0_0)))))
00:18:07 v #18542 > > │
00:18:07 v #18543 > >
00:18:07 v #18544 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:07 v #18545 > > │ ### group_by
00:18:07 v #18546 > >
00:18:07 v #18547 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:07 v #18548 > > inl group_by fn list =
00:18:07 v #18549 > >     (list, [[]])
00:18:07 v #18550 > >     ||> listm.foldBack fun x acc =>
00:18:07 v #18551 > >         inl xk = fn x
00:18:07 v #18552 > >         inl found, new_acc =
00:18:07 v #18553 > >             ((false, [[]]), acc)
00:18:07 v #18554 > >             ||> listm.fold fun (found, acc') (k, xs) =>
00:18:07 v #18555 > >                 if k = xk
00:18:07 v #18556 > >                 then true, (k, x :: xs) :: acc'
00:18:07 v #18557 > >                 else found, (k, xs) :: acc'
00:18:07 v #18558 > >         if found
00:18:07 v #18559 > >         then new_acc
00:18:07 v #18560 > >         else (xk, [[ x ]]) :: new_acc
00:18:07 v #18561 > >
00:18:07 v #18562 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:07 v #18563 > > //// test
00:18:07 v #18564 > >
00:18:07 v #18565 > > listm.init 10i32 id
00:18:07 v #18566 > > |> group_by (fun x => x % 2 = 0)
00:18:07 v #18567 > > |> _assert_eq [[ true, [[ 0; 2; 4; 6; 8 ]]; false, [[ 1; 3; 5; 7; 9 ]] ]]
00:18:07 v #18568 > >
00:18:07 v #18569 > > ── [ 232.77ms - stdout ] ───────────────────────────────────────────────────────
00:18:07 v #18570 > > │ __assert_eq / actual: UH1_1
00:18:07 v #18571 > > │   (true, UH0_1 (0, UH0_1 (2, UH0_1 (4, UH0_1 (6, UH0_1 (8,
00:18:07 v #18572 > > UH0_0))))),
00:18:07 v #18573 > > │    UH1_1
00:18:07 v #18574 > > │      (false, UH0_1 (1, UH0_1 (3, UH0_1 (5, UH0_1 (7, UH0_1
00:18:07 v #18575 > > (9, UH0_0))))), UH1_0)) / expected: UH1_1
00:18:07 v #18576 > > │   (true, UH0_1 (0, UH0_1 (2, UH0_1 (4, UH0_1 (6, UH0_1 (8,
00:18:07 v #18577 > > UH0_0))))),
00:18:07 v #18578 > > │    UH1_1
00:18:07 v #18579 > > │      (false, UH0_1 (1, UH0_1 (3, UH0_1 (5, UH0_1 (7, UH0_1
00:18:07 v #18580 > > (9, UH0_0))))), UH1_0))
00:18:07 v #18581 > > │
00:18:07 v #18582 > >
00:18:07 v #18583 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:07 v #18584 > > │ ### forall'
00:18:07 v #18585 > >
00:18:07 v #18586 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:07 v #18587 > > inl forall' fn (head :: tail) =
00:18:07 v #18588 > >     (true, tail)
00:18:07 v #18589 > >     ||> listm.fold fun acc x =>
00:18:07 v #18590 > >         acc && x = head
00:18:07 v #18591 > >
00:18:07 v #18592 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:07 v #18593 > > //// test
00:18:07 v #18594 > >
00:18:07 v #18595 > > [[ 1i32; 1; 1; 1; 1 ]]
00:18:07 v #18596 > > |> forall' ((=) 1i32)
00:18:07 v #18597 > > |> _assert_eq true
00:18:08 v #18598 > >
00:18:08 v #18599 > > ── [ 164.59ms - stdout ] ───────────────────────────────────────────────────────
00:18:08 v #18600 > > │ __assert_eq / actual: true / expected: true
00:18:08 v #18601 > > │
00:18:08 v #18602 > >
00:18:08 v #18603 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:08 v #18604 > > │ ### last
00:18:08 v #18605 > >
00:18:08 v #18606 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:08 v #18607 > > inl last list =
00:18:08 v #18608 > >     list
00:18:08 v #18609 > >     |> listm.rev
00:18:08 v #18610 > >     |> item 0i32
00:18:08 v #18611 > >
00:18:08 v #18612 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:08 v #18613 > > //// test
00:18:08 v #18614 > >
00:18:08 v #18615 > > listm.init 10i32 id
00:18:08 v #18616 > > |> last
00:18:08 v #18617 > > |> _assert_eq 9
00:18:08 v #18618 > >
00:18:08 v #18619 > > ── [ 162.14ms - stdout ] ───────────────────────────────────────────────────────
00:18:08 v #18620 > > │ __assert_eq / actual: 9 / expected: 9
00:18:08 v #18621 > > │
00:18:08 v #18622 > >
00:18:08 v #18623 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:08 v #18624 > > │ ### try_pick
00:18:08 v #18625 > >
00:18:08 v #18626 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:08 v #18627 > > inl try_pick fn list =
00:18:08 v #18628 > >     inl rec body fn = function
00:18:08 v #18629 > >         | [[]] => None
00:18:08 v #18630 > >         | x :: xs =>
00:18:08 v #18631 > >             match fn x with
00:18:08 v #18632 > >             | Some y => Some y
00:18:08 v #18633 > >             | None => loop xs
00:18:08 v #18634 > >     and inl loop list =
00:18:08 v #18635 > >         if var_is list |> not
00:18:08 v #18636 > >         then body fn list
00:18:08 v #18637 > >         else
00:18:08 v #18638 > >             inl fn = join fn
00:18:08 v #18639 > >             inl list = dyn list
00:18:08 v #18640 > >             join body fn list
00:18:08 v #18641 > >     loop list
00:18:08 v #18642 > >
00:18:08 v #18643 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:08 v #18644 > > //// test
00:18:08 v #18645 > >
00:18:08 v #18646 > > listm.init 10i32 id
00:18:08 v #18647 > > |> try_pick (fun x => if x = 5i32 then Some x else None)
00:18:08 v #18648 > > |> _assert_eq (Some 5i32)
00:18:08 v #18649 > >
00:18:08 v #18650 > > ── [ 198.04ms - stdout ] ───────────────────────────────────────────────────────
00:18:08 v #18651 > > │ __assert_eq / actual: US0_0 5 / expected: US0_0 5
00:18:08 v #18652 > > │
00:18:08 v #18653 > >
00:18:08 v #18654 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:08 v #18655 > > │ ### exists'
00:18:08 v #18656 > >
00:18:08 v #18657 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:08 v #18658 > > inl exists' f x =
00:18:08 v #18659 > >     inl length_x : i64 = x |> listm.length
00:18:08 v #18660 > >     let rec loop i =
00:18:08 v #18661 > >         if i >= length_x
00:18:08 v #18662 > >         then false
00:18:08 v #18663 > >         elif x |> item i |> f
00:18:08 v #18664 > >         then true
00:18:08 v #18665 > >         else loop (i + 1)
00:18:08 v #18666 > >     loop 0
00:18:08 v #18667 > >
00:18:08 v #18668 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:08 v #18669 > > //// test
00:18:08 v #18670 > >
00:18:08 v #18671 > > [[ 'a'; 'b'; 'c' ]]
00:18:08 v #18672 > > |> exists' fun x => x = 'b'
00:18:08 v #18673 > > |> _assert_eq true
00:18:08 v #18674 > >
00:18:08 v #18675 > > [[ 'a'; 'b' ]]
00:18:08 v #18676 > > |> exists' fun x => x = 'c'
00:18:08 v #18677 > > |> _assert_eq false
00:18:08 v #18678 > >
00:18:08 v #18679 > > [[]]
00:18:08 v #18680 > > |> exists' fun x => x = 'a'
00:18:08 v #18681 > > |> _assert_eq false
00:18:09 v #18682 > >
00:18:09 v #18683 > > ── [ 240.26ms - stdout ] ───────────────────────────────────────────────────────
00:18:09 v #18684 > > │ __assert_eq / actual: true / expected: true
00:18:09 v #18685 > > │ __assert_eq / actual: false / expected: false
00:18:09 v #18686 > > │ __assert_eq / actual: false / expected: false
00:18:09 v #18687 > > │
00:18:09 v #18688 > >
00:18:09 v #18689 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:09 v #18690 > > │ ## fsharp
00:18:09 v #18691 > >
00:18:09 v #18692 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:09 v #18693 > > │ ### list'
00:18:09 v #18694 > >
00:18:09 v #18695 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:09 v #18696 > > nominal list' t = $"backend_switch `({ Fsharp : $'`t list'; Python : $'list' })"
00:18:09 v #18697 > >
00:18:09 v #18698 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:09 v #18699 > > │ ### empty'
00:18:09 v #18700 > >
00:18:09 v #18701 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:09 v #18702 > > inl empty' forall t. () : list' t =
00:18:09 v #18703 > >     $'[[]]'
00:18:09 v #18704 > >
00:18:09 v #18705 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:09 v #18706 > > │ ### cons'
00:18:09 v #18707 > >
00:18:09 v #18708 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:09 v #18709 > > inl cons' forall t. (head : t) (tail : list' t) : list' t =
00:18:09 v #18710 > >     backend_switch {
00:18:09 v #18711 > >         Fsharp = fun () => $'!head :: !tail ' : list' t
00:18:09 v #18712 > >         Python = fun () =>
00:18:09 v #18713 > >             $'!tail.insert(0, !head)'
00:18:09 v #18714 > >             $'!tail ' : list' t
00:18:09 v #18715 > >     }
00:18:09 v #18716 > >
00:18:09 v #18717 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:09 v #18718 > > │ ### rev'
00:18:09 v #18719 > >
00:18:09 v #18720 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:09 v #18721 > > inl rev' forall t. (items : list' t) : list' t =
00:18:09 v #18722 > >     backend_switch {
00:18:09 v #18723 > >         Fsharp = fun () => items |> $'List.rev' : list' t
00:18:09 v #18724 > >         Python = fun () => $'list(reversed(!items))' : list' t
00:18:09 v #18725 > >     }
00:18:09 v #18726 > >
00:18:09 v #18727 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:09 v #18728 > > │ ### box
00:18:09 v #18729 > >
00:18:09 v #18730 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:09 v #18731 > > inl box forall t. (list : list t) : list' t =
00:18:09 v #18732 > >     (list, empty' ())
00:18:09 v #18733 > >     ||> listm.foldBack fun x acc =>
00:18:09 v #18734 > >         acc |> cons' x
00:18:09 v #18735 > >
00:18:09 v #18736 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:09 v #18737 > > │ ### fold'
00:18:09 v #18738 > >
00:18:09 v #18739 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:09 v #18740 > > inl fold' forall t u. (fn : t -> u) (init : list u) (list : list' t) : list u =
00:18:09 v #18741 > >     backend_switch {
00:18:09 v #18742 > >         Fsharp = fun () =>
00:18:09 v #18743 > >             (init, list)
00:18:09 v #18744 > >             ||> $'List.fold' join fun acc x => Cons (fn x, acc)
00:18:09 v #18745 > >             : list u
00:18:09 v #18746 > >         Python = fun () =>
00:18:09 v #18747 > >             inl init = init |> box
00:18:09 v #18748 > >             $'r = !init '
00:18:09 v #18749 > >             inl list = list |> rev'
00:18:09 v #18750 > >             $'for x in !list: r = [[!fn(x)]] + r'
00:18:09 v #18751 > >             inl init : list u = Nil
00:18:09 v #18752 > >             inl cons (a : u) b = Cons (a, b)
00:18:09 v #18753 > >             $'r_ = !init '
00:18:09 v #18754 > >             $'for x in r: r_ = !cons (x)(r_)'
00:18:09 v #18755 > >             $'r_' : list u
00:18:09 v #18756 > >     }
00:18:10 v #18757 > >
00:18:10 v #18758 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:10 v #18759 > > │ ### fold_back'
00:18:10 v #18760 > >
00:18:10 v #18761 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:10 v #18762 > > inl fold_back' forall t u. (fn : t -> u) (list : list' t) (init : list u) : list
00:18:10 v #18763 > > u =
00:18:10 v #18764 > >     backend_switch {
00:18:10 v #18765 > >         Fsharp = fun () =>
00:18:10 v #18766 > >             (list, init)
00:18:10 v #18767 > >             ||> $'List.foldBack' join fun x acc => Cons (fn x, acc)
00:18:10 v #18768 > >             : list u
00:18:10 v #18769 > >         Python = fun () =>
00:18:10 v #18770 > >             list
00:18:10 v #18771 > >             |> rev'
00:18:10 v #18772 > >             |> fold' fn init
00:18:10 v #18773 > >     }
00:18:10 v #18774 > >
00:18:10 v #18775 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:10 v #18776 > > │ ### filter'
00:18:10 v #18777 > >
00:18:10 v #18778 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:10 v #18779 > > inl filter' forall t. (fn : t -> bool) (list : list' t) : list' t =
00:18:10 v #18780 > >     backend_switch {
00:18:10 v #18781 > >         Fsharp = fun () => list |> $'"List.filter !fn"' : list' t
00:18:10 v #18782 > >         Python = fun () => $'list(filter(!fn, !list))' : list' t
00:18:10 v #18783 > >     }
00:18:10 v #18784 > >
00:18:10 v #18785 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:10 v #18786 > > │ ### map
00:18:10 v #18787 > >
00:18:10 v #18788 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:10 v #18789 > > inl map forall t u. (fn : t -> u) (list : list' t) : list' u =
00:18:10 v #18790 > >     backend_switch {
00:18:10 v #18791 > >         Fsharp = fun () => list |> $'List.map' fn : list' u
00:18:10 v #18792 > >         Python = fun () => $'list(map(!fn, !list))' : list' u
00:18:10 v #18793 > >     }
00:18:10 v #18794 > >
00:18:10 v #18795 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:10 v #18796 > > │ ### unbox
00:18:10 v #18797 > >
00:18:10 v #18798 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:10 v #18799 > > inl unbox forall t. (list : list' t) : list t =
00:18:10 v #18800 > >     (list, Nil)
00:18:10 v #18801 > >     ||> fold_back' id
00:18:10 v #18802 > >
00:18:10 v #18803 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:10 v #18804 > > │ ### distinct'
00:18:10 v #18805 > >
00:18:10 v #18806 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:10 v #18807 > > // preserve order
00:18:10 v #18808 > > inl distinct' forall t. (list : list' t) : list' t =
00:18:10 v #18809 > >     backend_switch {
00:18:10 v #18810 > >         Fsharp = fun () => list |> $'List.distinct' : list' t
00:18:10 v #18811 > >         Python = fun () =>
00:18:10 v #18812 > >             $'x = list(set(!list))'
00:18:10 v #18813 > >             $'x.sort(key=!list.index)'
00:18:10 v #18814 > >             $'x' : list' t
00:18:10 v #18815 > >     }
00:18:10 v #18816 > >
00:18:10 v #18817 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:10 v #18818 > > //// test
00:18:10 v #18819 > > ///! fsharp
00:18:10 v #18820 > > ///! cuda
00:18:10 v #18821 > >
00:18:10 v #18822 > > [[ "1"; "2"; "2"; "3" ]]
00:18:10 v #18823 > > |> box
00:18:10 v #18824 > > |> distinct'
00:18:10 v #18825 > > |> unbox
00:18:10 v #18826 > > |> _assert_eq [[ "1"; "2"; "3" ]]
00:18:11 v #18827 > >
00:18:11 v #18828 > > ── [ 717.33ms - return value ] ─────────────────────────────────────────────────
00:18:11 v #18829 > > │ .py output (Cuda):
00:18:11 v #18830 > > │ __assert_eq / actual: UH0_1(v0='1', v1=UH0_1(v0='2',
00:18:11 v #18831 > > v1=UH0_1(v0='3', v1=UH0_0()))) / expected: UH0_1(v0='1', v1=UH0_1(v0='2',
00:18:11 v #18832 > > v1=UH0_1(v0='3', v1=UH0_0())))
00:18:11 v #18833 > > │
00:18:11 v #18834 > > │
00:18:11 v #18835 > >
00:18:11 v #18836 > > ── [ 717.96ms - stdout ] ───────────────────────────────────────────────────────
00:18:11 v #18837 > > │ .fsx output:
00:18:11 v #18838 > > │ __assert_eq / actual: UH0_1 ("1", UH0_1 ("2", UH0_1 ("3",
00:18:11 v #18839 > > UH0_0))) / expected: UH0_1 ("1", UH0_1 ("2", UH0_1 ("3", UH0_0)))
00:18:11 v #18840 > > │
00:18:11 v #18841 > >
00:18:11 v #18842 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:11 v #18843 > > │ ### to_array'
00:18:11 v #18844 > >
00:18:11 v #18845 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:11 v #18846 > > inl to_array' forall t. (items : list' t) : array_base t =
00:18:11 v #18847 > >     backend_switch {
00:18:11 v #18848 > >         Fsharp = fun () => items |> $'List.toArray' : array_base t
00:18:11 v #18849 > >         Python = fun () => $'(cp if cuda else np).array(!items)' : array_base t
00:18:11 v #18850 > >     }
00:18:11 v #18851 > 00:00:15 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 26323 }
00:18:11 v #18852 > 00:00:15 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/listm'.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/listm'.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:18:12 v #18853 > 00:00:16 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/listm'.dib.ipynb to html
00:18:12 v #18854 > 00:00:16 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:18:12 v #18855 > 00:00:16 v #7 !   validate(nb)
00:18:13 v #18856 > 00:00:16 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:18:13 v #18857 > 00:00:16 v #9 !   return _pygments_highlight(
00:18:13 v #18858 > 00:00:17 v #10 ! [NbConvertApp] Writing 389680 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/listm'.dib.html
00:18:13 v #18859 > 00:00:17 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 896 }
00:18:13 v #18860 > 00:00:17 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 896 }
00:18:13 v #18861 > 00:00:17 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/listm''.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/listm''.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:18:13 v #18862 > 00:00:17 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:18:13 v #18863 > 00:00:17 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:18:13 v #18864 > 00:00:17 d #16 spiral.run / dib / { exit_code = 0; result_length = 27278 }
00:18:13 d #18865 runtime.execute_with_options_async / { exit_code = 0; output_length = 31427 }
00:18:13 d #24 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path listm'.dib --retries 3
00:18:13 d #18866 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path reflection.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path reflection.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:18:13 v #18867 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "reflection.dib", "--retries", "3"])) }
00:18:13 v #18868 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/reflection.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/reflection.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/reflection.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/reflection.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:18:15 v #18869 > >
00:18:15 v #18870 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:15 v #18871 > > │ # reflection
00:18:17 v #18872 > >
00:18:17 v #18873 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:17 v #18874 > > //// test
00:18:17 v #18875 > >
00:18:17 v #18876 > > open testing
00:18:18 v #18877 > >
00:18:18 v #18878 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:18 v #18879 > > │ ## reflection
00:18:18 v #18880 > >
00:18:18 v #18881 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:18 v #18882 > > │ ### get_union_fields
00:18:18 v #18883 > >
00:18:18 v #18884 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:18 v #18885 > > inl get_union_fields forall union_type. () : list (string * union_type) =
00:18:18 v #18886 > >     real
00:18:18 v #18887 > >         real_core.union_to_record
00:18:18 v #18888 > >             `union_type
00:18:18 v #18889 > >             forall union_record_type. =>
00:18:18 v #18890 > >                 real_core.record_type_fold
00:18:18 v #18891 > >                     fun acc key =>
00:18:18 v #18892 > >                         forall value. =>
00:18:18 v #18893 > >                             inl value =
00:18:18 v #18894 > >                                 typecase value with
00:18:18 v #18895 > >                                 | () => $'' : value
00:18:18 v #18896 > >                                 | _ =>
00:18:18 v #18897 > >                                     backend_switch `value `({}) {
00:18:18 v #18898 > >                                         Fsharp =
00:18:18 v #18899 > >                                             (fun () =>
00:18:18 v #18900 > >                                                 $'Unchecked.defaultof<_>' :
00:18:18 v #18901 > > value
00:18:18 v #18902 > >                                             ) : () -> value
00:18:18 v #18903 > >                                         Python =
00:18:18 v #18904 > >                                             (fun () =>
00:18:18 v #18905 > >                                                 $'None' : value
00:18:18 v #18906 > >                                             ) : () -> value
00:18:18 v #18907 > >                                     }
00:18:18 v #18908 > >                             inl item = real_core.nominal_create `union_type
00:18:18 v #18909 > > (key, value)
00:18:18 v #18910 > >                             inl key' = sm'_real.symbol_to_string `(`key)
00:18:18 v #18911 > >                             (::) `(string * union_type) (key', item) acc
00:18:18 v #18912 > >                     (Nil `(string * union_type))
00:18:18 v #18913 > >                     `union_record_type
00:18:18 v #18914 > >
00:18:18 v #18915 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:18 v #18916 > > //// test
00:18:18 v #18917 > > ///! fsharp
00:18:18 v #18918 > > ///! rust
00:18:18 v #18919 > > ///! typescript
00:18:18 v #18920 > > ///! python
00:18:18 v #18921 > >
00:18:18 v #18922 > > get_union_fields ()
00:18:18 v #18923 > > |> listm'.box
00:18:18 v #18924 > > |> listm'.to_array'
00:18:18 v #18925 > > |> a
00:18:18 v #18926 > > |> am'.sort_by snd
00:18:18 v #18927 > > |> fun (a x : _ int _) => x
00:18:18 v #18928 > > |> _assert_eq' ;[[ "Native", Native; "Wasm", Wasm; "Contract", Contract ]]
00:18:27 v #18929 > >
00:18:27 v #18930 > > ── [ 8.82s - return value ] ────────────────────────────────────────────────────
00:18:27 v #18931 > > │ .rs output:
00:18:27 v #18932 > > │ __assert_eq' / actual: Array(MutCell([("Native", US0_0),
00:18:27 v #18933 > > ("Wasm", US0_1), ("Contract", US0_2)])) / expected: Array(MutCell([("Native",
00:18:27 v #18934 > > US0_0), ("Wasm", US0_1), ("Contract", US0_2)]))
00:18:27 v #18935 > > │
00:18:27 v #18936 > > │ .ts output:
00:18:27 v #18937 > > │ __assert_eq' / actual: Native,US0_0,Wasm,US0_1,Contract,US0_2
00:18:27 v #18938 > > / expected: Native,US0_0,Wasm,US0_1,Contract,US0_2
00:18:27 v #18939 > > │
00:18:27 v #18940 > > │ .py output:
00:18:27 v #18941 > > │ __assert_eq' / actual: [('Native', US0_0), ('Wasm', US0_1),
00:18:27 v #18942 > > ('Contract', US0_2)] / expected: [('Native', US0_0), ('Wasm', US0_1),
00:18:27 v #18943 > > ('Contract', US0_2)]
00:18:27 v #18944 > > │
00:18:27 v #18945 > > │
00:18:27 v #18946 > >
00:18:27 v #18947 > > ── [ 8.82s - stdout ] ──────────────────────────────────────────────────────────
00:18:27 v #18948 > > │ .fsx output:
00:18:27 v #18949 > > │ __assert_eq' / actual: [|struct ("Native", US0_0); struct
00:18:27 v #18950 > > ("Wasm", US0_1); struct ("Contract", US0_2)|] / expected: [|struct ("Native",
00:18:27 v #18951 > > US0_0); struct ("Wasm", US0_1); struct ("Contract", US0_2)|]
00:18:27 v #18952 > > │
00:18:27 v #18953 > >
00:18:27 v #18954 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:27 v #18955 > > //// test
00:18:27 v #18956 > > ///! fsharp
00:18:27 v #18957 > > ///! rust
00:18:27 v #18958 > > ///! typescript
00:18:27 v #18959 > > ///! python
00:18:27 v #18960 > >
00:18:27 v #18961 > > get_union_fields ()
00:18:27 v #18962 > > |> listm'.box
00:18:27 v #18963 > > |> listm'.to_array'
00:18:27 v #18964 > > |> a
00:18:27 v #18965 > > |> am'.sort_by snd
00:18:27 v #18966 > > |> fun (a x : _ int _) => x
00:18:27 v #18967 > > |> _assert_eq' ;[[ "Some", Some 0i32; "None", None ]]
00:18:34 v #18968 > >
00:18:34 v #18969 > > ── [ 7.87s - return value ] ────────────────────────────────────────────────────
00:18:34 v #18970 > > │ .rs output:
00:18:34 v #18971 > > │ __assert_eq' / actual: Array(MutCell([("Some", US0_0(0)),
00:18:34 v #18972 > > ("None", US0_1)])) / expected: Array(MutCell([("Some", US0_0(0)), ("None",
00:18:34 v #18973 > > US0_1)]))
00:18:34 v #18974 > > │
00:18:34 v #18975 > > │ .ts output:
00:18:34 v #18976 > > │ __assert_eq' / actual: Some,US0_0 0,None,US0_1 / expected:
00:18:34 v #18977 > > Some,US0_0 0,None,US0_1
00:18:34 v #18978 > > │
00:18:34 v #18979 > > │ .py output:
00:18:34 v #18980 > > │ __assert_eq' / actual: [('Some', US0_0 0), ('None', US0_1)]
00:18:34 v #18981 > > expected: [('Some', US0_0 0), ('None', US0_1)]
00:18:34 v #18982 > > │
00:18:34 v #18983 > > │
00:18:34 v #18984 > >
00:18:34 v #18985 > > ── [ 7.87s - stdout ] ──────────────────────────────────────────────────────────
00:18:34 v #18986 > > │ .fsx output:
00:18:34 v #18987 > > │ __assert_eq' / actual: [|struct ("Some", US0_0 0); struct
00:18:34 v #18988 > > ("None", US0_1)|] / expected: [|struct ("Some", US0_0 0); struct ("None",
00:18:34 v #18989 > > US0_1)|]
00:18:34 v #18990 > > │
00:18:34 v #18991 > >
00:18:34 v #18992 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:34 v #18993 > > │ ### get_union_fields_untag
00:18:34 v #18994 > >
00:18:34 v #18995 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:34 v #18996 > > inl get_union_fields_untag forall union_type. () : list (string * union_type) =
00:18:34 v #18997 > >     real
00:18:34 v #18998 > >         real_core.union_to_record
00:18:34 v #18999 > >             `union_type
00:18:34 v #19000 > >             forall union_record_type. =>
00:18:34 v #19001 > >                 inl result =
00:18:34 v #19002 > >                     real_core.record_type_fold_back
00:18:34 v #19003 > >                         fun _key =>
00:18:34 v #19004 > >                             forall value. (acc, (i : i32)) =>
00:18:34 v #19005 > >                                 inl key, item : (string * union_type) =
00:18:34 v #19006 > >                                     real_core.union_untag `union_type i
00:18:34 v #19007 > >                                         (fun key => forall value. =>
00:18:34 v #19008 > >                                             inl key' = sm'_real.symbol_to_string
00:18:34 v #19009 > > `(`key)
00:18:34 v #19010 > >                                             inl value =
00:18:34 v #19011 > >                                                 typecase value with
00:18:34 v #19012 > >                                                 | () => $'' : value
00:18:34 v #19013 > >                                                 | _ =>
00:18:34 v #19014 > >                                                     backend_switch `value `({})
00:18:34 v #19015 > > {
00:18:34 v #19016 > >                                                         Fsharp =
00:18:34 v #19017 > >                                                             (fun () =>
00:18:34 v #19018 > >
00:18:34 v #19019 > > $'Unchecked.defaultof<_>' : value
00:18:34 v #19020 > >                                                             ) : () -> value
00:18:34 v #19021 > >                                                         Python =
00:18:34 v #19022 > >                                                             (fun () =>
00:18:34 v #19023 > >                                                                 $'None' : value
00:18:34 v #19024 > >                                                             ) : () -> value
00:18:34 v #19025 > >                                                     }
00:18:34 v #19026 > >                                             inl item = real_core.nominal_create
00:18:34 v #19027 > > `union_type (key, value)
00:18:34 v #19028 > >                                             key', item
00:18:34 v #19029 > >                                         )
00:18:34 v #19030 > >                                         (fun _ =>
00:18:34 v #19031 > >                                             failwith
00:18:34 v #19032 > >                                                 `(string * union_type)
00:18:34 v #19033 > >
00:18:34 v #19034 > > "reflection.get_union_fields_untag / invalid tag"
00:18:34 v #19035 > >                                         )
00:18:34 v #19036 > >                                 (::) `(string * union_type) (key, item) acc, (+)
00:18:34 v #19037 > > `i32 i 1
00:18:34 v #19038 > >                         `union_record_type
00:18:34 v #19039 > >                         (Nil `(string * union_type), 0i32)
00:18:34 v #19040 > >                 inl result = fst `(list (string * union_type)) `i32 result
00:18:34 v #19041 > >                 listm.rev `(string * union_type) result
00:18:35 v #19042 > >
00:18:35 v #19043 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:35 v #19044 > > //// test
00:18:35 v #19045 > > ///! fsharp
00:18:35 v #19046 > > ///! cuda
00:18:35 v #19047 > > ///! rust
00:18:35 v #19048 > > ///! typescript
00:18:35 v #19049 > > ///! python
00:18:35 v #19050 > >
00:18:35 v #19051 > > get_union_fields_untag ()
00:18:35 v #19052 > > |> _assert_eq' [[ "Native", Native; "Wasm", Wasm; "Contract", Contract ]]
00:18:43 v #19053 > >
00:18:43 v #19054 > > ── [ 8.10s - return value ] ────────────────────────────────────────────────────
00:18:43 v #19055 > > │ .py output (Cuda):
00:18:43 v #19056 > > │ __assert_eq' / actual: UH0_1(v0='Native', v1=US0_0(),
00:18:43 v #19057 > > v2=UH0_1(v0='Wasm', v1=US0_1(), v2=UH0_1(v0='Contract', v1=US0_2(),
00:18:43 v #19058 > > v2=UH0_0()))) / expected: UH0_1(v0='Native', v1=US0_0(), v2=UH0_1(v0='Wasm',
00:18:43 v #19059 > > v1=US0_1(), v2=UH0_1(v0='Contract', v1=US0_2(), v2=UH0_0())))
00:18:43 v #19060 > > │
00:18:43 v #19061 > > │ .rs output:
00:18:43 v #19062 > > │ __assert_eq' / actual: UH0_1("Native", US0_0, UH0_1("Wasm",
00:18:43 v #19063 > > US0_1, UH0_1("Contract", US0_2, UH0_0))) / expected: UH0_1("Native", US0_0,
00:18:43 v #19064 > > UH0_1("Wasm", US0_1, UH0_1("Contract", US0_2, UH0_0)))
00:18:43 v #19065 > > │
00:18:43 v #19066 > > │ .ts output:
00:18:43 v #19067 > > │ __assert_eq' / actual: UH0_1 (Native, US0_0, UH0_1 (Wasm,
00:18:43 v #19068 > > US0_1, UH0_1 (Contract, US0_2, UH0_0))) / expected: UH0_1 (Native, US0_0, UH0_1
00:18:43 v #19069 > > (Wasm, US0_1, UH0_1 (Contract, US0_2, UH0_0)))
00:18:43 v #19070 > > │
00:18:43 v #19071 > > │ .py output:
00:18:43 v #19072 > > │ __assert_eq' / actual: UH0_1 ("Native", US0_0, UH0_1 ("Wasm",
00:18:43 v #19073 > > US0_1, UH0_1 ("Contract", US0_2, UH0_0))) / expected: UH0_1 ("Native", US0_0,
00:18:43 v #19074 > > UH0_1 ("Wasm", US0_1, UH0_1 ("Contract", US0_2, UH0_0)))
00:18:43 v #19075 > > │
00:18:43 v #19076 > > │
00:18:43 v #19077 > >
00:18:43 v #19078 > > ── [ 8.10s - stdout ] ──────────────────────────────────────────────────────────
00:18:43 v #19079 > > │ .fsx output:
00:18:43 v #19080 > > │ __assert_eq' / actual: UH0_1 ("Native", US0_0, UH0_1 ("Wasm",
00:18:43 v #19081 > > US0_1, UH0_1 ("Contract", US0_2, UH0_0))) / expected: UH0_1 ("Native", US0_0,
00:18:43 v #19082 > > UH0_1 ("Wasm", US0_1, UH0_1 ("Contract", US0_2, UH0_0)))
00:18:43 v #19083 > > │
00:18:43 v #19084 > >
00:18:43 v #19085 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:43 v #19086 > > //// test
00:18:43 v #19087 > > ///! fsharp
00:18:43 v #19088 > > ///! cuda
00:18:43 v #19089 > > ///! rust
00:18:43 v #19090 > > ///! typescript
00:18:43 v #19091 > > ///! python
00:18:43 v #19092 > >
00:18:43 v #19093 > > get_union_fields_untag ()
00:18:43 v #19094 > > |> _assert_eq' [[ "Some", Some (); "None", None ]]
00:18:51 v #19095 > >
00:18:51 v #19096 > > ── [ 7.93s - return value ] ────────────────────────────────────────────────────
00:18:51 v #19097 > > │ .py output (Cuda):
00:18:51 v #19098 > > │ __assert_eq' / actual: UH0_1(v0='Some', v1=US0_0(),
00:18:51 v #19099 > > v2=UH0_1(v0='None', v1=US0_1(), v2=UH0_0())) / expected: UH0_1(v0='Some',
00:18:51 v #19100 > > v1=US0_0(), v2=UH0_1(v0='None', v1=US0_1(), v2=UH0_0()))
00:18:51 v #19101 > > │
00:18:51 v #19102 > > │ .rs output:
00:18:51 v #19103 > > │ __assert_eq' / actual: UH0_1("Some", US0_0, UH0_1("None",
00:18:51 v #19104 > > US0_1, UH0_0)) / expected: UH0_1("Some", US0_0, UH0_1("None", US0_1, UH0_0))
00:18:51 v #19105 > > │
00:18:51 v #19106 > > │ .ts output:
00:18:51 v #19107 > > │ __assert_eq' / actual: UH0_1 (Some, US0_0, UH0_1 (None,
00:18:51 v #19108 > > US0_1, UH0_0)) / expected: UH0_1 (Some, US0_0, UH0_1 (None, US0_1, UH0_0))
00:18:51 v #19109 > > │
00:18:51 v #19110 > > │ .py output:
00:18:51 v #19111 > > │ __assert_eq' / actual: UH0_1 ("Some", US0_0, UH0_1 ("None",
00:18:51 v #19112 > > US0_1, UH0_0)) / expected: UH0_1 ("Some", US0_0, UH0_1 ("None", US0_1, UH0_0))
00:18:51 v #19113 > > │
00:18:51 v #19114 > > │
00:18:51 v #19115 > >
00:18:51 v #19116 > > ── [ 7.93s - stdout ] ──────────────────────────────────────────────────────────
00:18:51 v #19117 > > │ .fsx output:
00:18:51 v #19118 > > │ __assert_eq' / actual: UH0_1 ("Some", US0_0, UH0_1 ("None",
00:18:51 v #19119 > > US0_1, UH0_0)) / expected: UH0_1 ("Some", US0_0, UH0_1 ("None", US0_1, UH0_0))
00:18:51 v #19120 > > │
00:18:51 v #19121 > >
00:18:51 v #19122 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:51 v #19123 > > │ ### union_try_pick
00:18:51 v #19124 > >
00:18:51 v #19125 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:51 v #19126 > > inl union_try_pick forall t. (key : string) : option t =
00:18:51 v #19127 > >     real get_union_fields_untag `t ()
00:18:51 v #19128 > >     |> listm'.try_pick fun key', x =>
00:18:51 v #19129 > >         if key' = key
00:18:51 v #19130 > >         then Some x
00:18:51 v #19131 > >         else None
00:18:51 v #19132 > >
00:18:51 v #19133 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:51 v #19134 > > │ ### union_to_string
00:18:51 v #19135 > >
00:18:51 v #19136 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:51 v #19137 > > inl union_to_string forall t. (x : t) : string =
00:18:51 v #19138 > >     real get_union_fields_untag `t ()
00:18:51 v #19139 > >     |> listm'.try_pick fun key, x' =>
00:18:51 v #19140 > >         if x' = x
00:18:51 v #19141 > >         then Some key
00:18:51 v #19142 > >         else
00:18:51 v #19143 > >             inl has_case =
00:18:51 v #19144 > >                 real
00:18:51 v #19145 > >                     real_core.union_to_record
00:18:51 v #19146 > >                         `t
00:18:51 v #19147 > >                         forall union_record_type. =>
00:18:51 v #19148 > >                             real_core.record_type_fold_back
00:18:51 v #19149 > >                                 fun _key =>
00:18:51 v #19150 > >                                     forall value. acc =>
00:18:51 v #19151 > >                                         if acc
00:18:51 v #19152 > >                                         then acc
00:18:51 v #19153 > >                                         else
00:18:51 v #19154 > >                                             typecase value with
00:18:51 v #19155 > >                                             | () => false
00:18:51 v #19156 > >                                             | _ => true
00:18:51 v #19157 > >                                 `union_record_type
00:18:51 v #19158 > >                                 false
00:18:51 v #19159 > >             if has_case |> not
00:18:51 v #19160 > >             then None
00:18:51 v #19161 > >             else
00:18:51 v #19162 > >                 inl separator =
00:18:51 v #19163 > >                     backend_switch {
00:18:51 v #19164 > >                         Fsharp = fun () =>
00:18:51 v #19165 > >                             run_target function
00:18:51 v #19166 > >                                 | Rust _ => fun () => join "("
00:18:51 v #19167 > >                                 | _ => fun () => join " "
00:18:51 v #19168 > >                         Python = fun () => "("
00:18:51 v #19169 > >                     }
00:18:51 v #19170 > >                 inl x' = x' |> sm'.format |> sm'.split separator |>
00:18:51 v #19171 > > am'.index_base 0
00:18:51 v #19172 > >                 if x |> sm'.format |> sm'.starts_with x'
00:18:51 v #19173 > >                 then Some key
00:18:51 v #19174 > >                 else None
00:18:51 v #19175 > >     |> optionm.value
00:18:51 v #19176 > >
00:18:51 v #19177 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:51 v #19178 > > //// test
00:18:51 v #19179 > > ///! fsharp
00:18:51 v #19180 > > ///! cuda
00:18:51 v #19181 > > ///! rust
00:18:51 v #19182 > > ///! typescript
00:18:51 v #19183 > > ///! python
00:18:51 v #19184 > >
00:18:51 v #19185 > > Some true
00:18:51 v #19186 > > |> union_to_string
00:18:51 v #19187 > > |> _assert_eq' "Some"
00:18:59 v #19188 > >
00:18:59 v #19189 > > ── [ 8.53s - return value ] ────────────────────────────────────────────────────
00:18:59 v #19190 > > │ .py output (Cuda):
00:18:59 v #19191 > > │ __assert_eq' / actual: Some / expected: Some
00:18:59 v #19192 > > │
00:18:59 v #19193 > > │ .rs output:
00:18:59 v #19194 > > │ __assert_eq' / actual: "Some" / expected: "Some"
00:18:59 v #19195 > > │
00:18:59 v #19196 > > │ .ts output:
00:18:59 v #19197 > > │ __assert_eq' / actual: Some / expected: Some
00:18:59 v #19198 > > │
00:18:59 v #19199 > > │ .py output:
00:18:59 v #19200 > > │ __assert_eq' / actual: Some / expected: Some
00:18:59 v #19201 > > │
00:18:59 v #19202 > > │
00:18:59 v #19203 > >
00:18:59 v #19204 > > ── [ 8.53s - stdout ] ──────────────────────────────────────────────────────────
00:18:59 v #19205 > > │ .fsx output:
00:18:59 v #19206 > > │ __assert_eq' / actual: "Some" / expected: "Some"
00:18:59 v #19207 > > │
00:18:59 v #19208 > >
00:18:59 v #19209 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:59 v #19210 > > │ ### nameof
00:18:59 v #19211 > >
00:18:59 v #19212 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:59 v #19213 > > inl nameof forall t. (x : t) : string =
00:18:59 v #19214 > >     real
00:18:59 v #19215 > >         real_core.record_type_fold_back
00:18:59 v #19216 > >             fun key =>
00:18:59 v #19217 > >                 forall value. _ =>
00:18:59 v #19218 > >                     sm'_real.symbol_to_string `(`key)
00:18:59 v #19219 > >             `t
00:18:59 v #19220 > >             ""
00:19:00 v #19221 > >
00:19:00 v #19222 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:00 v #19223 > > //// test
00:19:00 v #19224 > >
00:19:00 v #19225 > > { test1 = ""; test2 = "" }
00:19:00 v #19226 > > |> nameof
00:19:00 v #19227 > > |> _assert_eq' "test1"
00:19:00 v #19228 > >
00:19:00 v #19229 > > ── [ 183.45ms - stdout ] ───────────────────────────────────────────────────────
00:19:00 v #19230 > > │ __assert_eq' / actual: "test1" / expected: "test1"
00:19:00 v #19231 > > │
00:19:00 v #19232 > >
00:19:00 v #19233 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:00 v #19234 > > │ ### get_record_fields
00:19:00 v #19235 > >
00:19:00 v #19236 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:00 v #19237 > > inl get_record_fields forall t u. (x : t) : list (string * u) =
00:19:00 v #19238 > >     real
00:19:00 v #19239 > >         real_core.record_type_fold_back
00:19:00 v #19240 > >             fun key =>
00:19:00 v #19241 > >                 forall u'. acc =>
00:19:00 v #19242 > >                     inl k = sm'_real.symbol_to_string `(`key)
00:19:00 v #19243 > >                     inl v = x key
00:19:00 v #19244 > >                     (::) `(string * u') (k, v) acc
00:19:00 v #19245 > >             `t
00:19:00 v #19246 > >             (Nil `(string * u))
00:19:00 v #19247 > >
00:19:00 v #19248 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:00 v #19249 > > //// test
00:19:00 v #19250 > >
00:19:00 v #19251 > > { a = "1"; b = "2" }
00:19:00 v #19252 > > |> get_record_fields
00:19:00 v #19253 > > |> _assert_eq' [[ "a", "1"; "b", "2" ]]
00:19:00 v #19254 > >
00:19:00 v #19255 > > ── [ 167.83ms - stdout ] ───────────────────────────────────────────────────────
00:19:00 v #19256 > > │ __assert_eq' / actual: UH0_1 ("a", "1", UH0_1 ("b", "2",
00:19:00 v #19257 > > UH0_0)) / expected: UH0_1 ("a", "1", UH0_1 ("b", "2", UH0_0))
00:19:00 v #19258 > > │
00:19:00 v #19259 > >
00:19:00 v #19260 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:00 v #19261 > > │ ### get_functions_types
00:19:00 v #19262 > >
00:19:00 v #19263 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:00 v #19264 > > inl get_functions_types forall t {record}. (fns : t) =
00:19:00 v #19265 > >     real
00:19:00 v #19266 > >         inl get_function_type forall t. =
00:19:00 v #19267 > >             inl args forall t {record}. : list (string * string) =
00:19:00 v #19268 > >                 real_core.record_type_fold_back
00:19:00 v #19269 > >                     fun key =>
00:19:00 v #19270 > >                         forall v. acc =>
00:19:00 v #19271 > >                             inl k = sm'_real.symbol_to_string `(`key)
00:19:00 v #19272 > >                             inl v = $'"`v"' : string
00:19:00 v #19273 > >                             (::) `(string * string) (k, v) acc
00:19:00 v #19274 > >                     `t
00:19:00 v #19275 > >                     (Nil `(string * string))
00:19:00 v #19276 > >
00:19:00 v #19277 > >             typecase t with
00:19:00 v #19278 > >             | ~t -> ~u => args `t, ($'"`u"' : string)
00:19:00 v #19279 > >
00:19:00 v #19280 > >         real_core.record_type_fold_back
00:19:00 v #19281 > >             fun key =>
00:19:00 v #19282 > >                 forall v. acc =>
00:19:00 v #19283 > >                     inl k = sm'_real.symbol_to_string `(`key)
00:19:00 v #19284 > >                     inl args, result = get_function_type `v
00:19:00 v #19285 > >                     (::) `(string * (list (string * string) * string)) (k,
00:19:00 v #19286 > > (args, result)) acc
00:19:00 v #19287 > >             `(`fns)
00:19:00 v #19288 > >             (Nil `(string * (list (string * string) * string)))
00:19:00 v #19289 > >     |> fun x => x : list (string * (list (string * string) * string))
00:19:00 v #19290 > >
00:19:00 v #19291 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:00 v #19292 > > //// test
00:19:00 v #19293 > >
00:19:00 v #19294 > > inl one ({ a } : { a : i32 }) : i32 = a + 1
00:19:00 v #19295 > > inl two ({ a b } : { a : i32; b : i32 }) : i32 = a + b + 2
00:19:00 v #19296 > > inl fns = { one two }
00:19:00 v #19297 > >
00:19:00 v #19298 > > fns
00:19:00 v #19299 > > |> get_functions_types
00:19:00 v #19300 > > |> listm.map fun (name, args, result) => name, (args |> listm'.box |>
00:19:00 v #19301 > > listm'.to_array', result)
00:19:00 v #19302 > > |> listm'.box
00:19:00 v #19303 > > |> listm'.to_array'
00:19:00 v #19304 > > |> sm'.format
00:19:00 v #19305 > > |> _assert_eq' (
00:19:00 v #19306 > >     [[
00:19:00 v #19307 > >         "one", [["a", "int32"]], "int32"
00:19:00 v #19308 > >         "two", [["a", "int32"; "b", "int32"]], "int32"
00:19:00 v #19309 > >     ]]
00:19:00 v #19310 > >     |> listm.map fun (name, args, result) => name, (args |> listm'.box |>
00:19:00 v #19311 > > listm'.to_array', result)
00:19:00 v #19312 > >     |> listm'.box
00:19:00 v #19313 > >     |> listm'.to_array'
00:19:00 v #19314 > >     |> sm'.format
00:19:00 v #19315 > > )
00:19:00 v #19316 > >
00:19:00 v #19317 > > ── [ 180.30ms - stdout ] ───────────────────────────────────────────────────────
00:19:00 v #19318 > > │ __assert_eq' / actual: "[|struct ("one", [|struct ("a",
00:19:00 v #19319 > > "int32")|], "int32");
00:19:00 v #19320 > > │   struct ("two", [|struct ("a", "int32"); struct ("b",
00:19:00 v #19321 > > "int32")|], "int32")|]" / expected: "[|struct ("one", [|struct ("a", "int32")|],
00:19:00 v #19322 > > "int32");
00:19:00 v #19323 > > │   struct ("two", [|struct ("a", "int32"); struct ("b",
00:19:00 v #19324 > > "int32")|], "int32")|]"
00:19:00 v #19325 > > │
00:19:01 v #19326 > 00:00:47 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 18911 }
00:19:01 v #19327 > 00:00:47 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/reflection.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/reflection.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:19:01 v #19328 > 00:00:47 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/reflection.dib.ipynb to html
00:19:01 v #19329 > 00:00:47 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:19:01 v #19330 > 00:00:47 v #7 !   validate(nb)
00:19:02 v #19331 > 00:00:48 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:19:02 v #19332 > 00:00:48 v #9 !   return _pygments_highlight(
00:19:02 v #19333 > 00:00:48 v #10 ! [NbConvertApp] Writing 327007 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/reflection.dib.html
00:19:02 v #19334 > 00:00:48 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 904 }
00:19:02 v #19335 > 00:00:48 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 904 }
00:19:02 v #19336 > 00:00:48 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/reflection.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/reflection.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:19:02 v #19337 > 00:00:48 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:19:02 v #19338 > 00:00:48 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:19:02 v #19339 > 00:00:48 d #16 spiral.run / dib / { exit_code = 0; result_length = 19874 }
00:19:02 d #19340 runtime.execute_with_options_async / { exit_code = 0; output_length = 23479 }
00:19:02 d #25 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path reflection.dib --retries 3
00:19:02 d #19341 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path iter.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path iter.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:19:02 v #19342 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "iter.dib", "--retries", "3"])) }
00:19:02 v #19343 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/iter.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/iter.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/iter.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/iter.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:19:03 v #19344 > >
00:19:03 v #19345 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:03 v #19346 > > │ # iter
00:19:06 v #19347 > >
00:19:06 v #19348 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:06 v #19349 > > open rust
00:19:06 v #19350 > > open rust_operators
00:19:06 v #19351 > >
00:19:06 v #19352 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:06 v #19353 > > //// test
00:19:06 v #19354 > >
00:19:06 v #19355 > > open testing
00:19:07 v #19356 > >
00:19:07 v #19357 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:07 v #19358 > > │ ## rust
00:19:07 v #19359 > >
00:19:07 v #19360 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:07 v #19361 > > │ ### enumerate
00:19:07 v #19362 > >
00:19:07 v #19363 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:07 v #19364 > > inl enumerate forall t. (iter : into_iterator t) : into_iterator (pair
00:19:07 v #19365 > > unativeint t) =
00:19:07 v #19366 > >     !\($'"!iter.enumerate().map(std::sync::Arc::new)"')
00:19:07 v #19367 > >
00:19:07 v #19368 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:07 v #19369 > > │ ### into_iter
00:19:07 v #19370 > >
00:19:07 v #19371 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:07 v #19372 > > inl into_iter forall (t : * -> *) u. (x : t u) : into_iterator u =
00:19:07 v #19373 > >     !\($'"!x.into_iter()"')
00:19:07 v #19374 > >
00:19:07 v #19375 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:07 v #19376 > > │ ### iter
00:19:07 v #19377 > >
00:19:07 v #19378 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:07 v #19379 > > inl iter forall (t : * -> *) u. (x : t u) : into_iterator u =
00:19:07 v #19380 > >     !\\(x, $'"$0.iter()"')
00:19:07 v #19381 > >
00:19:07 v #19382 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:07 v #19383 > > │ ### iter_ref
00:19:07 v #19384 > >
00:19:07 v #19385 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:07 v #19386 > > inl iter_ref forall (t : * -> *) u. (x : t u) : into_iterator (rust.ref u) =
00:19:07 v #19387 > >     !\\(x, $'"$0.iter()"')
00:19:07 v #19388 > >
00:19:07 v #19389 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:07 v #19390 > > │ ### iter_ref'
00:19:07 v #19391 > >
00:19:07 v #19392 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:07 v #19393 > > inl iter_ref' forall (t : * -> *) u. (x : rust.ref (t u)) : into_iterator
00:19:07 v #19394 > > (rust.ref u) =
00:19:07 v #19395 > >     !\\(x, $'"$0.iter()"')
00:19:07 v #19396 > >
00:19:07 v #19397 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:07 v #19398 > > │ ### iter_ref''
00:19:07 v #19399 > >
00:19:07 v #19400 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:07 v #19401 > > inl iter_ref'' forall (t : * -> *) u (v : * -> *). (x : v (t u)) : into_iterator
00:19:07 v #19402 > > (rust.ref u) =
00:19:07 v #19403 > >     !\\(x, $'"$0.iter()"')
00:19:08 v #19404 > >
00:19:08 v #19405 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:08 v #19406 > > │ ### iter_ref'''
00:19:08 v #19407 > >
00:19:08 v #19408 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:08 v #19409 > > inl iter_ref''' forall (t : * -> *) u (v : * -> *) (w : * -> *). (x : w (v (t
00:19:08 v #19410 > > u))) : into_iterator (rust.ref u) =
00:19:08 v #19411 > >     !\\(x, $'"$0.iter()"')
00:19:08 v #19412 > >
00:19:08 v #19413 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:08 v #19414 > > │ ### map
00:19:08 v #19415 > >
00:19:08 v #19416 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:08 v #19417 > > inl map forall t u. (fn : t -> u) (iter : into_iterator t) : into_iterator u =
00:19:08 v #19418 > >     !\\(fn, $'"!iter.map(|x| $0(x))"')
00:19:08 v #19419 > >
00:19:08 v #19420 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:08 v #19421 > > │ ### cloned
00:19:08 v #19422 > >
00:19:08 v #19423 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:08 v #19424 > > inl cloned forall t. (iter : into_iterator (rust.ref t)) : into_iterator t =
00:19:08 v #19425 > >     !\($'"!iter.cloned()"')
00:19:08 v #19426 > >
00:19:08 v #19427 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:08 v #19428 > > │ ### for_each
00:19:08 v #19429 > >
00:19:08 v #19430 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:08 v #19431 > > inl for_each forall t. (fn : t -> ()) (iter : into_iterator t) : () =
00:19:08 v #19432 > >     (!\\(fn, $'"true; !iter.for_each(|x| $0(x))"') : bool) |> ignore
00:19:08 v #19433 > >
00:19:08 v #19434 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:08 v #19435 > > │ ### try_for_each
00:19:08 v #19436 > >
00:19:08 v #19437 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:08 v #19438 > > inl try_for_each forall t. (fn : t -> rust.try ()) x : resultm.result' () string
00:19:08 v #19439 > > =
00:19:08 v #19440 > >     (!\($'"true; let mut !x = !x; let _iter_try_for_each = !x.try_for_each(|x| {
00:19:08 v #19441 > > //"') : bool) |> ignore
00:19:08 v #19442 > >     (!\\(fn !\($'"x"'), $'"true; $0 }); //"') : bool) |> ignore
00:19:08 v #19443 > >     !\($'"_iter_try_for_each.map_err(|x| x.into())"')
00:19:08 v #19444 > >
00:19:08 v #19445 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:08 v #19446 > > │ ### all
00:19:08 v #19447 > >
00:19:08 v #19448 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:08 v #19449 > > inl all forall t. (fn : t -> bool) (x : rust.mut' (into_iterator t)) : bool =
00:19:08 v #19450 > >     x |> rust.to_mut
00:19:08 v #19451 > >     !\\(fn, $'$"!x.all(|x| $0(x))"')
00:19:08 v #19452 > >
00:19:08 v #19453 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:08 v #19454 > > │ ### enumerate
00:19:08 v #19455 > >
00:19:08 v #19456 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:08 v #19457 > > inl enumerate forall dim {int; number} t. (ar : a dim t) : a dim (unativeint *
00:19:08 v #19458 > > t) =
00:19:08 v #19459 > >     inl (a ar) = ar
00:19:08 v #19460 > >     ar
00:19:08 v #19461 > >     |> am'.to_vec
00:19:08 v #19462 > >     |> into_iter
00:19:08 v #19463 > >     |> enumerate
00:19:08 v #19464 > >     |> iter_collect
00:19:08 v #19465 > >     |> am'.vec_map' from_pair
00:19:08 v #19466 > >     |> am'.from_vec
00:19:09 v #19467 > >
00:19:09 v #19468 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:09 v #19469 > > //// test
00:19:09 v #19470 > > ///! rust
00:19:09 v #19471 > >
00:19:09 v #19472 > > am'.init_series 0i32 2 1
00:19:09 v #19473 > > |> fun x => a x : _ int _
00:19:09 v #19474 > > |> enumerate
00:19:09 v #19475 > > |> fun (a x : _ int _) => x
00:19:09 v #19476 > > |> _assert_eq' ;[[ convert 0i32, 0; convert 1i32, 1; convert 2i32, 2 ]]
00:19:14 v #19477 > >
00:19:14 v #19478 > > ── [ 5.80s - return value ] ────────────────────────────────────────────────────
00:19:14 v #19479 > > │ __assert_eq' / actual: Array(MutCell([(0, 0), (1, 1), (2,
00:19:14 v #19480 > > 2)])) / expected: Array(MutCell([(0, 0), (1, 1), (2, 2)]))
00:19:14 v #19481 > > │
00:19:14 v #19482 > 00:00:12 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 5913 }
00:19:14 v #19483 > 00:00:12 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/iter.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/iter.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:19:15 v #19484 > 00:00:12 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/iter.dib.ipynb to html
00:19:15 v #19485 > 00:00:12 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:19:15 v #19486 > 00:00:12 v #7 !   validate(nb)
00:19:16 v #19487 > 00:00:13 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:19:16 v #19488 > 00:00:13 v #9 !   return _pygments_highlight(
00:19:16 v #19489 > 00:00:13 v #10 ! [NbConvertApp] Writing 299042 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/iter.dib.html
00:19:16 v #19490 > 00:00:13 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 892 }
00:19:16 v #19491 > 00:00:13 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 892 }
00:19:16 v #19492 > 00:00:13 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/iter.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/iter.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:19:16 v #19493 > 00:00:13 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:19:16 v #19494 > 00:00:13 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:19:16 v #19495 > 00:00:13 d #16 spiral.run / dib / { exit_code = 0; result_length = 6864 }
00:19:16 d #19496 runtime.execute_with_options_async / { exit_code = 0; output_length = 9775 }
00:19:16 d #26 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path iter.dib --retries 3
00:19:16 d #19497 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path wasm.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path wasm.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:19:16 v #19498 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "wasm.dib", "--retries", "3"])) }
00:19:16 v #19499 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/wasm.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/wasm.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/wasm.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/wasm.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:19:17 v #19500 > >
00:19:17 v #19501 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:17 v #19502 > > │ # wasm
00:19:20 v #19503 > >
00:19:20 v #19504 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:20 v #19505 > > open rust
00:19:20 v #19506 > > open rust_operators
00:19:20 v #19507 > >
00:19:20 v #19508 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:20 v #19509 > > │ ### rexie
00:19:20 v #19510 > >
00:19:20 v #19511 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:20 v #19512 > > nominal rexie =
00:19:20 v #19513 > >     `(
00:19:20 v #19514 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:20 v #19515 > > Fable.Core.Emit(\"rexie::Rexie\")>]]\n#endif\ntype rexie_Rexie = class end"
00:19:20 v #19516 > >         $'' : $'rexie_Rexie'
00:19:20 v #19517 > >     )
00:19:20 v #19518 > >
00:19:20 v #19519 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:20 v #19520 > > │ ### rexie_store
00:19:20 v #19521 > >
00:19:20 v #19522 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:20 v #19523 > > nominal rexie_store =
00:19:20 v #19524 > >     `(
00:19:20 v #19525 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:20 v #19526 > > Fable.Core.Emit(\"rexie::Store\")>]]\n#endif\ntype rexie_Store = class end"
00:19:20 v #19527 > >         $'' : $'rexie_Store'
00:19:20 v #19528 > >     )
00:19:21 v #19529 > >
00:19:21 v #19530 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:21 v #19531 > > │ ### rexie_transaction
00:19:21 v #19532 > >
00:19:21 v #19533 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:21 v #19534 > > nominal rexie_transaction =
00:19:21 v #19535 > >     `(
00:19:21 v #19536 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:21 v #19537 > > Fable.Core.Emit(\"rexie::Transaction\")>]]\n#endif\ntype rexie_Transaction =
00:19:21 v #19538 > > class end"
00:19:21 v #19539 > >         $'' : $'rexie_Transaction'
00:19:21 v #19540 > >     )
00:19:21 v #19541 > >
00:19:21 v #19542 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:21 v #19543 > > │ ### rexie_error
00:19:21 v #19544 > >
00:19:21 v #19545 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:21 v #19546 > > nominal rexie_error =
00:19:21 v #19547 > >     `(
00:19:21 v #19548 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:21 v #19549 > > Fable.Core.Emit(\"rexie::Error\")>]]\n#endif\ntype rexie_Error = class end"
00:19:21 v #19550 > >         $'' : $'rexie_Error'
00:19:21 v #19551 > >     )
00:19:21 v #19552 > >
00:19:21 v #19553 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:21 v #19554 > > │ ### js_value
00:19:21 v #19555 > >
00:19:21 v #19556 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:21 v #19557 > > nominal js_value =
00:19:21 v #19558 > >     `(
00:19:21 v #19559 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:21 v #19560 > > Fable.Core.Emit(\"wasm_bindgen::JsValue\")>]]\n#endif\ntype wasm_bindgen_JsValue
00:19:21 v #19561 > > = class end"
00:19:21 v #19562 > >         $'' : $'wasm_bindgen_JsValue'
00:19:21 v #19563 > >     )
00:19:21 v #19564 > >
00:19:21 v #19565 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:21 v #19566 > > │ ### closure
00:19:21 v #19567 > >
00:19:21 v #19568 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:21 v #19569 > > nominal closure t =
00:19:21 v #19570 > >     `(
00:19:21 v #19571 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:21 v #19572 > > Fable.Core.Emit(\"wasm_bindgen::closure::Closure<$0>\")>]]\n#endif\ntype
00:19:21 v #19573 > > wasm_bindgen_closure_Closure<'T> = class end"
00:19:21 v #19574 > >         $'' : $'wasm_bindgen_closure_Closure<`t>'
00:19:21 v #19575 > >     )
00:19:21 v #19576 > >
00:19:21 v #19577 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:21 v #19578 > > │ ### js_function
00:19:21 v #19579 > >
00:19:21 v #19580 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:21 v #19581 > > nominal js_function =
00:19:21 v #19582 > >     `(
00:19:21 v #19583 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:21 v #19584 > > Fable.Core.Emit(\"js_sys::Function\")>]]\n#endif\ntype js_sys_Function = class
00:19:21 v #19585 > > end"
00:19:21 v #19586 > >         $'' : $'js_sys_Function'
00:19:21 v #19587 > >     )
00:19:21 v #19588 > >
00:19:21 v #19589 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:21 v #19590 > > │ ### window
00:19:21 v #19591 > >
00:19:21 v #19592 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:21 v #19593 > > nominal window =
00:19:21 v #19594 > >     `(
00:19:21 v #19595 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:21 v #19596 > > Fable.Core.Emit(\"web_sys::Window\")>]]\n#endif\ntype web_sys_Window = class
00:19:21 v #19597 > > end"
00:19:21 v #19598 > >         $'' : $'web_sys_Window'
00:19:21 v #19599 > >     )
00:19:21 v #19600 > >
00:19:21 v #19601 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:21 v #19602 > > │ ### document
00:19:21 v #19603 > >
00:19:21 v #19604 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:21 v #19605 > > nominal document =
00:19:21 v #19606 > >     `(
00:19:21 v #19607 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:21 v #19608 > > Fable.Core.Emit(\"web_sys::Document\")>]]\n#endif\ntype web_sys_Document = class
00:19:21 v #19609 > > end"
00:19:21 v #19610 > >         $'' : $'web_sys_Document'
00:19:21 v #19611 > >     )
00:19:22 v #19612 > >
00:19:22 v #19613 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:22 v #19614 > > │ ### html_element
00:19:22 v #19615 > >
00:19:22 v #19616 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:22 v #19617 > > nominal html_element =
00:19:22 v #19618 > >     `(
00:19:22 v #19619 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:22 v #19620 > > Fable.Core.Emit(\"web_sys::HtmlElement\")>]]\n#endif\ntype web_sys_HtmlElement =
00:19:22 v #19621 > > class end"
00:19:22 v #19622 > >         $'' : $'web_sys_HtmlElement'
00:19:22 v #19623 > >     )
00:19:22 v #19624 > >
00:19:22 v #19625 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:22 v #19626 > > │ ### storage
00:19:22 v #19627 > >
00:19:22 v #19628 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:22 v #19629 > > nominal storage =
00:19:22 v #19630 > >     `(
00:19:22 v #19631 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:22 v #19632 > > Fable.Core.Emit(\"web_sys::Storage\")>]]\n#endif\ntype web_sys_Storage = class
00:19:22 v #19633 > > end"
00:19:22 v #19634 > >         $'' : $'web_sys_Storage'
00:19:22 v #19635 > >     )
00:19:22 v #19636 > >
00:19:22 v #19637 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:22 v #19638 > > │ ### closure_wrap
00:19:22 v #19639 > >
00:19:22 v #19640 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:22 v #19641 > > inl closure_wrap forall t. (x : rust.box t) : closure t =
00:19:22 v #19642 > >     inl x = join x
00:19:22 v #19643 > >     !\($'"wasm_bindgen::closure::Closure::wrap(!x)"')
00:19:22 v #19644 > >
00:19:22 v #19645 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:22 v #19646 > > │ ### closure_forget
00:19:22 v #19647 > >
00:19:22 v #19648 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:22 v #19649 > > inl closure_forget forall t. (closure : closure t) =
00:19:22 v #19650 > >     !\($'"!closure.forget()"') : ()
00:19:22 v #19651 > >
00:19:22 v #19652 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:22 v #19653 > > │ ### closure_as_ref
00:19:22 v #19654 > >
00:19:22 v #19655 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:22 v #19656 > > inl closure_as_ref forall t. (closure : closure t) : rust.ref js_value =
00:19:22 v #19657 > >     !\($'"wasm_bindgen::closure::Closure::as_ref(&!closure)"')
00:19:22 v #19658 > >
00:19:22 v #19659 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:22 v #19660 > > │ ### unchecked_ref
00:19:22 v #19661 > >
00:19:22 v #19662 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:22 v #19663 > > inl unchecked_ref (ref : rust.ref js_value) : rust.ref js_function =
00:19:22 v #19664 > >     !\($'"wasm_bindgen::JsCast::unchecked_ref(!ref)"')
00:19:23 v #19665 > >
00:19:23 v #19666 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:23 v #19667 > > │ ### set_inner_html
00:19:23 v #19668 > >
00:19:23 v #19669 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:23 v #19670 > > inl set_inner_html (html : string) (el : html_element) =
00:19:23 v #19671 > >     inl html = join html
00:19:23 v #19672 > >     inl html = html |> sm'.as_str
00:19:23 v #19673 > >     inl el = join el
00:19:23 v #19674 > >     !\\(html, $'"!el.set_inner_html($0)"')
00:19:23 v #19675 > >
00:19:23 v #19676 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:23 v #19677 > > │ ### from_js_value
00:19:23 v #19678 > >
00:19:23 v #19679 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:23 v #19680 > > inl from_js_value (value : js_value) : resultm.result' (optionm'.option'
00:19:23 v #19681 > > sm'.json_value) sm'.std_string =
00:19:23 v #19682 > >     inl value = join value
00:19:23 v #19683 > >     !\($'"serde_wasm_bindgen::from_value(!value)"')
00:19:23 v #19684 > >     |> resultm.map_error' fun (x : sm'.serde_wasm_bindgen_error) => x |>
00:19:23 v #19685 > > sm'.format'
00:19:23 v #19686 > 00:00:06 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 7526 }
00:19:23 v #19687 > 00:00:06 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/wasm.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/wasm.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:19:24 v #19688 > 00:00:07 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/wasm.dib.ipynb to html
00:19:24 v #19689 > 00:00:07 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:19:24 v #19690 > 00:00:07 v #7 !   validate(nb)
00:19:24 v #19691 > 00:00:07 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:19:24 v #19692 > 00:00:07 v #9 !   return _pygments_highlight(
00:19:24 v #19693 > 00:00:08 v #10 ! [NbConvertApp] Writing 302414 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/wasm.dib.html
00:19:24 v #19694 > 00:00:08 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 892 }
00:19:24 v #19695 > 00:00:08 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 892 }
00:19:24 v #19696 > 00:00:08 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/wasm.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/wasm.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:19:24 v #19697 > 00:00:08 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:19:24 v #19698 > 00:00:08 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:19:24 v #19699 > 00:00:08 d #16 spiral.run / dib / { exit_code = 0; result_length = 8477 }
00:19:24 d #19700 runtime.execute_with_options_async / { exit_code = 0; output_length = 11484 }
00:19:24 d #27 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path wasm.dib --retries 3
00:19:24 d #19701 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path leptos/leptos.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path leptos/leptos.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:19:24 v #19702 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "leptos/leptos.dib", "--retries", "3"])) }
00:19:24 v #19703 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/leptos/leptos.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/leptos/leptos.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/leptos/leptos.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/leptos/leptos.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:19:26 v #19704 > >
00:19:26 v #19705 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:26 v #19706 > > │ # leptos
00:19:28 v #19707 > >
00:19:28 v #19708 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:28 v #19709 > > open rust.rust_operators
00:19:28 v #19710 > > open rust
00:19:28 v #19711 > > open sm'_operators
00:19:29 v #19712 > >
00:19:29 v #19713 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:29 v #19714 > > │ ### a'
00:19:29 v #19715 > >
00:19:29 v #19716 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:29 v #19717 > > nominal a' =
00:19:29 v #19718 > >     `(
00:19:29 v #19719 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:29 v #19720 > > Fable.Core.Emit(\"leptos::html::A\")>]]\n#endif\ntype leptos_html_A = class end"
00:19:29 v #19721 > >         $'' : $'leptos_html_A'
00:19:29 v #19722 > >     )
00:19:29 v #19723 > >
00:19:29 v #19724 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:29 v #19725 > > │ ### event
00:19:29 v #19726 > >
00:19:29 v #19727 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:29 v #19728 > > nominal event =
00:19:29 v #19729 > >     `(
00:19:29 v #19730 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:29 v #19731 > > Fable.Core.Emit(\"leptos::ev::Event\")>]]\n#endif\ntype leptos_ev_Event = class
00:19:29 v #19732 > > end"
00:19:29 v #19733 > >         $'' : $'leptos_ev_Event'
00:19:29 v #19734 > >     )
00:19:29 v #19735 > >
00:19:29 v #19736 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:29 v #19737 > > │ ### mouse_event
00:19:29 v #19738 > >
00:19:29 v #19739 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:29 v #19740 > > nominal mouse_event =
00:19:29 v #19741 > >     `(
00:19:29 v #19742 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:29 v #19743 > > Fable.Core.Emit(\"leptos::ev::MouseEvent\")>]]\n#endif\ntype
00:19:29 v #19744 > > leptos_ev_MouseEvent = class end"
00:19:29 v #19745 > >         $'' : $'leptos_ev_MouseEvent'
00:19:29 v #19746 > >     )
00:19:29 v #19747 > >
00:19:29 v #19748 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:29 v #19749 > > │ ### button
00:19:29 v #19750 > >
00:19:29 v #19751 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:29 v #19752 > > nominal button =
00:19:29 v #19753 > >     `(
00:19:29 v #19754 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:29 v #19755 > > Fable.Core.Emit(\"leptos::html::Button\")>]]\n#endif\ntype leptos_html_Button =
00:19:29 v #19756 > > class end"
00:19:29 v #19757 > >         $'' : $'leptos_html_Button'
00:19:29 v #19758 > >     )
00:19:29 v #19759 > >
00:19:29 v #19760 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:29 v #19761 > > │ ### details
00:19:29 v #19762 > >
00:19:29 v #19763 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:29 v #19764 > > nominal details =
00:19:29 v #19765 > >     `(
00:19:29 v #19766 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:29 v #19767 > > Fable.Core.Emit(\"leptos::html::Details\")>]]\n#endif\ntype leptos_html_Details
00:19:29 v #19768 > > = class end"
00:19:29 v #19769 > >         $'' : $'leptos_html_Details'
00:19:29 v #19770 > >     )
00:19:29 v #19771 > >
00:19:29 v #19772 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:29 v #19773 > > │ ### dd
00:19:29 v #19774 > >
00:19:29 v #19775 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:29 v #19776 > > nominal dd =
00:19:29 v #19777 > >     `(
00:19:29 v #19778 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:29 v #19779 > > Fable.Core.Emit(\"leptos::html::Dd\")>]]\n#endif\ntype leptos_html_Dd = class
00:19:29 v #19780 > > end"
00:19:29 v #19781 > >         $'' : $'leptos_html_Dd'
00:19:29 v #19782 > >     )
00:19:30 v #19783 > >
00:19:30 v #19784 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:30 v #19785 > > │ ### div
00:19:30 v #19786 > >
00:19:30 v #19787 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:30 v #19788 > > nominal div =
00:19:30 v #19789 > >     `(
00:19:30 v #19790 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:30 v #19791 > > Fable.Core.Emit(\"leptos::html::Div\")>]]\n#endif\ntype leptos_html_Div = class
00:19:30 v #19792 > > end"
00:19:30 v #19793 > >         $'' : $'leptos_html_Div'
00:19:30 v #19794 > >     )
00:19:30 v #19795 > >
00:19:30 v #19796 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:30 v #19797 > > │ ### dl
00:19:30 v #19798 > >
00:19:30 v #19799 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:30 v #19800 > > nominal dl =
00:19:30 v #19801 > >     `(
00:19:30 v #19802 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:30 v #19803 > > Fable.Core.Emit(\"leptos::html::Dl\")>]]\n#endif\ntype leptos_html_Dl = class
00:19:30 v #19804 > > end"
00:19:30 v #19805 > >         $'' : $'leptos_html_Dl'
00:19:30 v #19806 > >     )
00:19:30 v #19807 > >
00:19:30 v #19808 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:30 v #19809 > > │ ### dt
00:19:30 v #19810 > >
00:19:30 v #19811 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:30 v #19812 > > nominal dt =
00:19:30 v #19813 > >     `(
00:19:30 v #19814 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:30 v #19815 > > Fable.Core.Emit(\"leptos::html::Dt\")>]]\n#endif\ntype leptos_html_Dt = class
00:19:30 v #19816 > > end"
00:19:30 v #19817 > >         $'' : $'leptos_html_Dt'
00:19:30 v #19818 > >     )
00:19:30 v #19819 > >
00:19:30 v #19820 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:30 v #19821 > > │ ### footer
00:19:30 v #19822 > >
00:19:30 v #19823 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:30 v #19824 > > nominal footer =
00:19:30 v #19825 > >     `(
00:19:30 v #19826 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:30 v #19827 > > Fable.Core.Emit(\"leptos::html::Footer\")>]]\n#endif\ntype leptos_html_Footer =
00:19:30 v #19828 > > class end"
00:19:30 v #19829 > >         $'' : $'leptos_html_Footer'
00:19:30 v #19830 > >     )
00:19:30 v #19831 > >
00:19:30 v #19832 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:30 v #19833 > > │ ### header
00:19:30 v #19834 > >
00:19:30 v #19835 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:30 v #19836 > > nominal header =
00:19:30 v #19837 > >     `(
00:19:30 v #19838 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:30 v #19839 > > Fable.Core.Emit(\"leptos::html::Header\")>]]\n#endif\ntype leptos_html_Header =
00:19:30 v #19840 > > class end"
00:19:30 v #19841 > >         $'' : $'leptos_html_Header'
00:19:30 v #19842 > >     )
00:19:30 v #19843 > >
00:19:30 v #19844 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:30 v #19845 > > │ ### input
00:19:30 v #19846 > >
00:19:30 v #19847 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:30 v #19848 > > nominal input =
00:19:30 v #19849 > >     `(
00:19:30 v #19850 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:30 v #19851 > > Fable.Core.Emit(\"leptos::html::Input\")>]]\n#endif\ntype leptos_html_Input =
00:19:30 v #19852 > > class end"
00:19:30 v #19853 > >         $'' : $'leptos_html_Input'
00:19:30 v #19854 > >     )
00:19:31 v #19855 > >
00:19:31 v #19856 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:31 v #19857 > > │ ### label
00:19:31 v #19858 > >
00:19:31 v #19859 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:31 v #19860 > > nominal label =
00:19:31 v #19861 > >     `(
00:19:31 v #19862 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:31 v #19863 > > Fable.Core.Emit(\"leptos::html::Label\")>]]\n#endif\ntype leptos_html_Label =
00:19:31 v #19864 > > class end"
00:19:31 v #19865 > >         $'' : $'leptos_html_Label'
00:19:31 v #19866 > >     )
00:19:31 v #19867 > >
00:19:31 v #19868 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:31 v #19869 > > │ ### main
00:19:31 v #19870 > >
00:19:31 v #19871 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:31 v #19872 > > nominal main =
00:19:31 v #19873 > >     `(
00:19:31 v #19874 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:31 v #19875 > > Fable.Core.Emit(\"leptos::html::Main\")>]]\n#endif\ntype leptos_html_Main =
00:19:31 v #19876 > > class end"
00:19:31 v #19877 > >         $'' : $'leptos_html_Main'
00:19:31 v #19878 > >     )
00:19:31 v #19879 > >
00:19:31 v #19880 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:31 v #19881 > > │ ### nav
00:19:31 v #19882 > >
00:19:31 v #19883 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:31 v #19884 > > nominal nav =
00:19:31 v #19885 > >     `(
00:19:31 v #19886 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:31 v #19887 > > Fable.Core.Emit(\"leptos::html::Nav\")>]]\n#endif\ntype leptos_html_Nav = class
00:19:31 v #19888 > > end"
00:19:31 v #19889 > >         $'' : $'leptos_html_Nav'
00:19:31 v #19890 > >     )
00:19:31 v #19891 > >
00:19:31 v #19892 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:31 v #19893 > > │ ### option'
00:19:31 v #19894 > >
00:19:31 v #19895 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:31 v #19896 > > nominal option' =
00:19:31 v #19897 > >     `(
00:19:31 v #19898 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:31 v #19899 > > Fable.Core.Emit(\"leptos::html::Option_\")>]]\n#endif\ntype leptos_html_Option =
00:19:31 v #19900 > > class end"
00:19:31 v #19901 > >         $'' : $'leptos_html_Option'
00:19:31 v #19902 > >     )
00:19:31 v #19903 > >
00:19:31 v #19904 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:31 v #19905 > > │ ### pre
00:19:31 v #19906 > >
00:19:31 v #19907 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:31 v #19908 > > nominal pre =
00:19:31 v #19909 > >     `(
00:19:31 v #19910 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:31 v #19911 > > Fable.Core.Emit(\"leptos::html::Pre\")>]]\n#endif\ntype leptos_html_Pre = class
00:19:31 v #19912 > > end"
00:19:31 v #19913 > >         $'' : $'leptos_html_Pre'
00:19:31 v #19914 > >     )
00:19:31 v #19915 > >
00:19:31 v #19916 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:31 v #19917 > > │ ### select
00:19:31 v #19918 > >
00:19:31 v #19919 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:31 v #19920 > > nominal select =
00:19:31 v #19921 > >     `(
00:19:31 v #19922 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:31 v #19923 > > Fable.Core.Emit(\"leptos::html::Select\")>]]\n#endif\ntype leptos_html_Select =
00:19:31 v #19924 > > class end"
00:19:31 v #19925 > >         $'' : $'leptos_html_Select'
00:19:31 v #19926 > >     )
00:19:31 v #19927 > >
00:19:31 v #19928 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:31 v #19929 > > │ ### span
00:19:31 v #19930 > >
00:19:31 v #19931 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:31 v #19932 > > nominal span =
00:19:31 v #19933 > >     `(
00:19:31 v #19934 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:31 v #19935 > > Fable.Core.Emit(\"leptos::html::Span\")>]]\n#endif\ntype leptos_html_Span =
00:19:31 v #19936 > > class end"
00:19:31 v #19937 > >         $'' : $'leptos_html_Span'
00:19:31 v #19938 > >     )
00:19:32 v #19939 > >
00:19:32 v #19940 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:32 v #19941 > > │ ### summary
00:19:32 v #19942 > >
00:19:32 v #19943 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:32 v #19944 > > nominal summary =
00:19:32 v #19945 > >     `(
00:19:32 v #19946 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:32 v #19947 > > Fable.Core.Emit(\"leptos::html::Summary\")>]]\n#endif\ntype leptos_html_Summary
00:19:32 v #19948 > > = class end"
00:19:32 v #19949 > >         $'' : $'leptos_html_Summary'
00:19:32 v #19950 > >     )
00:19:32 v #19951 > >
00:19:32 v #19952 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:32 v #19953 > > │ ### table
00:19:32 v #19954 > >
00:19:32 v #19955 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:32 v #19956 > > nominal table =
00:19:32 v #19957 > >     `(
00:19:32 v #19958 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:32 v #19959 > > Fable.Core.Emit(\"leptos::html::Table\")>]]\n#endif\ntype leptos_html_Table =
00:19:32 v #19960 > > class end"
00:19:32 v #19961 > >         $'' : $'leptos_html_Table'
00:19:32 v #19962 > >     )
00:19:32 v #19963 > >
00:19:32 v #19964 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:32 v #19965 > > │ ### thead
00:19:32 v #19966 > >
00:19:32 v #19967 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:32 v #19968 > > nominal thead =
00:19:32 v #19969 > >     `(
00:19:32 v #19970 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:32 v #19971 > > Fable.Core.Emit(\"leptos::html::Thead\")>]]\n#endif\ntype leptos_html_Thead =
00:19:32 v #19972 > > class end"
00:19:32 v #19973 > >         $'' : $'leptos_html_Thead'
00:19:32 v #19974 > >     )
00:19:32 v #19975 > >
00:19:32 v #19976 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:32 v #19977 > > │ ### tbody
00:19:32 v #19978 > >
00:19:32 v #19979 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:32 v #19980 > > nominal tbody =
00:19:32 v #19981 > >     `(
00:19:32 v #19982 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:32 v #19983 > > Fable.Core.Emit(\"leptos::html::Tbody\")>]]\n#endif\ntype leptos_html_Tbody =
00:19:32 v #19984 > > class end"
00:19:32 v #19985 > >         $'' : $'leptos_html_Tbody'
00:19:32 v #19986 > >     )
00:19:32 v #19987 > >
00:19:32 v #19988 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:32 v #19989 > > │ ### tr
00:19:32 v #19990 > >
00:19:32 v #19991 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:32 v #19992 > > nominal tr =
00:19:32 v #19993 > >     `(
00:19:32 v #19994 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:32 v #19995 > > Fable.Core.Emit(\"leptos::html::Tr\")>]]\n#endif\ntype leptos_html_Tr = class
00:19:32 v #19996 > > end"
00:19:32 v #19997 > >         $'' : $'leptos_html_Tr'
00:19:32 v #19998 > >     )
00:19:32 v #19999 > >
00:19:32 v #20000 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:32 v #20001 > > │ ### th
00:19:32 v #20002 > >
00:19:32 v #20003 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:32 v #20004 > > nominal th =
00:19:32 v #20005 > >     `(
00:19:32 v #20006 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:32 v #20007 > > Fable.Core.Emit(\"leptos::html::Th\")>]]\n#endif\ntype leptos_html_Th = class
00:19:32 v #20008 > > end"
00:19:32 v #20009 > >         $'' : $'leptos_html_Th'
00:19:32 v #20010 > >     )
00:19:32 v #20011 > >
00:19:32 v #20012 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:32 v #20013 > > │ ### td
00:19:32 v #20014 > >
00:19:32 v #20015 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:32 v #20016 > > nominal td =
00:19:32 v #20017 > >     `(
00:19:32 v #20018 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:32 v #20019 > > Fable.Core.Emit(\"leptos::html::Td\")>]]\n#endif\ntype leptos_html_Td = class
00:19:32 v #20020 > > end"
00:19:32 v #20021 > >         $'' : $'leptos_html_Td'
00:19:32 v #20022 > >     )
00:19:33 v #20023 > >
00:19:33 v #20024 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:33 v #20025 > > │ ### svg
00:19:33 v #20026 > >
00:19:33 v #20027 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:33 v #20028 > > nominal svg =
00:19:33 v #20029 > >     `(
00:19:33 v #20030 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:33 v #20031 > > Fable.Core.Emit(\"leptos::svg::Svg\")>]]\n#endif\ntype leptos_svg_Svg = class
00:19:33 v #20032 > > end"
00:19:33 v #20033 > >         $'' : $'leptos_svg_Svg'
00:19:33 v #20034 > >     )
00:19:33 v #20035 > >
00:19:33 v #20036 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:33 v #20037 > > │ ### path
00:19:33 v #20038 > >
00:19:33 v #20039 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:33 v #20040 > > nominal path =
00:19:33 v #20041 > >     `(
00:19:33 v #20042 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:33 v #20043 > > Fable.Core.Emit(\"leptos::svg::Path\")>]]\n#endif\ntype leptos_svg_Path = class
00:19:33 v #20044 > > end"
00:19:33 v #20045 > >         $'' : $'leptos_svg_Path'
00:19:33 v #20046 > >     )
00:19:33 v #20047 > >
00:19:33 v #20048 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:33 v #20049 > > │ ### circle
00:19:33 v #20050 > >
00:19:33 v #20051 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:33 v #20052 > > nominal circle =
00:19:33 v #20053 > >     `(
00:19:33 v #20054 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:33 v #20055 > > Fable.Core.Emit(\"leptos::svg::Circle\")>]]\n#endif\ntype leptos_svg_Circle =
00:19:33 v #20056 > > class end"
00:19:33 v #20057 > >         $'' : $'leptos_svg_Circle'
00:19:33 v #20058 > >     )
00:19:33 v #20059 > >
00:19:33 v #20060 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:33 v #20061 > > │ ### rect
00:19:33 v #20062 > >
00:19:33 v #20063 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:33 v #20064 > > nominal rect =
00:19:33 v #20065 > >     `(
00:19:33 v #20066 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:33 v #20067 > > Fable.Core.Emit(\"leptos::svg::Rect\")>]]\n#endif\ntype leptos_svg_Rect = class
00:19:33 v #20068 > > end"
00:19:33 v #20069 > >         $'' : $'leptos_svg_Rect'
00:19:33 v #20070 > >     )
00:19:33 v #20071 > >
00:19:33 v #20072 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:33 v #20073 > > │ ### animate
00:19:33 v #20074 > >
00:19:33 v #20075 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:33 v #20076 > > nominal animate =
00:19:33 v #20077 > >     `(
00:19:33 v #20078 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:33 v #20079 > > Fable.Core.Emit(\"leptos::svg::Animate\")>]]\n#endif\ntype leptos_svg_Animate =
00:19:33 v #20080 > > class end"
00:19:33 v #20081 > >         $'' : $'leptos_svg_Animate'
00:19:33 v #20082 > >     )
00:19:33 v #20083 > >
00:19:33 v #20084 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:33 v #20085 > > │ ### action
00:19:33 v #20086 > >
00:19:33 v #20087 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:33 v #20088 > > nominal action t u =
00:19:33 v #20089 > >     `(
00:19:33 v #20090 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:33 v #20091 > > Fable.Core.Emit(\"leptos::prelude::Action<$0, $1>\")>]]\n#endif\ntype
00:19:33 v #20092 > > leptos_prelude_Action<'T, 'U> = class end"
00:19:33 v #20093 > >         $'' : $'leptos_prelude_Action<`t, `u>'
00:19:33 v #20094 > >     )
00:19:34 v #20095 > >
00:19:34 v #20096 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:34 v #20097 > > │ ### arc_action
00:19:34 v #20098 > >
00:19:34 v #20099 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:34 v #20100 > > nominal arc_action t u =
00:19:34 v #20101 > >     `(
00:19:34 v #20102 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:34 v #20103 > > Fable.Core.Emit(\"leptos::prelude::ArcAction<$0, $1>\")>]]\n#endif\ntype
00:19:34 v #20104 > > leptos_prelude_ArcAction<'T, 'U> = class end"
00:19:34 v #20105 > >         $'' : $'leptos_prelude_ArcAction<`t, `u>'
00:19:34 v #20106 > >     )
00:19:34 v #20107 > >
00:19:34 v #20108 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:34 v #20109 > > │ ### for
00:19:34 v #20110 > >
00:19:34 v #20111 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:34 v #20112 > > nominal for =
00:19:34 v #20113 > >     `(
00:19:34 v #20114 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:34 v #20115 > > Fable.Core.Emit(\"leptos::prelude::For\")>]]\n#endif\ntype leptos_prelude_For =
00:19:34 v #20116 > > class end"
00:19:34 v #20117 > >         $'' : $'leptos_prelude_For'
00:19:34 v #20118 > >     )
00:19:34 v #20119 > >
00:19:34 v #20120 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:34 v #20121 > > │ ### show
00:19:34 v #20122 > >
00:19:34 v #20123 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:34 v #20124 > > nominal show =
00:19:34 v #20125 > >     `(
00:19:34 v #20126 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:34 v #20127 > > Fable.Core.Emit(\"leptos::prelude::Show\")>]]\n#endif\ntype leptos_prelude_Show
00:19:34 v #20128 > > = class end"
00:19:34 v #20129 > >         $'' : $'leptos_prelude_Show'
00:19:34 v #20130 > >     )
00:19:34 v #20131 > >
00:19:34 v #20132 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:34 v #20133 > > │ ### fragment
00:19:34 v #20134 > >
00:19:34 v #20135 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:34 v #20136 > > nominal fragment =
00:19:34 v #20137 > >     `(
00:19:34 v #20138 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:34 v #20139 > > Fable.Core.Emit(\"leptos::prelude::Fragment\")>]]\n#endif\ntype
00:19:34 v #20140 > > leptos_dom_Fragment = class end"
00:19:34 v #20141 > >         $'' : $'leptos_dom_Fragment'
00:19:34 v #20142 > >     )
00:19:34 v #20143 > >
00:19:34 v #20144 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:34 v #20145 > > │ ### interval_handle
00:19:34 v #20146 > >
00:19:34 v #20147 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:34 v #20148 > > nominal interval_handle =
00:19:34 v #20149 > >     `(
00:19:34 v #20150 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:34 v #20151 > > Fable.Core.Emit(\"leptos::leptos_dom::helpers::IntervalHandle\")>]]\n#endif\ntyp
00:19:34 v #20152 > > e leptos_dom_IntervalHandle = class end"
00:19:34 v #20153 > >         $'' : $'leptos_dom_IntervalHandle'
00:19:34 v #20154 > >     )
00:19:34 v #20155 > >
00:19:34 v #20156 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:34 v #20157 > > │ ### text
00:19:34 v #20158 > >
00:19:34 v #20159 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:34 v #20160 > > nominal text =
00:19:34 v #20161 > >     `(
00:19:34 v #20162 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:34 v #20163 > > Fable.Core.Emit(\"leptos::tachys::renderer::dom::Text\")>]]\n#endif\ntype
00:19:34 v #20164 > > leptos_dom_Text = class end"
00:19:34 v #20165 > >         $'' : $'leptos_dom_Text'
00:19:34 v #20166 > >     )
00:19:34 v #20167 > >
00:19:34 v #20168 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:34 v #20169 > > │ ### transparent
00:19:34 v #20170 > >
00:19:34 v #20171 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:34 v #20172 > > nominal transparent =
00:19:34 v #20173 > >     `(
00:19:34 v #20174 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:34 v #20175 > > Fable.Core.Emit(\"leptos::leptos_dom::Transparent\")>]]\n#endif\ntype
00:19:34 v #20176 > > leptos_dom_Transparent = class end"
00:19:34 v #20177 > >         $'' : $'leptos_dom_Transparent'
00:19:34 v #20178 > >     )
00:19:35 v #20179 > >
00:19:35 v #20180 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:35 v #20181 > > │ ### route
00:19:35 v #20182 > >
00:19:35 v #20183 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:35 v #20184 > > nominal route =
00:19:35 v #20185 > >     `(
00:19:35 v #20186 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:35 v #20187 > > Fable.Core.Emit(\"leptos_router::Route\")>]]\n#endif\ntype leptos_router_Route =
00:19:35 v #20188 > > class end"
00:19:35 v #20189 > >         $'' : $'leptos_router_Route'
00:19:35 v #20190 > >     )
00:19:35 v #20191 > >
00:19:35 v #20192 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:35 v #20193 > > │ ### nested_route
00:19:35 v #20194 > >
00:19:35 v #20195 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:35 v #20196 > > nominal nested_route =
00:19:35 v #20197 > >     `(
00:19:35 v #20198 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:35 v #20199 > > Fable.Core.Emit(\"leptos_router::NestedRoute<_, _, _, _>\")>]]\n#endif\ntype
00:19:35 v #20200 > > leptos_router_NestedRoute = class end"
00:19:35 v #20201 > >         $'' : $'leptos_router_NestedRoute'
00:19:35 v #20202 > >     )
00:19:35 v #20203 > >
00:19:35 v #20204 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:35 v #20205 > > │ ### route_definition
00:19:35 v #20206 > >
00:19:35 v #20207 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:35 v #20208 > > nominal route_definition =
00:19:35 v #20209 > >     `(
00:19:35 v #20210 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:35 v #20211 > > Fable.Core.Emit(\"leptos_router::RouteDefinition\")>]]\n#endif\ntype
00:19:35 v #20212 > > leptos_router_RouteDefinition = class end"
00:19:35 v #20213 > >         $'' : $'leptos_router_RouteDefinition'
00:19:35 v #20214 > >     )
00:19:35 v #20215 > >
00:19:35 v #20216 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:35 v #20217 > > │ ### router
00:19:35 v #20218 > >
00:19:35 v #20219 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:35 v #20220 > > nominal router =
00:19:35 v #20221 > >     `(
00:19:35 v #20222 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:35 v #20223 > > Fable.Core.Emit(\"leptos_router::Router\")>]]\n#endif\ntype leptos_router_Router
00:19:35 v #20224 > > = class end"
00:19:35 v #20225 > >         $'' : $'leptos_router_Router'
00:19:35 v #20226 > >     )
00:19:35 v #20227 > >
00:19:35 v #20228 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:35 v #20229 > > │ ### routes
00:19:35 v #20230 > >
00:19:35 v #20231 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:35 v #20232 > > nominal routes =
00:19:35 v #20233 > >     `(
00:19:35 v #20234 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:35 v #20235 > > Fable.Core.Emit(\"leptos_router::Routes\")>]]\n#endif\ntype leptos_router_Routes
00:19:35 v #20236 > > = class end"
00:19:35 v #20237 > >         $'' : $'leptos_router_Routes'
00:19:35 v #20238 > >     )
00:19:35 v #20239 > >
00:19:35 v #20240 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:35 v #20241 > > │ ### html_element
00:19:35 v #20242 > >
00:19:35 v #20243 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:35 v #20244 > > nominal html_element t =
00:19:35 v #20245 > >     `(
00:19:35 v #20246 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:35 v #20247 > > Fable.Core.Emit(\"leptos::html::HtmlElement<$0, _, _>\")>]]\n#endif\ntype
00:19:35 v #20248 > > leptos_dom_html_HtmlElement<'T> = class end"
00:19:35 v #20249 > >         $'' : $'leptos_dom_html_HtmlElement<`t>'
00:19:35 v #20250 > >     )
00:19:36 v #20251 > >
00:19:36 v #20252 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:36 v #20253 > > │ ### into_view
00:19:36 v #20254 > >
00:19:36 v #20255 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:36 v #20256 > > nominal into_view =
00:19:36 v #20257 > >     `(
00:19:36 v #20258 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:36 v #20259 > > Fable.Core.Emit(\"leptos::IntoView\")>]]\n#endif\ntype leptos_IntoView = class
00:19:36 v #20260 > > end"
00:19:36 v #20261 > >         $'' : $'leptos_IntoView'
00:19:36 v #20262 > >     )
00:19:36 v #20263 > >
00:19:36 v #20264 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:36 v #20265 > > │ ### location
00:19:36 v #20266 > >
00:19:36 v #20267 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:36 v #20268 > > nominal location =
00:19:36 v #20269 > >     `(
00:19:36 v #20270 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:36 v #20271 > > Fable.Core.Emit(\"leptos_router::location::Location\")>]]\n#endif\ntype
00:19:36 v #20272 > > leptos_router_location_Location = class end"
00:19:36 v #20273 > >         $'' : $'leptos_router_location_Location'
00:19:36 v #20274 > >     )
00:19:36 v #20275 > >
00:19:36 v #20276 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:36 v #20277 > > │ ### navigate_options
00:19:36 v #20278 > >
00:19:36 v #20279 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:36 v #20280 > > nominal navigate_options =
00:19:36 v #20281 > >     `(
00:19:36 v #20282 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:36 v #20283 > > Fable.Core.Emit(\"leptos_router::NavigateOptions\")>]]\n#endif\ntype
00:19:36 v #20284 > > leptos_router_NavigateOptions = class end"
00:19:36 v #20285 > >         $'' : $'leptos_router_NavigateOptions'
00:19:36 v #20286 > >     )
00:19:36 v #20287 > >
00:19:36 v #20288 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:36 v #20289 > > │ ### url
00:19:36 v #20290 > >
00:19:36 v #20291 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:36 v #20292 > > nominal url =
00:19:36 v #20293 > >     `(
00:19:36 v #20294 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:36 v #20295 > > Fable.Core.Emit(\"leptos_router::location::Url\")>]]\n#endif\ntype
00:19:36 v #20296 > > leptos_router_Url = class end"
00:19:36 v #20297 > >         $'' : $'leptos_router_Url'
00:19:36 v #20298 > >     )
00:19:36 v #20299 > >
00:19:36 v #20300 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:36 v #20301 > > │ ### memo
00:19:36 v #20302 > >
00:19:36 v #20303 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:36 v #20304 > > nominal memo t =
00:19:36 v #20305 > >     `(
00:19:36 v #20306 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:36 v #20307 > > Fable.Core.Emit(\"leptos::prelude::Memo<$0>\")>]]\n#endif\ntype
00:19:36 v #20308 > > leptos_prelude_Memo<'T> = class end"
00:19:36 v #20309 > >         $'' : $'leptos_prelude_Memo<`t>'
00:19:36 v #20310 > >     )
00:19:36 v #20311 > >
00:19:36 v #20312 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:36 v #20313 > > │ ### arc_memo
00:19:36 v #20314 > >
00:19:36 v #20315 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:36 v #20316 > > nominal arc_memo t =
00:19:36 v #20317 > >     `(
00:19:36 v #20318 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:36 v #20319 > > Fable.Core.Emit(\"leptos::prelude::ArcMemo<$0>\")>]]\n#endif\ntype
00:19:36 v #20320 > > leptos_prelude_ArcMemo<'T> = class end"
00:19:36 v #20321 > >         $'' : $'leptos_prelude_ArcMemo<`t>'
00:19:36 v #20322 > >     )
00:19:36 v #20323 > >
00:19:36 v #20324 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:36 v #20325 > > │ ### rw_signal
00:19:36 v #20326 > >
00:19:36 v #20327 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:36 v #20328 > > nominal rw_signal t =
00:19:36 v #20329 > >     `(
00:19:36 v #20330 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:36 v #20331 > > Fable.Core.Emit(\"leptos::prelude::RwSignal<$0>\")>]]\n#endif\ntype
00:19:36 v #20332 > > leptos_prelude_RwSignal<'T> = class end"
00:19:36 v #20333 > >         $'' : $'leptos_prelude_RwSignal<`t>'
00:19:36 v #20334 > >     )
00:19:37 v #20335 > >
00:19:37 v #20336 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:37 v #20337 > > │ ### arc_rw_signal
00:19:37 v #20338 > >
00:19:37 v #20339 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:37 v #20340 > > nominal arc_rw_signal t =
00:19:37 v #20341 > >     `(
00:19:37 v #20342 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:37 v #20343 > > Fable.Core.Emit(\"leptos::prelude::ArcRwSignal<$0>\")>]]\n#endif\ntype
00:19:37 v #20344 > > leptos_prelude_ArcRwSignal<'T> = class end"
00:19:37 v #20345 > >         $'' : $'leptos_prelude_ArcRwSignal<`t>'
00:19:37 v #20346 > >     )
00:19:37 v #20347 > >
00:19:37 v #20348 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:37 v #20349 > > │ ### signal
00:19:37 v #20350 > >
00:19:37 v #20351 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:37 v #20352 > > nominal signal t =
00:19:37 v #20353 > >     `(
00:19:37 v #20354 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:37 v #20355 > > Fable.Core.Emit(\"leptos::prelude::Signal<$0>\")>]]\n#endif\ntype
00:19:37 v #20356 > > leptos_prelude_Signal<'T> = class end"
00:19:37 v #20357 > >         $'' : $'leptos_prelude_Signal<`t>'
00:19:37 v #20358 > >     )
00:19:37 v #20359 > >
00:19:37 v #20360 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:37 v #20361 > > │ ### arc_signal
00:19:37 v #20362 > >
00:19:37 v #20363 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:37 v #20364 > > nominal arc_signal t =
00:19:37 v #20365 > >     `(
00:19:37 v #20366 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:37 v #20367 > > Fable.Core.Emit(\"leptos::prelude::ArcSignal<$0>\")>]]\n#endif\ntype
00:19:37 v #20368 > > leptos_prelude_ArcSignal<'T> = class end"
00:19:37 v #20369 > >         $'' : $'leptos_prelude_ArcSignal<`t>'
00:19:37 v #20370 > >     )
00:19:37 v #20371 > >
00:19:37 v #20372 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:37 v #20373 > > │ ### read_signal
00:19:37 v #20374 > >
00:19:37 v #20375 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:37 v #20376 > > nominal read_signal t =
00:19:37 v #20377 > >     `(
00:19:37 v #20378 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:37 v #20379 > > Fable.Core.Emit(\"leptos::prelude::ReadSignal<$0>\")>]]\n#endif\ntype
00:19:37 v #20380 > > leptos_prelude_ReadSignal<'T> = class end"
00:19:37 v #20381 > >         $'' : $'leptos_prelude_ReadSignal<`t>'
00:19:37 v #20382 > >     )
00:19:37 v #20383 > >
00:19:37 v #20384 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:37 v #20385 > > │ ### arc_read_signal
00:19:37 v #20386 > >
00:19:37 v #20387 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:37 v #20388 > > nominal arc_read_signal t =
00:19:37 v #20389 > >     `(
00:19:37 v #20390 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:37 v #20391 > > Fable.Core.Emit(\"leptos::prelude::ArcReadSignal<$0>\")>]]\n#endif\ntype
00:19:37 v #20392 > > leptos_prelude_ArcReadSignal<'T> = class end"
00:19:37 v #20393 > >         $'' : $'leptos_prelude_ArcReadSignal<`t>'
00:19:37 v #20394 > >     )
00:19:37 v #20395 > >
00:19:37 v #20396 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:37 v #20397 > > │ ### write_signal
00:19:37 v #20398 > >
00:19:37 v #20399 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:37 v #20400 > > nominal write_signal t =
00:19:37 v #20401 > >     `(
00:19:37 v #20402 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:37 v #20403 > > Fable.Core.Emit(\"leptos::prelude::WriteSignal<$0>\")>]]\n#endif\ntype
00:19:37 v #20404 > > leptos_prelude_WriteSignal<'T> = class end"
00:19:37 v #20405 > >         $'' : $'leptos_prelude_WriteSignal<`t>'
00:19:37 v #20406 > >     )
00:19:38 v #20407 > >
00:19:38 v #20408 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:38 v #20409 > > │ ### arc_write_signal
00:19:38 v #20410 > >
00:19:38 v #20411 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:38 v #20412 > > nominal arc_write_signal t =
00:19:38 v #20413 > >     `(
00:19:38 v #20414 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:38 v #20415 > > Fable.Core.Emit(\"leptos::prelude::ArcWriteSignal<$0>\")>]]\n#endif\ntype
00:19:38 v #20416 > > leptos_prelude_ArcWriteSignal<'T> = class end"
00:19:38 v #20417 > >         $'' : $'leptos_prelude_ArcWriteSignal<`t>'
00:19:38 v #20418 > >     )
00:19:38 v #20419 > >
00:19:38 v #20420 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:38 v #20421 > > │ ### resource
00:19:38 v #20422 > >
00:19:38 v #20423 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:38 v #20424 > > nominal resource t u =
00:19:38 v #20425 > >     `(
00:19:38 v #20426 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:38 v #20427 > > Fable.Core.Emit(\"leptos::prelude::Resource<$0, $1>\")>]]\n#endif\ntype
00:19:38 v #20428 > > leptos_prelude_Resource<'T, 'U> = class end"
00:19:38 v #20429 > >         $'' : $'leptos_prelude_Resource<`t, `u>'
00:19:38 v #20430 > >     )
00:19:38 v #20431 > >
00:19:38 v #20432 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:38 v #20433 > > │ ### arc_resource
00:19:38 v #20434 > >
00:19:38 v #20435 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:38 v #20436 > > nominal arc_resource t u =
00:19:38 v #20437 > >     `(
00:19:38 v #20438 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:38 v #20439 > > Fable.Core.Emit(\"leptos::prelude::ArcResource<$0, $1>\")>]]\n#endif\ntype
00:19:38 v #20440 > > leptos_prelude_ArcResource<'T, 'U> = class end"
00:19:38 v #20441 > >         $'' : $'leptos_prelude_ArcResource<`t, `u>'
00:19:38 v #20442 > >     )
00:19:38 v #20443 > >
00:19:38 v #20444 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:38 v #20445 > > │ ### local_resource
00:19:38 v #20446 > >
00:19:38 v #20447 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:38 v #20448 > > nominal local_resource t u =
00:19:38 v #20449 > >     `(
00:19:38 v #20450 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:38 v #20451 > > Fable.Core.Emit(\"leptos::prelude::LocalResource<$0, $1>\")>]]\n#endif\ntype
00:19:38 v #20452 > > leptos_prelude_LocalResource<'T, 'U> = class end"
00:19:38 v #20453 > >         $'' : $'leptos_prelude_LocalResource<`t, `u>'
00:19:38 v #20454 > >     )
00:19:38 v #20455 > >
00:19:38 v #20456 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:38 v #20457 > > │ ### arc_local_resource
00:19:38 v #20458 > >
00:19:38 v #20459 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:38 v #20460 > > nominal arc_local_resource t =
00:19:38 v #20461 > >     `(
00:19:38 v #20462 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:38 v #20463 > > Fable.Core.Emit(\"leptos::prelude::ArcLocalResource<$0>\")>]]\n#endif\ntype
00:19:38 v #20464 > > leptos_prelude_ArcLocalResource<'T> = class end"
00:19:38 v #20465 > >         $'' : $'leptos_prelude_ArcLocalResource<`t>'
00:19:38 v #20466 > >     )
00:19:38 v #20467 > >
00:19:38 v #20468 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:38 v #20469 > > │ ### any_view
00:19:38 v #20470 > >
00:19:38 v #20471 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:38 v #20472 > > nominal any_view =
00:19:38 v #20473 > >     `(
00:19:38 v #20474 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:38 v #20475 > > Fable.Core.Emit(\"leptos::prelude::AnyView\")>]]\n#endif\ntype
00:19:38 v #20476 > > leptos_prelude_AnyView = class end"
00:19:38 v #20477 > >         $'' : $'leptos_prelude_AnyView'
00:19:38 v #20478 > >     )
00:19:38 v #20479 > >
00:19:38 v #20480 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:38 v #20481 > > │ ### view'
00:19:38 v #20482 > >
00:19:38 v #20483 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:38 v #20484 > > nominal view' t =
00:19:38 v #20485 > >     `(
00:19:38 v #20486 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:38 v #20487 > > Fable.Core.Emit(\"leptos::prelude::View<$0>\")>]]\n#endif\ntype
00:19:38 v #20488 > > leptos_prelude_View<'T> = class end"
00:19:38 v #20489 > >         $'' : $'leptos_prelude_View<`t>'
00:19:38 v #20490 > >     )
00:19:39 v #20491 > >
00:19:39 v #20492 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:39 v #20493 > > │ ### view
00:19:39 v #20494 > >
00:19:39 v #20495 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:39 v #20496 > > nominal view =
00:19:39 v #20497 > >     `(
00:19:39 v #20498 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:39 v #20499 > > Fable.Core.Emit(\"leptos::prelude::AnyView\")>]]\n#endif\ntype
00:19:39 v #20500 > > leptos_prelude_AnyView_ = class end"
00:19:39 v #20501 > >         $'' : $'leptos_prelude_AnyView_'
00:19:39 v #20502 > >     )
00:19:39 v #20503 > >
00:19:39 v #20504 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:39 v #20505 > > │ ### signal_get
00:19:39 v #20506 > >
00:19:39 v #20507 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:39 v #20508 > > prototype signal_get signal t : signal t -> t
00:19:39 v #20509 > >
00:19:39 v #20510 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:39 v #20511 > > │ ### signal_get_untracked
00:19:39 v #20512 > >
00:19:39 v #20513 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:39 v #20514 > > prototype signal_get_untracked signal t : signal t -> t
00:19:39 v #20515 > >
00:19:39 v #20516 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:39 v #20517 > > │ ### signal_update
00:19:39 v #20518 > >
00:19:39 v #20519 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:39 v #20520 > > prototype signal_update signal t : (t -> t) -> signal t -> ()
00:19:39 v #20521 > >
00:19:39 v #20522 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:39 v #20523 > > │ ### signal_set
00:19:39 v #20524 > >
00:19:39 v #20525 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:39 v #20526 > > prototype signal_set signal t : t -> signal t -> ()
00:19:39 v #20527 > >
00:19:39 v #20528 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:39 v #20529 > > │ ### log_string
00:19:39 v #20530 > >
00:19:39 v #20531 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:39 v #20532 > > inl log_string (text : string) =
00:19:39 v #20533 > >     (!\($'@@"true; leptos::logging::log\!(""" + !text + @@""");"') : bool) |>
00:19:39 v #20534 > > ignore
00:19:40 v #20535 > >
00:19:40 v #20536 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:40 v #20537 > > │ ### log
00:19:40 v #20538 > >
00:19:40 v #20539 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:40 v #20540 > > inl log (text : string) =
00:19:40 v #20541 > >     (!\\(text, $'@@$"true; leptos::logging::log\!(""{{}}"", $0)"') : bool) |>
00:19:40 v #20542 > > ignore
00:19:40 v #20543 > >
00:19:40 v #20544 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:40 v #20545 > > │ ### log_debug
00:19:40 v #20546 > >
00:19:40 v #20547 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:40 v #20548 > > inl log_debug (text : string) =
00:19:40 v #20549 > >     (!\\(text, $'@@$"true; leptos::logging::log\!(""{{:?}}"", $0)"') : bool) |>
00:19:40 v #20550 > > ignore
00:19:40 v #20551 > >
00:19:40 v #20552 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:40 v #20553 > > │ ### log_pretty
00:19:40 v #20554 > >
00:19:40 v #20555 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:40 v #20556 > > inl log_pretty (text : string) =
00:19:40 v #20557 > >     (!\\(text, $'@@$"true; leptos::logging::log\!(""{{:#?}}"", $0)"') : bool) |>
00:19:40 v #20558 > > ignore
00:19:40 v #20559 > >
00:19:40 v #20560 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:40 v #20561 > > │ ### log_format
00:19:40 v #20562 > >
00:19:40 v #20563 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:40 v #20564 > > inl log_format fn obj =
00:19:40 v #20565 > >     inl obj_log = obj |> sm'.format_debug
00:19:40 v #20566 > >     inl text = fn obj_log |> sm'.ellipsis_end 200
00:19:40 v #20567 > >     log text
00:19:40 v #20568 > >     obj
00:19:40 v #20569 > >
00:19:40 v #20570 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:40 v #20571 > > │ ### mount_to_body
00:19:40 v #20572 > >
00:19:40 v #20573 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:40 v #20574 > > inl mount_to_body (view_fn : () -> rust.impl into_view) : () =
00:19:40 v #20575 > >     (!\\(view_fn, $'"true; leptos::prelude::mount_to_body(|| $0()); //"') :
00:19:40 v #20576 > > bool) |> ignore
00:19:40 v #20577 > >
00:19:40 v #20578 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:40 v #20579 > > │ ### view_vec_to_fragment
00:19:40 v #20580 > >
00:19:40 v #20581 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:40 v #20582 > > inl view_vec_to_fragment (view : am'.vec view) : fragment =
00:19:40 v #20583 > >     !\\(view, $'"leptos::prelude::Fragment::new($0)"')
00:19:41 v #20584 > >
00:19:41 v #20585 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:41 v #20586 > > │ ### view_list_to_fragment
00:19:41 v #20587 > >
00:19:41 v #20588 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:41 v #20589 > > inl view_list_to_fragment (view : list view) : fragment =
00:19:41 v #20590 > >     view
00:19:41 v #20591 > >     |> am'.new_vec
00:19:41 v #20592 > >     |> view_vec_to_fragment
00:19:41 v #20593 > >
00:19:41 v #20594 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:41 v #20595 > > │ ### element_to_view
00:19:41 v #20596 > >
00:19:41 v #20597 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:41 v #20598 > > inl element_to_view (view : view' (html_element _)) : view =
00:19:41 v #20599 > >     !\\(view, $'"leptos::prelude::IntoAny::into_any($0)"')
00:19:41 v #20600 > >
00:19:41 v #20601 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:41 v #20602 > > │ ### view_to_fragment
00:19:41 v #20603 > >
00:19:41 v #20604 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:41 v #20605 > > inl view_to_fragment (view : view) : fragment =
00:19:41 v #20606 > >     [[ view ]]
00:19:41 v #20607 > >     |> view_list_to_fragment
00:19:41 v #20608 > >
00:19:41 v #20609 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:41 v #20610 > > │ ### fragment_to_view
00:19:41 v #20611 > >
00:19:41 v #20612 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:41 v #20613 > > inl fragment_to_view (fragment : fragment) : view =
00:19:41 v #20614 > >     !\\(fragment, $'"leptos::prelude::AnyView::from($0)"')
00:19:41 v #20615 > >
00:19:41 v #20616 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:41 v #20617 > > │ ### element_to_fragment
00:19:41 v #20618 > >
00:19:41 v #20619 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:41 v #20620 > > inl element_to_fragment (view : view' (html_element _)) : fragment =
00:19:41 v #20621 > >     view
00:19:41 v #20622 > >     |> element_to_view
00:19:41 v #20623 > >     |> view_to_fragment
00:19:41 v #20624 > >
00:19:41 v #20625 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:41 v #20626 > > │ ### (~:>) fragment
00:19:41 v #20627 > >
00:19:41 v #20628 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:41 v #20629 > > instance (~:>) fragment = fun x =>
00:19:41 v #20630 > >     real
00:19:41 v #20631 > >         typecase t with
00:19:41 v #20632 > >         | array_base (view' (html_element ~el)) =>
00:19:41 v #20633 > >             inl x = a x
00:19:41 v #20634 > >             inl x = am.toList `a `int `(view' (html_element el)) x
00:19:41 v #20635 > >             inl x = listm.map `(view' (html_element el)) `view (element_to_view
00:19:41 v #20636 > > `el) x
00:19:41 v #20637 > >             view_list_to_fragment x
00:19:41 v #20638 > >         | list (view' (html_element ~el)) =>
00:19:41 v #20639 > >             inl x = listm.map `(view' (html_element el)) `view (element_to_view
00:19:41 v #20640 > > `el) x
00:19:41 v #20641 > >             view_list_to_fragment x
00:19:41 v #20642 > >         | list view =>
00:19:41 v #20643 > >             view_list_to_fragment x
00:19:41 v #20644 > >         | _ => x
00:19:41 v #20645 > >
00:19:41 v #20646 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:41 v #20647 > > │ ### (~:>) view
00:19:41 v #20648 > >
00:19:41 v #20649 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:41 v #20650 > > instance (~:>) view = fun x =>
00:19:41 v #20651 > >     real
00:19:41 v #20652 > >         typecase t with
00:19:41 v #20653 > >         | view' (html_element _) => element_to_view x
00:19:41 v #20654 > >         | _ => x
00:19:42 v #20655 > >
00:19:42 v #20656 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:42 v #20657 > > │ ### view_trait_to_element
00:19:42 v #20658 > >
00:19:42 v #20659 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:42 v #20660 > > inl view_trait_to_element (view : rust.impl into_view) : view' (html_element _)
00:19:42 v #20661 > > =
00:19:42 v #20662 > >     $'!view |> unbox'
00:19:42 v #20663 > >
00:19:42 v #20664 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:42 v #20665 > > │ ### view_trait_to_route_definition
00:19:42 v #20666 > >
00:19:42 v #20667 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:42 v #20668 > > inl view_trait_to_route_definition (view : rust.impl into_view) :
00:19:42 v #20669 > > route_definition =
00:19:42 v #20670 > >     $'!view |> unbox'
00:19:42 v #20671 > >
00:19:42 v #20672 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:42 v #20673 > > │ ### to_element_view
00:19:42 v #20674 > >
00:19:42 v #20675 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:42 v #20676 > > inl to_element_view (view : view' (html_element _)) : rust.impl into_view =
00:19:42 v #20677 > >     $'!view |> unbox'
00:19:42 v #20678 > >
00:19:42 v #20679 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:42 v #20680 > > │ ### to_view_trait
00:19:42 v #20681 > >
00:19:42 v #20682 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:42 v #20683 > > inl to_view_trait (view : view) : rust.impl into_view =
00:19:42 v #20684 > >     $'!view |> unbox'
00:19:42 v #20685 > >
00:19:42 v #20686 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:42 v #20687 > > │ ### to_fragment_unbox
00:19:42 v #20688 > >
00:19:42 v #20689 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:42 v #20690 > > inl to_fragment_unbox view : fragment =
00:19:42 v #20691 > >     $'!view |> unbox'
00:19:42 v #20692 > >
00:19:42 v #20693 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:42 v #20694 > > │ ### from_fragment_unbox
00:19:42 v #20695 > >
00:19:42 v #20696 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:42 v #20697 > > inl from_fragment_unbox (fragment : fragment) =
00:19:42 v #20698 > >     $'!fragment |> unbox'
00:19:43 v #20699 > >
00:19:43 v #20700 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:43 v #20701 > > │ ### element_to_view_trait
00:19:43 v #20702 > >
00:19:43 v #20703 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:43 v #20704 > > inl element_to_view_trait (macro : view' (html_element _)) : rust.impl into_view
00:19:43 v #20705 > > =
00:19:43 v #20706 > >     global "#if FABLE_COMPILER\nFable.Core.RustInterop.emitRustExpr () \");\nuse
00:19:43 v #20707 > > leptos::prelude::ElementChild;\n//\"\n#endif"
00:19:43 v #20708 > >     !\($'"leptos::prelude::view\! { {!macro} }"')
00:19:43 v #20709 > >
00:19:43 v #20710 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:43 v #20711 > > │ ### macro_to_view_trait
00:19:43 v #20712 > >
00:19:43 v #20713 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:43 v #20714 > > inl macro_to_view_trait (macro : string) : rust.impl into_view =
00:19:43 v #20715 > >     global "#if FABLE_COMPILER\nFable.Core.RustInterop.emitRustExpr () \");\nuse
00:19:43 v #20716 > > leptos::prelude::ElementChild;\n//\"\n#endif"
00:19:43 v #20717 > >     global "#if FABLE_COMPILER\nFable.Core.RustInterop.emitRustExpr () \");\nuse
00:19:43 v #20718 > > leptos::prelude::ClassAttribute;\n//\"\n#endif"
00:19:43 v #20719 > >     !\($'"leptos::prelude::view\! { " + !macro + " }"')
00:19:43 v #20720 > >
00:19:43 v #20721 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:43 v #20722 > > │ ### macro_to_fragment
00:19:43 v #20723 > >
00:19:43 v #20724 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:43 v #20725 > > inl macro_to_fragment (macro : string) : fragment =
00:19:43 v #20726 > >     global "#if FABLE_COMPILER\nFable.Core.RustInterop.emitRustExpr () \");\nuse
00:19:43 v #20727 > > leptos::prelude::ElementChild;\n//\"\n#endif"
00:19:43 v #20728 > >     !\($'"leptos::prelude::view\! { " + !macro + " }"')
00:19:43 v #20729 > >
00:19:43 v #20730 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:43 v #20731 > > │ ### new_transparent
00:19:43 v #20732 > >
00:19:43 v #20733 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:43 v #20734 > > inl new_transparent x : transparent =
00:19:43 v #20735 > >     !\\(x, $'"leptos::leptos_dom::Transparent::new($0)"')
00:19:43 v #20736 > >
00:19:43 v #20737 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:43 v #20738 > > │ ### closure_to_view
00:19:43 v #20739 > >
00:19:43 v #20740 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:43 v #20741 > > inl closure_to_view (closure : rust.func0 view) : view =
00:19:43 v #20742 > >     !\($'"leptos::prelude::IntoAny::into_any(move || !closure())"')
00:19:43 v #20743 > >
00:19:43 v #20744 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:43 v #20745 > > │ ### vec_to_view
00:19:43 v #20746 > >
00:19:43 v #20747 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:43 v #20748 > > inl vec_to_view (views : am'.vec view) : view =
00:19:43 v #20749 > >     !\\(views, $'"leptos::prelude::IntoAny::into_any($0)"')
00:19:44 v #20750 > >
00:19:44 v #20751 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:44 v #20752 > > │ ### view_list_to_view
00:19:44 v #20753 > >
00:19:44 v #20754 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:44 v #20755 > > inl view_list_to_view (views : list view) : view =
00:19:44 v #20756 > >     views
00:19:44 v #20757 > >     |> am'.new_vec
00:19:44 v #20758 > >     |> vec_to_view
00:19:44 v #20759 > >
00:19:44 v #20760 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:44 v #20761 > > │ ### to_fragment
00:19:44 v #20762 > >
00:19:44 v #20763 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:44 v #20764 > > inl to_fragment x : fragment =
00:19:44 v #20765 > >     $'!x |> unbox'
00:19:44 v #20766 > >
00:19:44 v #20767 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:44 v #20768 > > │ ### text_to_view
00:19:44 v #20769 > >
00:19:44 v #20770 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:44 v #20771 > > inl text_to_view (text : string) : view =
00:19:44 v #20772 > >     inl text = text |> sm'.to_std_string
00:19:44 v #20773 > >     !\\(text,
00:19:44 v #20774 > > $'"leptos::prelude::IntoAny::into_any(leptos::prelude::IntoView::into_view($0))"
00:19:44 v #20775 > > ')
00:19:44 v #20776 > >
00:19:44 v #20777 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:44 v #20778 > > │ ### text_to_fragment
00:19:44 v #20779 > >
00:19:44 v #20780 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:44 v #20781 > > inl text_to_fragment (text : string) : fragment =
00:19:44 v #20782 > >     text
00:19:44 v #20783 > >     |> text_to_view
00:19:44 v #20784 > >     |> view_to_fragment
00:19:44 v #20785 > >
00:19:44 v #20786 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:44 v #20787 > > │ ### macro_to_view
00:19:44 v #20788 > >
00:19:44 v #20789 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:44 v #20790 > > inl macro_to_view (macro : string) : view =
00:19:44 v #20791 > >     global "#if FABLE_COMPILER\nFable.Core.RustInterop.emitRustExpr () \");\nuse
00:19:44 v #20792 > > leptos::prelude::ElementChild;\n//\"\n#endif"
00:19:44 v #20793 > >     !\($'"leptos::prelude::IntoAny::into_any(leptos::prelude::view\! { " +
00:19:44 v #20794 > > !macro + " })"')
00:19:44 v #20795 > >
00:19:44 v #20796 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:44 v #20797 > > │ ### macro_to_view'
00:19:44 v #20798 > >
00:19:44 v #20799 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:44 v #20800 > > inl macro_to_view' (macro : string) : view' infer =
00:19:44 v #20801 > >     global "#if FABLE_COMPILER\nFable.Core.RustInterop.emitRustExpr () \");\nuse
00:19:44 v #20802 > > leptos::prelude::ElementChild;\n//\"\n#endif"
00:19:44 v #20803 > >     !\($'"leptos::IntoView::into_view(leptos::prelude::view\! { " + !macro + "
00:19:44 v #20804 > > })"')
00:19:44 v #20805 > >
00:19:44 v #20806 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:44 v #20807 > > │ ### macro_to_view''
00:19:44 v #20808 > >
00:19:44 v #20809 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:44 v #20810 > > inl macro_to_view'' (macro : string) : view' infer =
00:19:44 v #20811 > >     global "#if FABLE_COMPILER\nFable.Core.RustInterop.emitRustExpr () \");\nuse
00:19:44 v #20812 > > leptos::prelude::ElementChild;\n//\"\n#endif"
00:19:44 v #20813 > >     !\($'"leptos::prelude::view\! { " + !macro + " }"')
00:19:45 v #20814 > >
00:19:45 v #20815 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:45 v #20816 > > │ ### macro_to_view'''
00:19:45 v #20817 > >
00:19:45 v #20818 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:45 v #20819 > > inl macro_to_view''' (macro : string) : view' _ =
00:19:45 v #20820 > >     global "#if FABLE_COMPILER\nFable.Core.RustInterop.emitRustExpr () \");\nuse
00:19:45 v #20821 > > leptos::prelude::ElementChild;\n//\"\n#endif"
00:19:45 v #20822 > >     !\($'"leptos::IntoView::into_view(leptos::prelude::view\! { " + !macro + "
00:19:45 v #20823 > > })"')
00:19:45 v #20824 > >
00:19:45 v #20825 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:45 v #20826 > > │ ### into_any_view
00:19:45 v #20827 > >
00:19:45 v #20828 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:45 v #20829 > > inl into_any_view (view : view' _) : view =
00:19:45 v #20830 > >     !\\(view, $'"leptos::prelude::IntoAny::into_any($0)"')
00:19:45 v #20831 > >
00:19:45 v #20832 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:45 v #20833 > > │ ### into_any_view'
00:19:45 v #20834 > >
00:19:45 v #20835 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:45 v #20836 > > inl into_any_view' (view : view' _) : view =
00:19:45 v #20837 > >     !\\(view, $'"&leptos::prelude::IntoAny::into_any($0)"')
00:19:45 v #20838 > >
00:19:45 v #20839 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:45 v #20840 > > │ ### transparent_to_view
00:19:45 v #20841 > >
00:19:45 v #20842 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:45 v #20843 > > inl transparent_to_view (transparent : transparent) : view =
00:19:45 v #20844 > >     !\\(transparent, $'"leptos::prelude::IntoAny::into_any($0)"')
00:19:45 v #20845 > >
00:19:45 v #20846 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:45 v #20847 > > │ ### transparent_to_fragment
00:19:45 v #20848 > >
00:19:45 v #20849 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:45 v #20850 > > inl transparent_to_fragment (transparent : transparent) : fragment =
00:19:45 v #20851 > >     transparent
00:19:45 v #20852 > >     |> transparent_to_view
00:19:45 v #20853 > >     |> view_to_fragment
00:19:45 v #20854 > >
00:19:45 v #20855 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:45 v #20856 > > │ ### macro_to_element
00:19:45 v #20857 > >
00:19:45 v #20858 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:45 v #20859 > > inl macro_to_element (view : string) : view' (html_element _) =
00:19:45 v #20860 > >     view |> macro_to_view_trait |> view_trait_to_element
00:19:46 v #20861 > >
00:19:46 v #20862 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:46 v #20863 > > │ ### transparents_fragment
00:19:46 v #20864 > >
00:19:46 v #20865 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:46 v #20866 > > inl transparents_fragment (items : array_base transparent) : fragment =
00:19:46 v #20867 > >     inl items = items |> am'.to_vec
00:19:46 v #20868 > >     !\\((items, transparent_to_view), $'"$0.iter().map(|x|
00:19:46 v #20869 > > $1(x.clone())).collect::<Fragment>()"')
00:19:46 v #20870 > >
00:19:46 v #20871 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:46 v #20872 > > │ ### new_text
00:19:46 v #20873 > >
00:19:46 v #20874 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:46 v #20875 > > inl new_text (text : string) : text =
00:19:46 v #20876 > >     !\\(text, $'"leptos::tachys::renderer::dom::Dom::create_text_node(&*$0)"')
00:19:46 v #20877 > >
00:19:46 v #20878 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:46 v #20879 > > │ ### text_view
00:19:46 v #20880 > >
00:19:46 v #20881 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:46 v #20882 > > inl text_view (text : string) : view =
00:19:46 v #20883 > >     text
00:19:46 v #20884 > >     |> text_to_view
00:19:46 v #20885 > >
00:19:46 v #20886 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:46 v #20887 > > │ ### text_fragment
00:19:46 v #20888 > >
00:19:46 v #20889 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:46 v #20890 > > inl text_fragment (text : string) : fragment =
00:19:46 v #20891 > >     text
00:19:46 v #20892 > >     |> text_view
00:19:46 v #20893 > >     |> view_to_fragment
00:19:46 v #20894 > >
00:19:46 v #20895 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:46 v #20896 > > │ ### provide_meta_context
00:19:46 v #20897 > >
00:19:46 v #20898 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:46 v #20899 > > inl provide_meta_context () =
00:19:46 v #20900 > >     (!\($'"true; leptos_meta::provide_meta_context()"') : bool) |> ignore
00:19:46 v #20901 > >
00:19:46 v #20902 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:46 v #20903 > > │ ### provide_context
00:19:46 v #20904 > >
00:19:46 v #20905 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:46 v #20906 > > inl provide_context forall t. (x : t) =
00:19:46 v #20907 > >     (!\\(x, $'$"true;
00:19:46 v #20908 > > leptos::context::provide_context::<std::sync::Arc<`t>>($0)"') : bool) |> ignore
00:19:47 v #20909 > >
00:19:47 v #20910 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:47 v #20911 > > │ ### create_signal
00:19:47 v #20912 > >
00:19:47 v #20913 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:47 v #20914 > > inl create_signal forall t. (value : t) : read_signal t * write_signal t =
00:19:47 v #20915 > >     !\\(value, $'$"leptos::prelude::signal($0)"')
00:19:47 v #20916 > >
00:19:47 v #20917 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:47 v #20918 > > │ ### new_rw_signal
00:19:47 v #20919 > >
00:19:47 v #20920 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:47 v #20921 > > inl new_rw_signal forall t. (value : t) : rw_signal t =
00:19:47 v #20922 > >     !\\(value, $'$"leptos::prelude::RwSignal::new($0)"')
00:19:47 v #20923 > >
00:19:47 v #20924 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:47 v #20925 > > │ ### new_arc_rw_signal
00:19:47 v #20926 > >
00:19:47 v #20927 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:47 v #20928 > > inl new_arc_rw_signal forall t. (value : t) : arc_rw_signal t =
00:19:47 v #20929 > >     !\\(value, $'$"leptos::prelude::ArcRwSignal::new($0)"')
00:19:47 v #20930 > >
00:19:47 v #20931 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:47 v #20932 > > │ ### read_only
00:19:47 v #20933 > >
00:19:47 v #20934 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:47 v #20935 > > inl read_only forall t. (value : rw_signal t) : read_signal t =
00:19:47 v #20936 > >     !\\(value, $'$"leptos::prelude::RwSignal::read_only(&$0)"')
00:19:47 v #20937 > >
00:19:47 v #20938 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:47 v #20939 > > │ ### write_only
00:19:47 v #20940 > >
00:19:47 v #20941 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:47 v #20942 > > inl write_only forall t. (value : rw_signal t) : write_signal t =
00:19:47 v #20943 > >     !\\(value, $'$"leptos::prelude::RwSignal::write_only(&$0)"')
00:19:47 v #20944 > >
00:19:47 v #20945 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:47 v #20946 > > │ ### typecheck_signal
00:19:47 v #20947 > >
00:19:47 v #20948 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:47 v #20949 > > inl typecheck_signal forall (t : * -> *) u. (signal : t u) : () =
00:19:47 v #20950 > >     real
00:19:47 v #20951 > >         typecase t with
00:19:47 v #20952 > >         | signal => ()
00:19:47 v #20953 > >         | arc_signal => ()
00:19:47 v #20954 > >         | rw_signal => ()
00:19:47 v #20955 > >         | arc_rw_signal => ()
00:19:47 v #20956 > >         | read_signal => ()
00:19:47 v #20957 > >         | arc_read_signal => ()
00:19:47 v #20958 > >         | write_signal => ()
00:19:47 v #20959 > >         | arc_write_signal => ()
00:19:47 v #20960 > >         | memo => ()
00:19:47 v #20961 > >         | arc_memo => ()
00:19:47 v #20962 > >         | _ => error_type `(()) ("invalid signal", ``(t u))
00:19:47 v #20963 > >
00:19:47 v #20964 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:47 v #20965 > > │ ### memo_get'
00:19:47 v #20966 > >
00:19:47 v #20967 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:47 v #20968 > > inl memo_get' forall t. (memo : memo t) : t =
00:19:47 v #20969 > >     !\\(memo, $'$"$0()"')
00:19:48 v #20970 > >
00:19:48 v #20971 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:48 v #20972 > > │ ### signal_get'
00:19:48 v #20973 > >
00:19:48 v #20974 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:48 v #20975 > > inl signal_get' forall (t : * -> *) u. (signal : t u) : u =
00:19:48 v #20976 > >     signal |> typecheck_signal
00:19:48 v #20977 > >     inl code =
00:19:48 v #20978 > >         real
00:19:48 v #20979 > >             typecase t with
00:19:48 v #20980 > >             | signal => $'$"leptos::prelude::Signal::get(&$0)"' : string
00:19:48 v #20981 > >             | arc_signal => $'$"leptos::prelude::ArcSignal::get(&$0)"' : string
00:19:48 v #20982 > >             | rw_signal => $'$"leptos::prelude::RwSignal::get(&$0)"' : string
00:19:48 v #20983 > >             | arc_rw_signal => $'$"leptos::prelude::ArcRwSignal::get(&$0)"' :
00:19:48 v #20984 > > string
00:19:48 v #20985 > >             | read_signal => $'$"leptos::prelude::ReadSignal::get(&$0)"' :
00:19:48 v #20986 > > string
00:19:48 v #20987 > >             | arc_read_signal => $'$"leptos::prelude::ArcReadSignal::get(&$0)"'
00:19:48 v #20988 > > : string
00:19:48 v #20989 > >             | write_signal => $'$"leptos::prelude::WriteSignal::get(&$0)"' :
00:19:48 v #20990 > > string
00:19:48 v #20991 > >             | arc_write_signal =>
00:19:48 v #20992 > > $'$"leptos::prelude::ArcWriteSignal::get(&$0)"' : string
00:19:48 v #20993 > >             | memo => $'$"leptos::prelude::Memo::get(&$0)"' : string
00:19:48 v #20994 > >             | arc_memo => $'$"leptos::prelude::ArcMemo::get(&$0)"' : string
00:19:48 v #20995 > >     !\\(signal, code) : u
00:19:48 v #20996 > >
00:19:48 v #20997 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:48 v #20998 > > │ ### signal_get signal
00:19:48 v #20999 > >
00:19:48 v #21000 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:48 v #21001 > > instance signal_get signal = signal_get'
00:19:48 v #21002 > > instance signal_get arc_signal = signal_get'
00:19:48 v #21003 > >
00:19:48 v #21004 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:48 v #21005 > > │ ### signal_get rw_signal
00:19:48 v #21006 > >
00:19:48 v #21007 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:48 v #21008 > > instance signal_get rw_signal = signal_get'
00:19:48 v #21009 > > instance signal_get arc_rw_signal = signal_get'
00:19:48 v #21010 > >
00:19:48 v #21011 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:48 v #21012 > > │ ### signal_get read_signal
00:19:48 v #21013 > >
00:19:48 v #21014 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:48 v #21015 > > instance signal_get read_signal = signal_get'
00:19:48 v #21016 > > instance signal_get arc_read_signal = signal_get'
00:19:48 v #21017 > >
00:19:48 v #21018 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:48 v #21019 > > │ ### signal_get memo
00:19:48 v #21020 > >
00:19:48 v #21021 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:48 v #21022 > > instance signal_get memo = signal_get'
00:19:48 v #21023 > > instance signal_get arc_memo = signal_get'
00:19:48 v #21024 > >
00:19:48 v #21025 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:48 v #21026 > > │ ### signal_update'
00:19:48 v #21027 > >
00:19:48 v #21028 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:48 v #21029 > > inl signal_update' forall (t : * -> *) u. (fn : u -> u) (signal : t u) : () =
00:19:48 v #21030 > >     signal |> typecheck_signal
00:19:48 v #21031 > >     inl code =
00:19:48 v #21032 > >         real
00:19:48 v #21033 > >             typecase t with
00:19:48 v #21034 > >             | signal => $'$"true; leptos::prelude::Signal::update(&$0, |x: &mut
00:19:48 v #21035 > > /*"' : string
00:19:48 v #21036 > >             | arc_signal => $'$"true; leptos::prelude::ArcSignal::update(&$0,
00:19:48 v #21037 > > |x: &mut /*"' : string
00:19:48 v #21038 > >             | rw_signal => $'$"true; leptos::prelude::RwSignal::update(&$0, |x:
00:19:48 v #21039 > > &mut /*"' : string
00:19:48 v #21040 > >             | arc_rw_signal => $'$"true;
00:19:48 v #21041 > > leptos::prelude::ArcRwSignal::update(&$0, |x: &mut /*"' : string
00:19:48 v #21042 > >             | read_signal => $'$"true; leptos::prelude::ReadSignal::update(&$0,
00:19:48 v #21043 > > |x: &mut /*"' : string
00:19:48 v #21044 > >             | arc_read_signal => $'$"true;
00:19:48 v #21045 > > leptos::prelude::ArcReadSignal::update(&$0, |x: &mut /*"' : string
00:19:48 v #21046 > >             | write_signal => $'$"true;
00:19:48 v #21047 > > leptos::prelude::WriteSignal::update(&$0, |x: &mut /*"' : string
00:19:48 v #21048 > >             | arc_write_signal => $'$"true;
00:19:48 v #21049 > > leptos::prelude::ArcWriteSignal::update(&$0, |x: &mut /*"' : string
00:19:48 v #21050 > >             | memo => $'$"true; leptos::prelude::Memo::update(&$0, |x: &mut /*"'
00:19:48 v #21051 > > : string
00:19:48 v #21052 > >             | arc_memo => $'$"true; leptos::prelude::ArcMemo::update(&$0, |x:
00:19:48 v #21053 > > &mut /*"' : string
00:19:48 v #21054 > >     (!\\(signal, code) : bool) |> ignore
00:19:48 v #21055 > >     (null () : rust.type_emit u) |> ignore
00:19:48 v #21056 > >     (!\\(fn, $'"*/ | { *x = $0(x.clone()) }); //"') : bool) |> ignore
00:19:49 v #21057 > >
00:19:49 v #21058 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:49 v #21059 > > │ ### signal_update rw_signal
00:19:49 v #21060 > >
00:19:49 v #21061 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:49 v #21062 > > instance signal_update rw_signal = signal_update'
00:19:49 v #21063 > > instance signal_update arc_rw_signal = signal_update'
00:19:49 v #21064 > >
00:19:49 v #21065 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:49 v #21066 > > │ ### signal_update write_signal
00:19:49 v #21067 > >
00:19:49 v #21068 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:49 v #21069 > > instance signal_update write_signal = signal_update'
00:19:49 v #21070 > > instance signal_update arc_write_signal = signal_update'
00:19:49 v #21071 > >
00:19:49 v #21072 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:49 v #21073 > > │ ### signal_get_untracked'
00:19:49 v #21074 > >
00:19:49 v #21075 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:49 v #21076 > > inl signal_get_untracked' forall (t : * -> *) u. (signal : t u) : u =
00:19:49 v #21077 > >     signal |> typecheck_signal
00:19:49 v #21078 > >     inl signal = signal |> rust.box_pin
00:19:49 v #21079 > >     inl code =
00:19:49 v #21080 > >         real
00:19:49 v #21081 > >             typecase t with
00:19:49 v #21082 > >             | signal => $'$"leptos::prelude::Signal::get_untracked(&$0)"' :
00:19:49 v #21083 > > string
00:19:49 v #21084 > >             | arc_signal => $'$"leptos::prelude::ArcSignal::get_untracked(&$0)"'
00:19:49 v #21085 > > : string
00:19:49 v #21086 > >             | rw_signal => $'$"leptos::prelude::RwSignal::get_untracked(&$0)"' :
00:19:49 v #21087 > > string
00:19:49 v #21088 > >             | arc_rw_signal =>
00:19:49 v #21089 > > $'$"leptos::prelude::ArcRwSignal::get_untracked(&$0)"' : string
00:19:49 v #21090 > >             | read_signal =>
00:19:49 v #21091 > > $'$"leptos::prelude::ReadSignal::get_untracked(&$0)"' : string
00:19:49 v #21092 > >             | arc_read_signal =>
00:19:49 v #21093 > > $'$"leptos::prelude::ArcReadSignal::get_untracked(&$0)"' : string
00:19:49 v #21094 > >             | write_signal =>
00:19:49 v #21095 > > $'$"leptos::prelude::WriteSignal::get_untracked(&$0)"' : string
00:19:49 v #21096 > >             | arc_write_signal =>
00:19:49 v #21097 > > $'$"leptos::prelude::ArcWriteSignal::get_untracked(&$0)"' : string
00:19:49 v #21098 > >             | memo => $'$"leptos::prelude::Memo::get_untracked(&$0)"' : string
00:19:49 v #21099 > >             | arc_memo => $'$"leptos::prelude::ArcMemo::get_untracked(&$0)"' :
00:19:49 v #21100 > > string
00:19:49 v #21101 > >     !\\(signal, code) : u
00:19:49 v #21102 > >
00:19:49 v #21103 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:49 v #21104 > > │ ### signal_get_untracked rw_signal
00:19:49 v #21105 > >
00:19:49 v #21106 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:49 v #21107 > > instance signal_get_untracked rw_signal = signal_get_untracked'
00:19:49 v #21108 > > instance signal_get_untracked arc_rw_signal = signal_get_untracked'
00:19:49 v #21109 > >
00:19:49 v #21110 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:49 v #21111 > > │ ### signal_get_untracked read_signal
00:19:49 v #21112 > >
00:19:49 v #21113 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:49 v #21114 > > instance signal_get_untracked read_signal = signal_get_untracked'
00:19:49 v #21115 > > instance signal_get_untracked arc_read_signal = signal_get_untracked'
00:19:49 v #21116 > >
00:19:49 v #21117 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:49 v #21118 > > │ ### signal_get_untracked memo
00:19:49 v #21119 > >
00:19:49 v #21120 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:49 v #21121 > > instance signal_get_untracked memo = signal_get_untracked'
00:19:49 v #21122 > > instance signal_get_untracked arc_memo = signal_get_untracked'
00:19:50 v #21123 > >
00:19:50 v #21124 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:50 v #21125 > > │ ### signal_set'
00:19:50 v #21126 > >
00:19:50 v #21127 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:50 v #21128 > > inl signal_set' forall (t : * -> *) u. (value : u) (signal : t u) =
00:19:50 v #21129 > >     signal |> typecheck_signal
00:19:50 v #21130 > >     inl code =
00:19:50 v #21131 > >         real
00:19:50 v #21132 > >             typecase t with
00:19:50 v #21133 > >             | signal => $'$"true; leptos::prelude::Signal::set(&$0, $1); //"' :
00:19:50 v #21134 > > string
00:19:50 v #21135 > >             | arc_signal => $'$"true; leptos::prelude::ArcSignal::set(&$0, $1);
00:19:50 v #21136 > > //"' : string
00:19:50 v #21137 > >             | rw_signal => $'$"true; leptos::prelude::RwSignal::set(&$0, $1);
00:19:50 v #21138 > > //"' : string
00:19:50 v #21139 > >             | arc_rw_signal => $'$"true; leptos::prelude::ArcRwSignal::set(&$0,
00:19:50 v #21140 > > $1); //"' : string
00:19:50 v #21141 > >             | read_signal => $'$"true; leptos::prelude::ReadSignal::set(&$0,
00:19:50 v #21142 > > $1); //"' : string
00:19:50 v #21143 > >             | arc_read_signal => $'$"true;
00:19:50 v #21144 > > leptos::prelude::ArcReadSignal::set(&$0, $1); //"' : string
00:19:50 v #21145 > >             | write_signal => $'$"true; leptos::prelude::WriteSignal::set(&$0,
00:19:50 v #21146 > > $1); //"' : string
00:19:50 v #21147 > >             | arc_write_signal => $'$"true;
00:19:50 v #21148 > > leptos::prelude::ArcWriteSignal::set(&$0, $1); //"' : string
00:19:50 v #21149 > >             | memo => $'$"true; leptos::prelude::Memo::set(&$0, $1); //"' :
00:19:50 v #21150 > > string
00:19:50 v #21151 > >             | arc_memo => $'$"true; leptos::prelude::ArcMemo::set(&$0, $1); //"'
00:19:50 v #21152 > > : string
00:19:50 v #21153 > >     (!\\((signal, value), code) : bool) |> ignore
00:19:50 v #21154 > >
00:19:50 v #21155 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:50 v #21156 > > │ ### signal_set rw_signal
00:19:50 v #21157 > >
00:19:50 v #21158 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:50 v #21159 > > instance signal_set rw_signal = signal_set'
00:19:50 v #21160 > > instance signal_set arc_rw_signal = signal_set'
00:19:50 v #21161 > >
00:19:50 v #21162 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:50 v #21163 > > │ ### signal_set write_signal
00:19:50 v #21164 > >
00:19:50 v #21165 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:50 v #21166 > > instance signal_set write_signal = signal_set'
00:19:50 v #21167 > > instance signal_set arc_write_signal = signal_set'
00:19:50 v #21168 > >
00:19:50 v #21169 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:50 v #21170 > > │ ### new_local_resource
00:19:50 v #21171 > >
00:19:50 v #21172 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:50 v #21173 > > inl new_local_resource forall t u.
00:19:50 v #21174 > >     (source : () -> t)
00:19:50 v #21175 > >     (fetcher : t -> async.future_pin u)
00:19:50 v #21176 > >     : local_resource t u
00:19:50 v #21177 > >     =
00:19:50 v #21178 > >     // inl fetcher x = rust.move fun () =>
00:19:50 v #21179 > >     //    fetcher x
00:19:50 v #21180 > >     // inl fetcher = join fetcher
00:19:50 v #21181 > >     // !\($'"leptos::create_local_resource(move || !source(), move |x| async
00:19:50 v #21182 > > move { !fetcher(x)().await })"')
00:19:50 v #21183 > >
00:19:50 v #21184 > >     // ---
00:19:50 v #21185 > >
00:19:50 v #21186 > >     // inl fn x = async.new_future fun () =>
00:19:50 v #21187 > >     //     inl x' = fetcher x
00:19:50 v #21188 > >     //     x' |> async.await
00:19:50 v #21189 > >
00:19:50 v #21190 > >     // !\\((source, fn), $'"leptos::create_local_resource(move || $0(), |x|
00:19:50 v #21191 > > async move { $1(x).await })"')
00:19:50 v #21192 > >
00:19:50 v #21193 > >     inl fetcher = fetcher |> rust.func1_from
00:19:50 v #21194 > >     inl fetcher x =
00:19:50 v #21195 > >         fetcher |> rust.func1_move x
00:19:50 v #21196 > >
00:19:50 v #21197 > >     !\\((source, fetcher), $'"leptos::prelude::LocalResource::new(move || $0(),
00:19:50 v #21198 > > |x| async move { $1(x).await })"')
00:19:50 v #21199 > >
00:19:50 v #21200 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:50 v #21201 > > │ ### new_arc_local_resource
00:19:50 v #21202 > >
00:19:50 v #21203 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:50 v #21204 > > inl new_arc_local_resource forall t.
00:19:50 v #21205 > >     (fetcher : () -> async.future_pin t)
00:19:50 v #21206 > >     : arc_local_resource t
00:19:50 v #21207 > >     =
00:19:50 v #21208 > >     // inl fetcher x = rust.move fun () =>
00:19:50 v #21209 > >     //    fetcher x
00:19:50 v #21210 > >     // inl fetcher = join fetcher
00:19:50 v #21211 > >     // !\($'"leptos::create_local_resource(move || !source(), move |x| async
00:19:50 v #21212 > > move { !fetcher(x)().await })"')
00:19:50 v #21213 > >
00:19:50 v #21214 > >     // ---
00:19:50 v #21215 > >
00:19:50 v #21216 > >     // inl fn x = async.new_future fun () =>
00:19:50 v #21217 > >     //     inl x' = fetcher x
00:19:50 v #21218 > >     //     x' |> async.await
00:19:50 v #21219 > >
00:19:50 v #21220 > >     // !\\((source, fn), $'"leptos::create_local_resource(move || $0(), |x|
00:19:50 v #21221 > > async move { $1(x).await })"')
00:19:50 v #21222 > >
00:19:50 v #21223 > >     inl fetcher = fetcher |> rust.func0_from
00:19:50 v #21224 > >
00:19:50 v #21225 > >     !\\(fetcher, $'"leptos::prelude::ArcLocalResource::new(|| async move {
00:19:50 v #21226 > > $0().await })"')
00:19:51 v #21227 > >
00:19:51 v #21228 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:51 v #21229 > > │ ### new_resource
00:19:51 v #21230 > >
00:19:51 v #21231 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:51 v #21232 > > // inl new_resource forall t u. (source : () -> t) (fetcher : t ->
00:19:51 v #21233 > > async.future_pin u) : resource t u =
00:19:51 v #21234 > > //     inl source = join source
00:19:51 v #21235 > > //     !\\(fetcher, $'"leptos::Resource::new(move || !source(), |x| async move {
00:19:51 v #21236 > > $0(x).await })"')
00:19:51 v #21237 > >
00:19:51 v #21238 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:51 v #21239 > > │ ### new_action
00:19:51 v #21240 > >
00:19:51 v #21241 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:51 v #21242 > > inl new_action forall t u. (action_fn : t -> async.future_pin u) : action t u =
00:19:51 v #21243 > >     inl action_fn = action_fn |> rust.func1_from
00:19:51 v #21244 > >     inl action_fn x =
00:19:51 v #21245 > >         action_fn |> rust.func1_move x
00:19:51 v #21246 > >     !\\(action_fn, $'"leptos::prelude::Action::new(move |value:
00:19:51 v #21247 > > &std::sync::Arc<`t>| $0(value.clone()))"')
00:19:51 v #21248 > >
00:19:51 v #21249 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:51 v #21250 > > │ ### new_arc_action
00:19:51 v #21251 > >
00:19:51 v #21252 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:51 v #21253 > > inl new_arc_action forall t u. (action_fn : t -> async.future_pin u) :
00:19:51 v #21254 > > arc_action t u =
00:19:51 v #21255 > >     // inl action_fn = action_fn |> rust.func1_from
00:19:51 v #21256 > >     inl action_fn = action_fn |> rust.func1_from
00:19:51 v #21257 > >     inl action_fn x =
00:19:51 v #21258 > >         action_fn |> rust.func1_move x
00:19:51 v #21259 > >     !\\(action_fn, $'"leptos::prelude::ArcAction::new(move |value:
00:19:51 v #21260 > > &std::sync::Arc<`t>| $0(value.clone()))"')
00:19:51 v #21261 > >
00:19:51 v #21262 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:51 v #21263 > > │ ### action_dispatch
00:19:51 v #21264 > >
00:19:51 v #21265 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:51 v #21266 > > inl action_dispatch forall t u. (value : heap t) (action : action (heap t) u) :
00:19:51 v #21267 > > () =
00:19:51 v #21268 > >     (!\\((action, value), $'"true; leptos::prelude::Action::dispatch(&$0,
00:19:51 v #21269 > > $1.clone())"') : bool) |> ignore
00:19:51 v #21270 > >
00:19:51 v #21271 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:51 v #21272 > > │ ### arc_action_dispatch
00:19:51 v #21273 > >
00:19:51 v #21274 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:51 v #21275 > > inl arc_action_dispatch forall t u. (value : heap t) (action : arc_action (heap
00:19:51 v #21276 > > t) u) : () =
00:19:51 v #21277 > >     (!\\((action, value), $'"true; leptos::prelude::ArcAction::dispatch(&$0,
00:19:51 v #21278 > > $1.clone())"') : bool) |> ignore
00:19:51 v #21279 > >
00:19:51 v #21280 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:51 v #21281 > > │ ### action_input
00:19:51 v #21282 > >
00:19:51 v #21283 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:51 v #21284 > > inl action_input forall t u. (action : action (heap t) u) : rw_signal
00:19:51 v #21285 > > (optionm'.option' t) =
00:19:51 v #21286 > >     !\\(action, $'"leptos::prelude::Action::input(&$0)"')
00:19:52 v #21287 > >
00:19:52 v #21288 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:52 v #21289 > > │ ### action_pending
00:19:52 v #21290 > >
00:19:52 v #21291 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:52 v #21292 > > inl action_pending forall t u. (action : action (heap t) u) : memo bool =
00:19:52 v #21293 > >     !\\(action, $'"leptos::prelude::Action::pending(&$0)"')
00:19:52 v #21294 > >
00:19:52 v #21295 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:52 v #21296 > > │ ### arc_action_pending
00:19:52 v #21297 > >
00:19:52 v #21298 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:52 v #21299 > > inl arc_action_pending forall t u. (action : arc_action (heap t) u) : arc_memo
00:19:52 v #21300 > > bool =
00:19:52 v #21301 > >     !\\(action, $'"leptos::prelude::ArcAction::pending(&$0)"')
00:19:52 v #21302 > >
00:19:52 v #21303 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:52 v #21304 > > │ ### action_value
00:19:52 v #21305 > >
00:19:52 v #21306 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:52 v #21307 > > inl action_value forall t u. (action : action (heap t) u) : rw_signal
00:19:52 v #21308 > > (optionm'.option' u) =
00:19:52 v #21309 > >     !\\(action, $'"leptos::prelude::Action::value(&$0)"')
00:19:52 v #21310 > >
00:19:52 v #21311 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:52 v #21312 > > │ ### arc_action_value
00:19:52 v #21313 > >
00:19:52 v #21314 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:52 v #21315 > > inl arc_action_value forall t u. (action : arc_action (heap t) u) :
00:19:52 v #21316 > > arc_rw_signal (optionm'.option' u) =
00:19:52 v #21317 > >     !\\(action, $'"leptos::prelude::ArcAction::value(&$0)"')
00:19:52 v #21318 > >
00:19:52 v #21319 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:52 v #21320 > > │ ### use_context
00:19:52 v #21321 > >
00:19:52 v #21322 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:52 v #21323 > > inl use_context forall t. () : optionm'.option' t =
00:19:52 v #21324 > >     !\($'"leptos::context::use_context::<std::sync::Arc<`t>>()"')
00:19:53 v #21325 > >
00:19:53 v #21326 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:53 v #21327 > > │ ### local_resource_loading
00:19:53 v #21328 > >
00:19:53 v #21329 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:53 v #21330 > > inl local_resource_loading forall t u. (resource : local_resource t u) : signal
00:19:53 v #21331 > > bool =
00:19:53 v #21332 > >     !\\(resource, $'$"leptos::prelude::pending(&$0).into()"')
00:19:53 v #21333 > >
00:19:53 v #21334 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:53 v #21335 > > │ ### arc_local_resource_loading
00:19:53 v #21336 > >
00:19:53 v #21337 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:53 v #21338 > > inl arc_local_resource_loading forall t. (resource : arc_local_resource t) :
00:19:53 v #21339 > > arc_signal bool =
00:19:53 v #21340 > >     !\\(resource, $'$"leptos::prelude::Submission::pending(&$0.into()).into()"')
00:19:53 v #21341 > >
00:19:53 v #21342 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:53 v #21343 > > │ ### resource_get
00:19:53 v #21344 > >
00:19:53 v #21345 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:53 v #21346 > > inl resource_get forall t u. (resource : resource t u) : optionm'.option' u =
00:19:53 v #21347 > >     !\\(resource, $'$"leptos::prelude::Resource::get(&$0)"')
00:19:53 v #21348 > >
00:19:53 v #21349 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:53 v #21350 > > │ ### local_resource_get
00:19:53 v #21351 > >
00:19:53 v #21352 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:53 v #21353 > > inl local_resource_get forall t u. (resource : local_resource t u) :
00:19:53 v #21354 > > optionm'.option' u =
00:19:53 v #21355 > >     !\\(resource, $'$"leptos::prelude::LocalResource::get(&$0)"')
00:19:53 v #21356 > >
00:19:53 v #21357 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:53 v #21358 > > │ ### arc_local_resource_get
00:19:53 v #21359 > >
00:19:53 v #21360 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:53 v #21361 > > inl arc_local_resource_get forall t. (resource : arc_local_resource t) :
00:19:53 v #21362 > > optionm'.option' t =
00:19:53 v #21363 > >     !\\(resource, $'$"Option::map(leptos::prelude::ArcLocalResource::get(&$0),
00:19:53 v #21364 > > |x| *x)"')
00:19:53 v #21365 > >
00:19:53 v #21366 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:53 v #21367 > > │ ### resource_with
00:19:53 v #21368 > >
00:19:53 v #21369 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:53 v #21370 > > inl resource_with forall t u v. (resource : resource t u) (fn : optionm'.option'
00:19:53 v #21371 > > u -> v) : v =
00:19:53 v #21372 > >     !\\((resource, fn), $'$"leptos::prelude::SignalWith::with(&$0, |x|
00:19:53 v #21373 > > $1(x.clone()))"')
00:19:54 v #21374 > >
00:19:54 v #21375 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:54 v #21376 > > │ ### new_effect
00:19:54 v #21377 > >
00:19:54 v #21378 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:54 v #21379 > > inl new_effect (fn : () -> ()) : () =
00:19:54 v #21380 > >     inl fn = fn |> rust.func0_from
00:19:54 v #21381 > >     (!\($'"true; leptos::prelude::Effect::new(move |_| { !fn() })"') : bool) |>
00:19:54 v #21382 > > ignore
00:19:54 v #21383 > >
00:19:54 v #21384 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:54 v #21385 > > │ ### interval_handle_clear
00:19:54 v #21386 > >
00:19:54 v #21387 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:54 v #21388 > > inl interval_handle_clear (interval_handle : interval_handle) =
00:19:54 v #21389 > >     (!\\(interval_handle, $'$"true;
00:19:54 v #21390 > > leptos::leptos_dom::helpers::IntervalHandle::clear(&$0)"') : bool) |> ignore
00:19:54 v #21391 > >
00:19:54 v #21392 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:54 v #21393 > > │ ### set_interval_with_handle
00:19:54 v #21394 > >
00:19:54 v #21395 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:54 v #21396 > > inl set_interval_with_handle
00:19:54 v #21397 > >     (fn : () -> ())
00:19:54 v #21398 > >     (interval_millis : date_time.duration)
00:19:54 v #21399 > >     : resultm.result' interval_handle wasm.js_value
00:19:54 v #21400 > >     =
00:19:54 v #21401 > >     inl fn = fn |> rust.func0_from
00:19:54 v #21402 > >     !\\((fn, interval_millis), $'$"leptos::set_interval_with_handle(move ||
00:19:54 v #21403 > > $0(), $1)"')
00:19:54 v #21404 > >
00:19:54 v #21405 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:54 v #21406 > > │ ### new_memo
00:19:54 v #21407 > >
00:19:54 v #21408 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:54 v #21409 > > inl new_memo forall t. (fn : () -> t) : memo t =
00:19:54 v #21410 > >     // inl fn = fn |> rust.func0_from
00:19:54 v #21411 > >     !\\(fn, $'"leptos::prelude::Memo::new(move |_| { $0() })"')
00:19:54 v #21412 > >
00:19:54 v #21413 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:54 v #21414 > > │ ### new_arc_memo
00:19:54 v #21415 > >
00:19:54 v #21416 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:54 v #21417 > > inl new_arc_memo forall t. (fn : () -> t) : arc_memo t =
00:19:54 v #21418 > >     // inl fn = fn |> rust.func0_from
00:19:54 v #21419 > >     !\\(fn, $'"leptos::prelude::ArcMemo::new(move |_| { $0() })"')
00:19:54 v #21420 > >
00:19:54 v #21421 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:54 v #21422 > > │ ### window
00:19:54 v #21423 > >
00:19:54 v #21424 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:54 v #21425 > > let window () : wasm.window =
00:19:54 v #21426 > >     !\($'"leptos::prelude::window()"')
00:19:55 v #21427 > >
00:19:55 v #21428 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:55 v #21429 > > │ ### bool_prop
00:19:55 v #21430 > >
00:19:55 v #21431 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:55 v #21432 > > inl bool_prop (prop : string) (fn : () -> bool) : string =
00:19:55 v #21433 > >     inl fn = join fn
00:19:55 v #21434 > >     $'"" + !prop + "={move || !fn()}"'
00:19:55 v #21435 > >
00:19:55 v #21436 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:55 v #21437 > > │ ### concat_props
00:19:55 v #21438 > >
00:19:55 v #21439 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:55 v #21440 > > inl concat_props props =
00:19:55 v #21441 > >     ("", props)
00:19:55 v #21442 > >     ||> listm.fold fun acc (x : string) =>
00:19:55 v #21443 > >         $'" " + !x + !acc + ""'
00:19:55 v #21444 > >
00:19:55 v #21445 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:55 v #21446 > > │ ### move_to_fragment
00:19:55 v #21447 > >
00:19:55 v #21448 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:55 v #21449 > > inl move_to_fragment fn =
00:19:55 v #21450 > >     fn
00:19:55 v #21451 > >     |> rust.move
00:19:55 v #21452 > >     |> rust.func0_move
00:19:55 v #21453 > >
00:19:55 v #21454 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:55 v #21455 > > │ ### tag_raw
00:19:55 v #21456 > >
00:19:55 v #21457 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:55 v #21458 > > inl tag_raw tag props children =
00:19:55 v #21459 > >     global "#if FABLE_COMPILER\nFable.Core.RustInterop.emitRustExpr () \");\nuse
00:19:55 v #21460 > > leptos::prelude::*;\n//\"\n#endif"
00:19:55 v #21461 > >     inl tag : string = tag
00:19:55 v #21462 > >     inl props = props |> concat_props
00:19:55 v #21463 > >     inl children =
00:19:55 v #21464 > >         children ()
00:19:55 v #21465 > >         |> fragment_to_view
00:19:55 v #21466 > >     // inl children = children |> rust.box_pin
00:19:55 v #21467 > >     // inl children = join children
00:19:55 v #21468 > >     // inl children = join children
00:19:55 v #21469 > >     // inl children = join children
00:19:55 v #21470 > >     // inl children = children >> fragment_to_view
00:19:55 v #21471 > >     // inl children : rust.func0 view = !\\(children, $'$"(|| $0)()"')
00:19:55 v #21472 > >     $'"<" + !tag + " " + !props + ">move || { !children }</" + !tag + ">"'
00:19:55 v #21473 > >
00:19:55 v #21474 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:55 v #21475 > > │ ### tag_element
00:19:55 v #21476 > >
00:19:55 v #21477 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:55 v #21478 > > inl tag_element tag props children : view' (html_element _) =
00:19:55 v #21479 > >     tag_raw tag props children
00:19:55 v #21480 > >     |> macro_to_element
00:19:55 v #21481 > >
00:19:55 v #21482 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:55 v #21483 > > │ ### tag_closed_raw
00:19:55 v #21484 > >
00:19:55 v #21485 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:55 v #21486 > > inl tag_closed_raw tag props =
00:19:55 v #21487 > >     inl tag : string = tag
00:19:55 v #21488 > >     inl props = props |> concat_props
00:19:55 v #21489 > >     $'"<" + !tag + " " + !props + " />"'
00:19:56 v #21490 > >
00:19:56 v #21491 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:56 v #21492 > > │ ### tag_closed
00:19:56 v #21493 > >
00:19:56 v #21494 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:56 v #21495 > > inl tag_closed tag props : view' (html_element _) =
00:19:56 v #21496 > >     tag_closed_raw tag props
00:19:56 v #21497 > >     |> macro_to_element
00:19:56 v #21498 > >
00:19:56 v #21499 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:56 v #21500 > > │ ### for
00:19:56 v #21501 > >
00:19:56 v #21502 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:56 v #21503 > > inl for props : view =
00:19:56 v #21504 > >     tag_closed_raw "leptos::prelude::For" props
00:19:56 v #21505 > >     |> macro_to_view
00:19:56 v #21506 > >
00:19:56 v #21507 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:56 v #21508 > > │ ### for
00:19:56 v #21509 > >
00:19:56 v #21510 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:56 v #21511 > > inl for forall t u (signal : * -> *).
00:19:56 v #21512 > >     (signal : signal (am'.vec t))
00:19:56 v #21513 > >     (key_fn : t -> u)
00:19:56 v #21514 > >     (children' : t -> fragment)
00:19:56 v #21515 > >     : view
00:19:56 v #21516 > >     =
00:19:56 v #21517 > >     signal |> typecheck_signal
00:19:56 v #21518 > >     inl signal = signal |> rust.emit
00:19:56 v #21519 > >     inl key_fn = key_fn |> rust.func1_from
00:19:56 v #21520 > >     inl key_fn x =
00:19:56 v #21521 > >         key_fn |> rust.func1_move x
00:19:56 v #21522 > >     inl children' = (children' >> fragment_to_view) |> rust.func1_from
00:19:56 v #21523 > >     inl children' x =
00:19:56 v #21524 > >         children' |> rust.func1_move x
00:19:56 v #21525 > >     for [[
00:19:56 v #21526 > >         $'"each=!signal"'
00:19:56 v #21527 > >         $'"key=move |x| !key_fn(x.to_owned())"'
00:19:56 v #21528 > >         $'"let:x"'
00:19:56 v #21529 > >         $'"children=move |x| !children'(x)"'
00:19:56 v #21530 > >     ]]
00:19:56 v #21531 > >
00:19:56 v #21532 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:56 v #21533 > > │ ### show
00:19:56 v #21534 > >
00:19:56 v #21535 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:56 v #21536 > > inl show props : view =
00:19:56 v #21537 > >     tag_closed_raw "leptos::prelude::Show" props
00:19:56 v #21538 > >     |> macro_to_view
00:19:56 v #21539 > >
00:19:56 v #21540 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:56 v #21541 > > │ ### show
00:19:56 v #21542 > >
00:19:56 v #21543 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:56 v #21544 > > inl show (when_fn : () -> bool) (fallback : () -> view) (children : () ->
00:19:56 v #21545 > > fragment) : view =
00:19:56 v #21546 > >     inl when_fn = join when_fn
00:19:56 v #21547 > >     inl when_fn = join when_fn
00:19:56 v #21548 > >     inl fallback = join fallback
00:19:56 v #21549 > >     inl children = join children
00:19:56 v #21550 > >     show [[
00:19:56 v #21551 > >         $'"when=move || !when_fn()"'
00:19:56 v #21552 > >         $'"fallback=move || !fallback()"'
00:19:56 v #21553 > >         $'"children=std::rc::Rc::new(move || !children())"'
00:19:56 v #21554 > >     ]]
00:19:57 v #21555 > >
00:19:57 v #21556 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:57 v #21557 > > │ ### use_location
00:19:57 v #21558 > >
00:19:57 v #21559 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:57 v #21560 > > inl use_location () : location =
00:19:57 v #21561 > >     !\($'"leptos_router::hooks::use_location()"')
00:19:57 v #21562 > >
00:19:57 v #21563 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:57 v #21564 > > │ ### use_navigate
00:19:57 v #21565 > >
00:19:57 v #21566 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:57 v #21567 > > inl use_navigate () : string -> () =
00:19:57 v #21568 > >     inl navigate : threading.arc (rust.dyn' (rust.action_fn2 (rust.ref sm'.str)
00:19:57 v #21569 > > navigate_options)) =
00:19:57 v #21570 > >         !\($'"std::sync::Arc::new(leptos_router::hooks::use_navigate())"')
00:19:57 v #21571 > >     fun url =>
00:19:57 v #21572 > >         inl url = url |> sm'.as_str
00:19:57 v #21573 > >         !\\((navigate, url), $'"$0($1, Default::default())"')
00:19:57 v #21574 > >
00:19:57 v #21575 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:57 v #21576 > > │ ### location_hash
00:19:57 v #21577 > >
00:19:57 v #21578 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:57 v #21579 > > inl location_hash (location : location) : memo sm'.std_string =
00:19:57 v #21580 > >     !\\(location, $'"$0.hash"')
00:19:57 v #21581 > >
00:19:57 v #21582 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:57 v #21583 > > │ ### location_pathname
00:19:57 v #21584 > >
00:19:57 v #21585 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:57 v #21586 > > inl location_pathname (location : location) : memo sm'.std_string =
00:19:57 v #21587 > >     !\\(location, $'"$0.pathname"')
00:19:57 v #21588 > >
00:19:57 v #21589 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:57 v #21590 > > │ ### location_search
00:19:57 v #21591 > >
00:19:57 v #21592 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:57 v #21593 > > inl location_search (location : location) : memo sm'.std_string =
00:19:57 v #21594 > >     !\\(location, $'"$0.search"')
00:19:57 v #21595 > >
00:19:57 v #21596 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:57 v #21597 > > │ ### url_try_from
00:19:57 v #21598 > >
00:19:57 v #21599 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:57 v #21600 > > inl url_try_from (s : rust.ref sm'.str) : resultm.result' url sm'.std_string =
00:19:57 v #21601 > >     !\\(s, $'"leptos_router::location::Url::try_from($0)"')
00:19:58 v #21602 > >
00:19:58 v #21603 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:58 v #21604 > > │ ### url_pathname
00:19:58 v #21605 > >
00:19:58 v #21606 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:58 v #21607 > > inl url_pathname (url : url) : sm'.std_string =
00:19:58 v #21608 > >     !\\(url, $'"$0.pathname"')
00:19:58 v #21609 > >
00:19:58 v #21610 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:58 v #21611 > > │ ### use_url
00:19:58 v #21612 > >
00:19:58 v #21613 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:58 v #21614 > > inl use_url () =
00:19:58 v #21615 > >     inl location = use_location ()
00:19:58 v #21616 > >
00:19:58 v #21617 > >     fun () =>
00:19:58 v #21618 > >         inl url_pathname = location |> location_pathname |> signal_get |>
00:19:58 v #21619 > > sm'.from_std_string
00:19:58 v #21620 > >         inl url_search = location |> location_search |> signal_get |>
00:19:58 v #21621 > > sm'.from_std_string
00:19:58 v #21622 > >         inl url_search =
00:19:58 v #21623 > >             if url_search = ""
00:19:58 v #21624 > >             then ""
00:19:58 v #21625 > >             else $'$"?{!url_search}"'
00:19:58 v #21626 > >         url_pathname +. url_search
00:19:58 v #21627 > >     |> new_arc_memo
00:19:58 v #21628 > >
00:19:58 v #21629 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:58 v #21630 > > │ ### route
00:19:58 v #21631 > >
00:19:58 v #21632 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:58 v #21633 > > inl route path view children : view' nested_route =
00:19:58 v #21634 > >     inl path = path |> sm'.to_std_string
00:19:58 v #21635 > >     inl path = join path
00:19:58 v #21636 > >     // inl view = view |> rust.move
00:19:58 v #21637 > >     inl view () =
00:19:58 v #21638 > >         view () |> fragment_to_view
00:19:58 v #21639 > >     inl view = join view
00:19:58 v #21640 > >     tag_closed_raw "leptos_router::components::ParentRoute" [[
00:19:58 v #21641 > >         $'"path=leptos_router::path\!(!path)"'
00:19:58 v #21642 > >         $'"view= move || !view()"'
00:19:58 v #21643 > >         $'"children=Box::new(move || !children())"'
00:19:58 v #21644 > >     ]]
00:19:58 v #21645 > >     |> macro_to_view'''
00:19:58 v #21646 > >
00:19:58 v #21647 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:58 v #21648 > > │ ### macro_to_view
00:19:58 v #21649 > >
00:19:58 v #21650 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:58 v #21651 > > inl macro_to_view (macro : string) : view =
00:19:58 v #21652 > >     global "#if FABLE_COMPILER\nFable.Core.RustInterop.emitRustExpr () \");\nuse
00:19:58 v #21653 > > leptos::prelude::ElementChild;\n//\"\n#endif"
00:19:58 v #21654 > >     !\($'"leptos::prelude::IntoAny::into_any(leptos::prelude::view\! { " +
00:19:58 v #21655 > > !macro + " })"')
00:19:58 v #21656 > >
00:19:58 v #21657 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:58 v #21658 > > │ ### router
00:19:58 v #21659 > >
00:19:58 v #21660 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:58 v #21661 > > inl router children : view =
00:19:58 v #21662 > >     // inl children : () -> fragment = join children
00:19:58 v #21663 > >     tag_closed_raw "leptos_router::components::Router" [[
00:19:58 v #21664 > >         $'"children=Box::new(move || !children())"'
00:19:58 v #21665 > >     ]]
00:19:58 v #21666 > >     |> macro_to_view'
00:19:58 v #21667 > >     |> into_any_view
00:19:59 v #21668 > >
00:19:59 v #21669 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:59 v #21670 > > │ ### routes
00:19:59 v #21671 > >
00:19:59 v #21672 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:59 v #21673 > > inl routes children : view =
00:19:59 v #21674 > >     inl children : () -> am'.vec (view' nested_route) = join children
00:19:59 v #21675 > >     inl children = join children
00:19:59 v #21676 > >     inl fallback = "leptos.routes / fallback" |> text_view
00:19:59 v #21677 > >     tag_closed_raw "leptos_router::components::Routes" [[
00:19:59 v #21678 > >         $'"fallback=move || !fallback"'
00:19:59 v #21679 > >         $'"children=leptos::children::ToChildren::to_children(move ||
00:19:59 v #21680 > > !children())"'
00:19:59 v #21681 > >     ]]
00:19:59 v #21682 > >     |> macro_to_view'
00:19:59 v #21683 > >     |> into_any_view
00:19:59 v #21684 > >
00:19:59 v #21685 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:59 v #21686 > > │ ### a'
00:19:59 v #21687 > >
00:19:59 v #21688 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:59 v #21689 > > inl a' props children : _ (_ a') =
00:19:59 v #21690 > >     tag_element "a" props children
00:19:59 v #21691 > >
00:19:59 v #21692 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:59 v #21693 > > │ ### button
00:19:59 v #21694 > >
00:19:59 v #21695 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:59 v #21696 > > inl button props children : _ (_ button) =
00:19:59 v #21697 > >     tag_element "button" props children
00:19:59 v #21698 > >
00:19:59 v #21699 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:59 v #21700 > > │ ### details
00:19:59 v #21701 > >
00:19:59 v #21702 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:59 v #21703 > > inl details props children : _ (_ details) =
00:19:59 v #21704 > >     tag_element "details" props children
00:19:59 v #21705 > >
00:19:59 v #21706 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:59 v #21707 > > │ ### div
00:19:59 v #21708 > >
00:19:59 v #21709 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:59 v #21710 > > inl div props children : _ (_ div) =
00:19:59 v #21711 > >     tag_element "div" props children
00:19:59 v #21712 > >
00:19:59 v #21713 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:59 v #21714 > > │ ### footer
00:19:59 v #21715 > >
00:19:59 v #21716 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:59 v #21717 > > inl footer props children : _ (_ footer) =
00:19:59 v #21718 > >     tag_element "footer" props children
00:20:00 v #21719 > >
00:20:00 v #21720 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:00 v #21721 > > │ ### header
00:20:00 v #21722 > >
00:20:00 v #21723 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:00 v #21724 > > inl header props children : _ (_ header) =
00:20:00 v #21725 > >     tag_element "header" props children
00:20:00 v #21726 > >
00:20:00 v #21727 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:00 v #21728 > > │ ### label
00:20:00 v #21729 > >
00:20:00 v #21730 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:00 v #21731 > > inl label props children : _ (_ label) =
00:20:00 v #21732 > >     tag_element "label" props children
00:20:00 v #21733 > >
00:20:00 v #21734 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:00 v #21735 > > │ ### main
00:20:00 v #21736 > >
00:20:00 v #21737 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:00 v #21738 > > inl main props children : _ (_ main) =
00:20:00 v #21739 > >     tag_element "main" props children
00:20:00 v #21740 > >
00:20:00 v #21741 > > inl main' () = ()
00:20:00 v #21742 > >
00:20:00 v #21743 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:00 v #21744 > > │ ### nav
00:20:00 v #21745 > >
00:20:00 v #21746 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:00 v #21747 > > inl nav props children : _ (_ nav) =
00:20:00 v #21748 > >     tag_element "nav" props children
00:20:00 v #21749 > >
00:20:00 v #21750 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:00 v #21751 > > │ ### option'
00:20:00 v #21752 > >
00:20:00 v #21753 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:00 v #21754 > > inl option' props children : _ (_ option') =
00:20:00 v #21755 > >     tag_element "option" props children
00:20:01 v #21756 > >
00:20:01 v #21757 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:01 v #21758 > > │ ### option'
00:20:01 v #21759 > >
00:20:01 v #21760 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:01 v #21761 > > inl option' selected children : _ (_ option') =
00:20:01 v #21762 > >     inl selected : () -> bool = join selected
00:20:01 v #21763 > >     option' [[
00:20:01 v #21764 > >         $'"selected=!selected()"'
00:20:01 v #21765 > >     ]] fun () =>
00:20:01 v #21766 > >         children |> text_to_fragment
00:20:01 v #21767 > >
00:20:01 v #21768 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:01 v #21769 > > │ ### pre
00:20:01 v #21770 > >
00:20:01 v #21771 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:01 v #21772 > > inl pre props children : _ (_ pre) =
00:20:01 v #21773 > >     tag_element "pre" props children
00:20:01 v #21774 > >
00:20:01 v #21775 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:01 v #21776 > > │ ### select
00:20:01 v #21777 > >
00:20:01 v #21778 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:01 v #21779 > > inl select props children : _ (_ select) =
00:20:01 v #21780 > >     tag_element "select" props children
00:20:01 v #21781 > >
00:20:01 v #21782 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:01 v #21783 > > │ ### span
00:20:01 v #21784 > >
00:20:01 v #21785 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:01 v #21786 > > inl span props children : _ (_ span) =
00:20:01 v #21787 > >     tag_element "span" props children
00:20:01 v #21788 > >
00:20:01 v #21789 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:01 v #21790 > > │ ### summary
00:20:01 v #21791 > >
00:20:01 v #21792 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:01 v #21793 > > inl summary props children : _ (_ summary) =
00:20:01 v #21794 > >     tag_element "summary" props children
00:20:02 v #21795 > >
00:20:02 v #21796 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:02 v #21797 > > │ ### table
00:20:02 v #21798 > >
00:20:02 v #21799 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:02 v #21800 > > inl table props children : _ (_ table) =
00:20:02 v #21801 > >     tag_element "table" props children
00:20:02 v #21802 > >
00:20:02 v #21803 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:02 v #21804 > > │ ### thead
00:20:02 v #21805 > >
00:20:02 v #21806 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:02 v #21807 > > inl thead props children : _ (_ thead) =
00:20:02 v #21808 > >     tag_element "thead" props children
00:20:02 v #21809 > >
00:20:02 v #21810 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:02 v #21811 > > │ ### tbody
00:20:02 v #21812 > >
00:20:02 v #21813 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:02 v #21814 > > inl tbody props children : _ (_ tbody) =
00:20:02 v #21815 > >     tag_element "tbody" props children
00:20:02 v #21816 > >
00:20:02 v #21817 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:02 v #21818 > > │ ### tr
00:20:02 v #21819 > >
00:20:02 v #21820 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:02 v #21821 > > inl tr props children : _ (_ tr) =
00:20:02 v #21822 > >     tag_element "tr" props children
00:20:02 v #21823 > >
00:20:02 v #21824 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:02 v #21825 > > │ ### th
00:20:02 v #21826 > >
00:20:02 v #21827 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:02 v #21828 > > inl th props children : _ (_ th) =
00:20:02 v #21829 > >     tag_element "th" props children
00:20:02 v #21830 > >
00:20:02 v #21831 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:02 v #21832 > > │ ### td
00:20:02 v #21833 > >
00:20:02 v #21834 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:02 v #21835 > > inl td props children : _ (_ td) =
00:20:02 v #21836 > >     tag_element "td" props children
00:20:03 v #21837 > >
00:20:03 v #21838 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:03 v #21839 > > │ ### svg
00:20:03 v #21840 > >
00:20:03 v #21841 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:03 v #21842 > > inl svg props children : _ (_ svg) =
00:20:03 v #21843 > >     tag_element "svg" props children
00:20:03 v #21844 > >
00:20:03 v #21845 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:03 v #21846 > > │ ### path
00:20:03 v #21847 > >
00:20:03 v #21848 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:03 v #21849 > > inl path props : _ (_ path) =
00:20:03 v #21850 > >     tag_element "path" props (fun () => [[]] |> view_list_to_fragment)
00:20:03 v #21851 > >
00:20:03 v #21852 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:03 v #21853 > > │ ### circle
00:20:03 v #21854 > >
00:20:03 v #21855 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:03 v #21856 > > inl circle props : _ (_ circle) =
00:20:03 v #21857 > >     tag_element "circle" props (fun () => [[]] |> view_list_to_fragment)
00:20:03 v #21858 > >
00:20:03 v #21859 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:03 v #21860 > > │ ### rect
00:20:03 v #21861 > >
00:20:03 v #21862 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:03 v #21863 > > inl rect props children : _ (_ rect) =
00:20:03 v #21864 > >     tag_element "rect" props children
00:20:03 v #21865 > >
00:20:03 v #21866 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:03 v #21867 > > │ ### animate
00:20:03 v #21868 > >
00:20:03 v #21869 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:03 v #21870 > > inl animate props : _ (_ animate) =
00:20:03 v #21871 > >     tag_element "animate" props (fun () => [[]] |> view_list_to_fragment)
00:20:04 v #21872 > >
00:20:04 v #21873 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:04 v #21874 > > │ ### input
00:20:04 v #21875 > >
00:20:04 v #21876 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:04 v #21877 > > inl input props : _ (_ input) =
00:20:04 v #21878 > >     tag_closed "input" props
00:20:04 v #21879 > >
00:20:04 v #21880 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:04 v #21881 > > │ ### dd
00:20:04 v #21882 > >
00:20:04 v #21883 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:04 v #21884 > > inl dd props children : _ (_ dd) =
00:20:04 v #21885 > >     tag_element "dd" props children
00:20:04 v #21886 > >
00:20:04 v #21887 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:04 v #21888 > > │ ### dl
00:20:04 v #21889 > >
00:20:04 v #21890 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:04 v #21891 > > inl dl props children : _ (_ dl) =
00:20:04 v #21892 > >     tag_element "dl" props children
00:20:04 v #21893 > >
00:20:04 v #21894 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:04 v #21895 > > │ ### dt
00:20:04 v #21896 > >
00:20:04 v #21897 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:04 v #21898 > > inl dt props children : _ (_ dt) =
00:20:04 v #21899 > >     tag_element "dt" props children
00:20:04 v #21900 > 00:00:40 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 93011 }
00:20:04 v #21901 > 00:00:40 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/leptos/leptos.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/leptos/leptos.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:20:05 v #21902 > 00:00:40 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/leptos/leptos.dib.ipynb to html
00:20:05 v #21903 > 00:00:40 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:20:05 v #21904 > 00:00:40 v #7 !   validate(nb)
00:20:06 v #21905 > 00:00:41 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:20:06 v #21906 > 00:00:41 v #9 !   return _pygments_highlight(
00:20:07 v #21907 > 00:00:42 v #10 ! [NbConvertApp] Writing 665974 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/leptos/leptos.dib.html
00:20:07 v #21908 > 00:00:42 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 910 }
00:20:07 v #21909 > 00:00:42 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 910 }
00:20:07 v #21910 > 00:00:42 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/leptos/leptos.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/leptos/leptos.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:20:07 v #21911 > 00:00:42 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:20:07 v #21912 > 00:00:42 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:20:07 v #21913 > 00:00:42 d #16 spiral.run / dib / { exit_code = 0; result_length = 93980 }
00:20:07 d #21914 runtime.execute_with_options_async / { exit_code = 0; output_length = 101090 }
00:20:07 d #28 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path leptos/leptos.dib --retries 3
00:20:07 d #21915 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path util.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path util.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:20:07 v #21916 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "util.dib", "--retries", "3"])) }
00:20:07 v #21917 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/util.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/util.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/util.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/util.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:20:09 v #21918 > >
00:20:09 v #21919 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:09 v #21920 > > │ # util
00:20:11 v #21921 > >
00:20:11 v #21922 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:11 v #21923 > > //// test
00:20:11 v #21924 > >
00:20:11 v #21925 > > open testing
00:20:12 v #21926 > >
00:20:12 v #21927 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:12 v #21928 > > │ ### ski
00:20:12 v #21929 > >
00:20:12 v #21930 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:12 v #21931 > > union rec ski =
00:20:12 v #21932 > >     | I
00:20:12 v #21933 > >     | K
00:20:12 v #21934 > >     | S
00:20:12 v #21935 > >     | App : ski * ski
00:20:12 v #21936 > >
00:20:12 v #21937 > > inl rec eval ski =
00:20:12 v #21938 > >     match ski with
00:20:12 v #21939 > >     | App (App (K, x), y) => x |> eval
00:20:12 v #21940 > >     | App (App (App (S, x), y), z) => App (App (x, z), App (y, z)) |> eval
00:20:12 v #21941 > >     | App (I, x) => x |> eval
00:20:12 v #21942 > >     | App (K, x) => App (K, eval x)
00:20:12 v #21943 > >     | App (f, x) => App (eval f, x) |> eval
00:20:12 v #21944 > >     | _ => ski
00:20:12 v #21945 > >
00:20:12 v #21946 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:12 v #21947 > > //// test
00:20:12 v #21948 > >
00:20:12 v #21949 > > eval I
00:20:12 v #21950 > > |> _assert_eq I
00:20:12 v #21951 > >
00:20:12 v #21952 > > App (I, I)
00:20:12 v #21953 > > |> eval
00:20:12 v #21954 > > |> _assert_eq I
00:20:12 v #21955 > >
00:20:12 v #21956 > > App (I, App (I, I))
00:20:12 v #21957 > > |> eval
00:20:12 v #21958 > > |> _assert_eq I
00:20:12 v #21959 > >
00:20:12 v #21960 > > App (App (I, I), I)
00:20:12 v #21961 > > |> eval
00:20:12 v #21962 > > |> _assert_eq I
00:20:12 v #21963 > >
00:20:12 v #21964 > > App (App (App (I, I), I), I)
00:20:12 v #21965 > > |> eval
00:20:12 v #21966 > > |> _assert_eq I
00:20:12 v #21967 > >
00:20:12 v #21968 > > eval K
00:20:12 v #21969 > > |> _assert_eq K
00:20:12 v #21970 > >
00:20:12 v #21971 > > App (K, I)
00:20:12 v #21972 > > |> eval
00:20:12 v #21973 > > |> _assert_eq (App (K, I))
00:20:12 v #21974 > >
00:20:12 v #21975 > > App (K, K)
00:20:12 v #21976 > > |> eval
00:20:12 v #21977 > > |> _assert_eq (App (K, K))
00:20:12 v #21978 > >
00:20:12 v #21979 > > App (App (K, I), K)
00:20:12 v #21980 > > |> eval
00:20:12 v #21981 > > |> _assert_eq I
00:20:12 v #21982 > >
00:20:12 v #21983 > > App (App (K, K), I)
00:20:12 v #21984 > > |> eval
00:20:12 v #21985 > > |> _assert_eq K
00:20:12 v #21986 > >
00:20:12 v #21987 > > App (App (App (App (K, K), I), S), K)
00:20:12 v #21988 > > |> eval
00:20:12 v #21989 > > |> _assert_eq S
00:20:12 v #21990 > >
00:20:12 v #21991 > > eval S
00:20:12 v #21992 > > |> _assert_eq S
00:20:12 v #21993 > >
00:20:12 v #21994 > > App (App (App (S, I), I), I)
00:20:12 v #21995 > > |> eval
00:20:12 v #21996 > > |> _assert_eq I
00:20:12 v #21997 > >
00:20:12 v #21998 > > App (App (App (S, K), K), I)
00:20:12 v #21999 > > |> eval
00:20:12 v #22000 > > |> _assert_eq I
00:20:12 v #22001 > >
00:20:12 v #22002 > > App (App (App (S, K), I), (App (App (K, I), S)))
00:20:12 v #22003 > > |> eval
00:20:12 v #22004 > > |> _assert_eq I
00:20:12 v #22005 > >
00:20:12 v #22006 > > App (App (K, S), App (I, App (App (App (S, K), S), I)))
00:20:12 v #22007 > > |> eval
00:20:12 v #22008 > > |> _assert_eq S
00:20:12 v #22009 > >
00:20:12 v #22010 > > App (App (App (S, K), I), K)
00:20:12 v #22011 > > |> eval
00:20:12 v #22012 > > |> _assert_eq K
00:20:13 v #22013 > >
00:20:13 v #22014 > > ── [ 901.09ms - stdout ] ───────────────────────────────────────────────────────
00:20:13 v #22015 > > │ __assert_eq / actual: UH0_0 / expected: UH0_0
00:20:13 v #22016 > > │ __assert_eq / actual: UH0_0 / expected: UH0_0
00:20:13 v #22017 > > │ __assert_eq / actual: UH0_0 / expected: UH0_0
00:20:13 v #22018 > > │ __assert_eq / actual: UH0_0 / expected: UH0_0
00:20:13 v #22019 > > │ __assert_eq / actual: UH0_0 / expected: UH0_0
00:20:13 v #22020 > > │ __assert_eq / actual: UH0_1 / expected: UH0_1
00:20:13 v #22021 > > │ __assert_eq / actual: UH0_3 (UH0_1, UH0_0) / expected: UH0_3
00:20:13 v #22022 > > (UH0_1, UH0_0)
00:20:13 v #22023 > > │ __assert_eq / actual: UH0_3 (UH0_1, UH0_1) / expected: UH0_3
00:20:13 v #22024 > > (UH0_1, UH0_1)
00:20:13 v #22025 > > │ __assert_eq / actual: UH0_0 / expected: UH0_0
00:20:13 v #22026 > > │ __assert_eq / actual: UH0_1 / expected: UH0_1
00:20:13 v #22027 > > │ __assert_eq / actual: UH0_2 / expected: UH0_2
00:20:13 v #22028 > > │ __assert_eq / actual: UH0_2 / expected: UH0_2
00:20:13 v #22029 > > │ __assert_eq / actual: UH0_0 / expected: UH0_0
00:20:13 v #22030 > > │ __assert_eq / actual: UH0_0 / expected: UH0_0
00:20:13 v #22031 > > │ __assert_eq / actual: UH0_0 / expected: UH0_0
00:20:13 v #22032 > > │ __assert_eq / actual: UH0_2 / expected: UH0_2
00:20:13 v #22033 > > │ __assert_eq / actual: UH0_1 / expected: UH0_1
00:20:13 v #22034 > > │
00:20:13 v #22035 > 00:00:05 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 3093 }
00:20:13 v #22036 > 00:00:05 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/util.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/util.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:20:13 v #22037 > 00:00:06 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/util.dib.ipynb to html
00:20:13 v #22038 > 00:00:06 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:20:13 v #22039 > 00:00:06 v #7 !   validate(nb)
00:20:14 v #22040 > 00:00:06 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:20:14 v #22041 > 00:00:06 v #9 !   return _pygments_highlight(
00:20:14 v #22042 > 00:00:06 v #10 ! [NbConvertApp] Writing 284368 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/util.dib.html
00:20:14 v #22043 > 00:00:06 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 892 }
00:20:14 v #22044 > 00:00:06 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 892 }
00:20:14 v #22045 > 00:00:06 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/util.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/util.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:20:14 v #22046 > 00:00:06 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:20:14 v #22047 > 00:00:06 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:20:14 v #22048 > 00:00:06 d #16 spiral.run / dib / { exit_code = 0; result_length = 4044 }
00:20:14 d #22049 runtime.execute_with_options_async / { exit_code = 0; output_length = 6913 }
00:20:14 d #29 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path util.dib --retries 3
00:20:14 d #22050 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path platform.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path platform.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:20:14 v #22051 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "platform.dib", "--retries", "3"])) }
00:20:14 v #22052 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/platform.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/platform.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/platform.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/platform.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:20:16 v #22053 > >
00:20:16 v #22054 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:16 v #22055 > > │ # platform
00:20:18 v #22056 > >
00:20:18 v #22057 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:18 v #22058 > > open rust.rust_operators
00:20:19 v #22059 > >
00:20:19 v #22060 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:19 v #22061 > > //// test
00:20:19 v #22062 > >
00:20:19 v #22063 > > open testing
00:20:19 v #22064 > >
00:20:19 v #22065 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:19 v #22066 > > │ ## fsharp
00:20:19 v #22067 > >
00:20:19 v #22068 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:19 v #22069 > > │ ### os_platform
00:20:19 v #22070 > >
00:20:19 v #22071 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:19 v #22072 > > nominal os_platform' = $'System.Runtime.InteropServices.OSPlatform'
00:20:19 v #22073 > >
00:20:19 v #22074 > > union os_platform =
00:20:19 v #22075 > >     | FreeBSD
00:20:19 v #22076 > >     | Linux
00:20:19 v #22077 > >     | OSX
00:20:19 v #22078 > >     | Windows
00:20:19 v #22079 > >
00:20:19 v #22080 > > inl os_platform = function
00:20:19 v #22081 > >     | FreeBSD => $'`os_platform'.FreeBSD' : os_platform'
00:20:19 v #22082 > >     | Linux => $'`os_platform'.Linux' : os_platform'
00:20:19 v #22083 > >     | OSX => $'`os_platform'.OSX' : os_platform'
00:20:19 v #22084 > >     | Windows => $'`os_platform'.Windows' : os_platform'
00:20:19 v #22085 > >
00:20:19 v #22086 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:19 v #22087 > > │ ### run_platform
00:20:19 v #22088 > >
00:20:19 v #22089 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:19 v #22090 > > inl run_platform forall t. (fn : os_platform -> (() -> t)) : t =
00:20:19 v #22091 > >     inl result = dyn true
00:20:19 v #22092 > >     $'let mutable _run_platform_!result : `t option = None '
00:20:19 v #22093 > >     $'\n#if _FREEBSD'
00:20:19 v #22094 > >     fn FreeBSD () |> emit_unit
00:20:19 v #22095 > >     $'#endif\n#if _LINUX'
00:20:19 v #22096 > >     fn Linux () |> emit_unit
00:20:19 v #22097 > >     $'#endif\n#if _OSX'
00:20:19 v #22098 > >     fn OSX () |> emit_unit
00:20:19 v #22099 > >     $'#endif\n#if _WINDOWS'
00:20:19 v #22100 > >     fn Windows () |> emit_unit
00:20:19 v #22101 > >     $'#endif'
00:20:19 v #22102 > >     $'|> fun x -> _run_platform_!result <- Some x'
00:20:19 v #22103 > >     $'match _run_platform_!result with Some x -> x | None -> failwith
00:20:19 v #22104 > > "runtime.run_platform / _run_platform_!result=None"'
00:20:19 v #22105 > >
00:20:19 v #22106 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:19 v #22107 > > │ ### is_os_platform
00:20:19 v #22108 > >
00:20:19 v #22109 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:19 v #22110 > > inl is_os_platform (x : os_platform') : bool =
00:20:19 v #22111 > >     x |> $'System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform'
00:20:19 v #22112 > >
00:20:19 v #22113 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:19 v #22114 > > │ ### is_windows'
00:20:19 v #22115 > >
00:20:19 v #22116 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:19 v #22117 > > inl is_windows' () : bool =
00:20:19 v #22118 > >     run_platform function
00:20:19 v #22119 > >         | Windows => fun () => true
00:20:19 v #22120 > >         | _ => fun () => false
00:20:19 v #22121 > >
00:20:19 v #22122 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:19 v #22123 > > │ ## platform
00:20:19 v #22124 > >
00:20:19 v #22125 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:19 v #22126 > > │ ### is_windows
00:20:19 v #22127 > >
00:20:19 v #22128 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:19 v #22129 > > inl is_windows () : bool =
00:20:19 v #22130 > >     run_target function
00:20:19 v #22131 > >         | Rust _ => fun () =>
00:20:19 v #22132 > >             !\($'"cfg\!(windows)"')
00:20:19 v #22133 > >         | Fsharp _ => fun () =>
00:20:19 v #22134 > >             Windows |> os_platform |> is_os_platform
00:20:19 v #22135 > >         | target => fun () => failwith $'$"platform.is_windows / target:
00:20:19 v #22136 > > {!target}"'
00:20:19 v #22137 > >
00:20:19 v #22138 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:19 v #22139 > > │ ### get_executable_suffix
00:20:19 v #22140 > >
00:20:19 v #22141 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:19 v #22142 > > inl get_executable_suffix () =
00:20:19 v #22143 > >     if is_windows ()
00:20:19 v #22144 > >     then ".exe"
00:20:19 v #22145 > >     else ""
00:20:20 v #22146 > >
00:20:20 v #22147 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:20 v #22148 > > //// test
00:20:20 v #22149 > >
00:20:20 v #22150 > > get_executable_suffix ()
00:20:20 v #22151 > >
00:20:20 v #22152 > >
00:20:20 v #22153 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:20 v #22154 > > │ ## main
00:20:20 v #22155 > >
00:20:20 v #22156 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:20 v #22157 > > inl main () =
00:20:20 v #22158 > >     $'let is_windows () = !is_windows ()' : ()
00:20:20 v #22159 > >     $'let get_executable_suffix () = !get_executable_suffix ()' : ()
00:20:21 v #22160 > 00:00:06 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 4108 }
00:20:21 v #22161 > 00:00:06 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/platform.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/platform.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:20:21 v #22162 > 00:00:07 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/platform.dib.ipynb to html
00:20:21 v #22163 > 00:00:07 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:20:21 v #22164 > 00:00:07 v #7 !   validate(nb)
00:20:22 v #22165 > 00:00:07 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:20:22 v #22166 > 00:00:07 v #9 !   return _pygments_highlight(
00:20:22 v #22167 > 00:00:07 v #10 ! [NbConvertApp] Writing 288114 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/platform.dib.html
00:20:22 v #22168 > 00:00:07 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 900 }
00:20:22 v #22169 > 00:00:07 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 900 }
00:20:22 v #22170 > 00:00:07 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/platform.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/platform.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:20:22 v #22171 > 00:00:07 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:20:22 v #22172 > 00:00:07 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:20:22 v #22173 > 00:00:07 d #16 spiral.run / dib / { exit_code = 0; result_length = 5067 }
00:20:22 d #22174 runtime.execute_with_options_async / { exit_code = 0; output_length = 7952 }
00:20:22 d #30 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path platform.dib --retries 3
00:20:22 d #22175 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path stream.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path stream.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:20:22 v #22176 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "stream.dib", "--retries", "3"])) }
00:20:22 v #22177 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/stream.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/stream.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/stream.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/stream.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:20:24 v #22178 > >
00:20:24 v #22179 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:24 v #22180 > > │ # stream
00:20:26 v #22181 > >
00:20:26 v #22182 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:26 v #22183 > > open rust.rust_operators
00:20:27 v #22184 > >
00:20:27 v #22185 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:27 v #22186 > > //// test
00:20:27 v #22187 > >
00:20:27 v #22188 > > open testing
00:20:27 v #22189 > >
00:20:27 v #22190 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:27 v #22191 > > │ ## stream
00:20:27 v #22192 > >
00:20:27 v #22193 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:27 v #22194 > > │ ### stream
00:20:27 v #22195 > >
00:20:27 v #22196 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:27 v #22197 > > union rec stream t =
00:20:27 v #22198 > >     | StreamCons : t * (() -> stream t)
00:20:27 v #22199 > >     | StreamNil
00:20:27 v #22200 > >
00:20:27 v #22201 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:27 v #22202 > > │ ### fold
00:20:27 v #22203 > >
00:20:27 v #22204 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:27 v #22205 > > inl fold fn init s =
00:20:27 v #22206 > >     inl rec body acc = function
00:20:27 v #22207 > >         | StreamCons (st, fn') => loop (fn acc st) (fn' ())
00:20:27 v #22208 > >         | StreamNil => acc
00:20:27 v #22209 > >     and inl loop acc = join_body body acc
00:20:27 v #22210 > >     loop init s
00:20:27 v #22211 > >
00:20:27 v #22212 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:27 v #22213 > > │ ### fold_back
00:20:27 v #22214 > >
00:20:27 v #22215 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:27 v #22216 > > inl fold_back fn s init =
00:20:27 v #22217 > >     inl rec body acc = function
00:20:27 v #22218 > >         | StreamCons (st, fn') => fn st (loop acc (fn' ()))
00:20:27 v #22219 > >         | StreamNil => acc
00:20:27 v #22220 > >     and inl loop acc = join_body body acc
00:20:27 v #22221 > >     loop init s
00:20:27 v #22222 > >
00:20:27 v #22223 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:27 v #22224 > > │ ### to_list
00:20:27 v #22225 > >
00:20:27 v #22226 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:27 v #22227 > > inl to_list s =
00:20:27 v #22228 > >     (s, [[]])
00:20:27 v #22229 > >     ||> fold_back fun x acc =>
00:20:27 v #22230 > >         x :: acc
00:20:27 v #22231 > >
00:20:27 v #22232 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:27 v #22233 > > │ ### rev
00:20:27 v #22234 > >
00:20:27 v #22235 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:27 v #22236 > > inl rev s =
00:20:27 v #22237 > >     (StreamNil, s)
00:20:27 v #22238 > >     ||> fold fun s x =>
00:20:27 v #22239 > >         StreamCons (x, fun () => s)
00:20:27 v #22240 > >
00:20:27 v #22241 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:27 v #22242 > > │ ### from_list
00:20:27 v #22243 > >
00:20:27 v #22244 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:27 v #22245 > > inl from_list list =
00:20:27 v #22246 > >     (list, StreamNil)
00:20:27 v #22247 > >     ||> listm.foldBack fun x acc =>
00:20:27 v #22248 > >         StreamCons (x, fun () => acc)
00:20:28 v #22249 > >
00:20:28 v #22250 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:28 v #22251 > > //// test
00:20:28 v #22252 > >
00:20:28 v #22253 > > listm.init 3i32 id
00:20:28 v #22254 > > |> from_list
00:20:28 v #22255 > > |> rev
00:20:28 v #22256 > > |> to_list
00:20:28 v #22257 > > |> _assert_eq [[ 2; 1; 0 ]]
00:20:29 v #22258 > >
00:20:29 v #22259 > > ── [ 858.75ms - stdout ] ───────────────────────────────────────────────────────
00:20:29 v #22260 > > │ __assert_eq / actual: UH0_1 (2, UH0_1 (1, UH0_1 (0, UH0_0)))
00:20:29 v #22261 > > / expected: UH0_1 (2, UH0_1 (1, UH0_1 (0, UH0_0)))
00:20:29 v #22262 > > │
00:20:29 v #22263 > >
00:20:29 v #22264 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:29 v #22265 > > │ ### try_item
00:20:29 v #22266 > >
00:20:29 v #22267 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:29 v #22268 > > inl try_item i s =
00:20:29 v #22269 > >     inl rec body i = function
00:20:29 v #22270 > >         | StreamCons (x, _) when i <= 0 => Some x
00:20:29 v #22271 > >         | StreamCons (_, fn) => loop (i - 1) (fn ())
00:20:29 v #22272 > >         | StreamNil => None
00:20:29 v #22273 > >     and inl loop acc s' =
00:20:29 v #22274 > >         match var_is acc, var_is s' with
00:20:29 v #22275 > >         | false, false => body acc s'
00:20:29 v #22276 > >         | _ =>
00:20:29 v #22277 > >             inl acc = dyn acc
00:20:29 v #22278 > >             inl s' = dyn s'
00:20:29 v #22279 > >             join body acc s'
00:20:29 v #22280 > >     loop i s
00:20:29 v #22281 > >
00:20:29 v #22282 > > inl item i =
00:20:29 v #22283 > >     try_item i >> optionm.value
00:20:29 v #22284 > >
00:20:29 v #22285 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:29 v #22286 > > //// test
00:20:29 v #22287 > >
00:20:29 v #22288 > > listm.init 10i32 id
00:20:29 v #22289 > > |> from_list
00:20:29 v #22290 > > |> item 9i32
00:20:29 v #22291 > > |> _assert_eq 9
00:20:29 v #22292 > >
00:20:29 v #22293 > > ── [ 162.66ms - stdout ] ───────────────────────────────────────────────────────
00:20:29 v #22294 > > │ __assert_eq / actual: 9 / expected: 9
00:20:29 v #22295 > > │
00:20:29 v #22296 > >
00:20:29 v #22297 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:29 v #22298 > > │ ### new_infinite_stream
00:20:29 v #22299 > >
00:20:29 v #22300 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:29 v #22301 > > inl new_infinite_stream fn =
00:20:29 v #22302 > >     inl rec loop n =
00:20:29 v #22303 > >         StreamCons (fn n, fun () => loop (n + 1))
00:20:29 v #22304 > >     loop 0
00:20:29 v #22305 > >
00:20:29 v #22306 > > inl new_infinite_stream_ fn =
00:20:29 v #22307 > >     let rec loop n =
00:20:29 v #22308 > >         StreamCons (fn n, fun () => loop (n + 1))
00:20:29 v #22309 > >     loop 0
00:20:29 v #22310 > >
00:20:29 v #22311 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:29 v #22312 > > //// test
00:20:29 v #22313 > >
00:20:29 v #22314 > > new_infinite_stream print_and_return
00:20:29 v #22315 > > |> item 4i32
00:20:29 v #22316 > > |> _assert_eq 4i32
00:20:29 v #22317 > >
00:20:29 v #22318 > > ── [ 184.84ms - stdout ] ───────────────────────────────────────────────────────
00:20:29 v #22319 > > │ print_and_return / x: 0
00:20:29 v #22320 > > │ print_and_return / x: 1
00:20:29 v #22321 > > │ print_and_return / x: 2
00:20:29 v #22322 > > │ print_and_return / x: 3
00:20:29 v #22323 > > │ print_and_return / x: 4
00:20:29 v #22324 > > │ __assert_eq / actual: 4 / expected: 4
00:20:29 v #22325 > > │
00:20:29 v #22326 > >
00:20:29 v #22327 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:29 v #22328 > > │ ### new_finite_stream
00:20:29 v #22329 > >
00:20:29 v #22330 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:29 v #22331 > > inl new_finite_stream fn max =
00:20:29 v #22332 > >     inl rec loop n =
00:20:29 v #22333 > >         if n >= max
00:20:29 v #22334 > >         then StreamNil
00:20:29 v #22335 > >         else StreamCons (fn n, fun () => loop (n + 1))
00:20:29 v #22336 > >     loop 0
00:20:29 v #22337 > >
00:20:29 v #22338 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:29 v #22339 > > │ ### memoize
00:20:29 v #22340 > >
00:20:29 v #22341 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:29 v #22342 > > union memoized_stream t =
00:20:29 v #22343 > >     | NotComputed : () -> stream t
00:20:29 v #22344 > >     | Computed : stream t
00:20:29 v #22345 > >
00:20:29 v #22346 > > inl memoize s =
00:20:29 v #22347 > >     inl rec body s =
00:20:29 v #22348 > >         inl state = mut (NotComputed s)
00:20:29 v #22349 > >         fun () =>
00:20:29 v #22350 > >             match *state with
00:20:29 v #22351 > >             | Computed x => x
00:20:29 v #22352 > >             | NotComputed fn =>
00:20:29 v #22353 > >                 inl new_state =
00:20:29 v #22354 > >                     match fn () with
00:20:29 v #22355 > >                     | StreamNil => StreamNil
00:20:29 v #22356 > >                     | StreamCons (x, fn) => StreamCons (x, loop fn)
00:20:29 v #22357 > >                 state <- Computed new_state
00:20:29 v #22358 > >                 new_state
00:20:29 v #22359 > >     and inl loop s' = join_body_unit body s s'
00:20:29 v #22360 > >     loop (fun () => s)
00:20:29 v #22361 > >
00:20:29 v #22362 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:29 v #22363 > > //// test
00:20:29 v #22364 > >
00:20:29 v #22365 > > inl memo_stream = new_finite_stream print_and_return 10 |> memoize
00:20:29 v #22366 > >
00:20:29 v #22367 > > memo_stream ()
00:20:29 v #22368 > > |> item 3i32
00:20:29 v #22369 > > |> _assert_eq 3i32
00:20:29 v #22370 > >
00:20:29 v #22371 > > memo_stream ()
00:20:29 v #22372 > > |> item 5i32
00:20:29 v #22373 > > |> _assert_eq 5i32
00:20:30 v #22374 > >
00:20:30 v #22375 > > ── [ 441.43ms - stdout ] ───────────────────────────────────────────────────────
00:20:30 v #22376 > > │ print_and_return / x: 0
00:20:30 v #22377 > > │ print_and_return / x: 1
00:20:30 v #22378 > > │ print_and_return / x: 2
00:20:30 v #22379 > > │ print_and_return / x: 3
00:20:30 v #22380 > > │ __assert_eq / actual: 3 / expected: 3
00:20:30 v #22381 > > │ print_and_return / x: 4
00:20:30 v #22382 > > │ print_and_return / x: 5
00:20:30 v #22383 > > │ __assert_eq / actual: 5 / expected: 5
00:20:30 v #22384 > > │
00:20:30 v #22385 > >
00:20:30 v #22386 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:30 v #22387 > > //// test
00:20:30 v #22388 > >
00:20:30 v #22389 > > inl memo_stream = new_infinite_stream_ print_and_return |> memoize
00:20:30 v #22390 > >
00:20:30 v #22391 > > memo_stream ()
00:20:30 v #22392 > > |> item 3i32
00:20:30 v #22393 > > |> _assert_eq 3i32
00:20:30 v #22394 > >
00:20:30 v #22395 > > memo_stream ()
00:20:30 v #22396 > > |> item 5i32
00:20:30 v #22397 > > |> _assert_eq 5i32
00:20:30 v #22398 > >
00:20:30 v #22399 > > ── [ 208.57ms - stdout ] ───────────────────────────────────────────────────────
00:20:30 v #22400 > > │ print_and_return / x: 0
00:20:30 v #22401 > > │ print_and_return / x: 1
00:20:30 v #22402 > > │ print_and_return / x: 2
00:20:30 v #22403 > > │ print_and_return / x: 3
00:20:30 v #22404 > > │ __assert_eq / actual: 3 / expected: 3
00:20:30 v #22405 > > │ print_and_return / x: 4
00:20:30 v #22406 > > │ print_and_return / x: 5
00:20:30 v #22407 > > │ __assert_eq / actual: 5 / expected: 5
00:20:30 v #22408 > > │
00:20:30 v #22409 > >
00:20:30 v #22410 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:30 v #22411 > > │ ### unfold
00:20:30 v #22412 > >
00:20:30 v #22413 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:30 v #22414 > > inl unfold f x0 =
00:20:30 v #22415 > >     inl rec body x =
00:20:30 v #22416 > >         match f x with
00:20:30 v #22417 > >         | Some (x', y) => StreamCons (x', fun () => loop y)
00:20:30 v #22418 > >         | None => StreamNil
00:20:30 v #22419 > >     and inl loop x = join_body_unit body x0 x
00:20:30 v #22420 > >     loop x0
00:20:30 v #22421 > >
00:20:30 v #22422 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:30 v #22423 > > │ ### iterate
00:20:30 v #22424 > >
00:20:30 v #22425 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:30 v #22426 > > inl iterate f =
00:20:30 v #22427 > >     fun x => Some (x, f x)
00:20:30 v #22428 > >     |> unfold
00:20:30 v #22429 > >
00:20:30 v #22430 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:30 v #22431 > > //// test
00:20:30 v #22432 > >
00:20:30 v #22433 > > iterate ((*) 2) 1i32
00:20:30 v #22434 > > |> item 10i32
00:20:30 v #22435 > > |> _assert_eq 1024
00:20:31 v #22436 > >
00:20:31 v #22437 > > ── [ 159.34ms - stdout ] ───────────────────────────────────────────────────────
00:20:31 v #22438 > > │ __assert_eq / actual: 1024 / expected: 1024
00:20:31 v #22439 > > │
00:20:31 v #22440 > >
00:20:31 v #22441 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:31 v #22442 > > │ ### iterate'
00:20:31 v #22443 > >
00:20:31 v #22444 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:31 v #22445 > > inl iterate_map f m =
00:20:31 v #22446 > >     fun x =>
00:20:31 v #22447 > >         m x
00:20:31 v #22448 > >         |> optionm.map fun x =>
00:20:31 v #22449 > >             x, f x
00:20:31 v #22450 > >     |> unfold
00:20:31 v #22451 > >
00:20:31 v #22452 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:31 v #22453 > > //// test
00:20:31 v #22454 > >
00:20:31 v #22455 > > iterate_map ((*) 2) Some 1i32
00:20:31 v #22456 > > |> item 10i32
00:20:31 v #22457 > > |> _assert_eq 1024
00:20:31 v #22458 > >
00:20:31 v #22459 > > ── [ 190.46ms - stdout ] ───────────────────────────────────────────────────────
00:20:31 v #22460 > > │ __assert_eq / actual: 1024 / expected: 1024
00:20:31 v #22461 > > │
00:20:31 v #22462 > >
00:20:31 v #22463 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:31 v #22464 > > │ ### take_while
00:20:31 v #22465 > >
00:20:31 v #22466 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:31 v #22467 > > inl take_while cond s =
00:20:31 v #22468 > >     inl rec body i = function
00:20:31 v #22469 > >         | StreamCons (st, fn) when cond st i => StreamCons (st, fun () => loop
00:20:31 v #22470 > > (i + 1) (fn ()))
00:20:31 v #22471 > >         | _ => StreamNil
00:20:31 v #22472 > >     and inl loop i = join_body body i
00:20:31 v #22473 > >     loop 0 s
00:20:31 v #22474 > >
00:20:31 v #22475 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:31 v #22476 > > │ ### sum
00:20:31 v #22477 > >
00:20:31 v #22478 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:31 v #22479 > > inl sum seq =
00:20:31 v #22480 > >     seq |> fold (+) 0
00:20:31 v #22481 > >
00:20:31 v #22482 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:31 v #22483 > > //// test
00:20:31 v #22484 > >
00:20:31 v #22485 > > listm.init 10i32 id
00:20:31 v #22486 > > |> from_list
00:20:31 v #22487 > > |> sum
00:20:31 v #22488 > > |> _assert_eq 45
00:20:31 v #22489 > >
00:20:31 v #22490 > > ── [ 153.15ms - stdout ] ───────────────────────────────────────────────────────
00:20:31 v #22491 > > │ __assert_eq / actual: 45 / expected: 45
00:20:31 v #22492 > > │
00:20:31 v #22493 > >
00:20:31 v #22494 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:31 v #22495 > > //// test
00:20:31 v #22496 > >
00:20:31 v #22497 > > new_finite_stream print_and_return 10i32
00:20:31 v #22498 > > |> take_while (fun n (_ : i32) => n < 5)
00:20:31 v #22499 > > |> sum
00:20:31 v #22500 > > |> _assert_eq 10
00:20:31 v #22501 > >
00:20:31 v #22502 > > ── [ 171.21ms - stdout ] ───────────────────────────────────────────────────────
00:20:31 v #22503 > > │ print_and_return / x: 0
00:20:32 v #22504 > > │ print_and_return / x: 1
00:20:32 v #22505 > > │ print_and_return / x: 2
00:20:32 v #22506 > > │ print_and_return / x: 3
00:20:32 v #22507 > > │ print_and_return / x: 4
00:20:32 v #22508 > > │ print_and_return / x: 5
00:20:32 v #22509 > > │ __assert_eq / actual: 10 / expected: 10
00:20:32 v #22510 > > │
00:20:32 v #22511 > >
00:20:32 v #22512 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:32 v #22513 > > //// test
00:20:32 v #22514 > >
00:20:32 v #22515 > > new_infinite_stream print_and_return
00:20:32 v #22516 > > |> take_while (fun n (_ : i32) => n < 5i32)
00:20:32 v #22517 > > |> sum
00:20:32 v #22518 > > |> _assert_eq 10
00:20:32 v #22519 > >
00:20:32 v #22520 > > ── [ 183.89ms - stdout ] ───────────────────────────────────────────────────────
00:20:32 v #22521 > > │ print_and_return / x: 0
00:20:32 v #22522 > > │ print_and_return / x: 1
00:20:32 v #22523 > > │ print_and_return / x: 2
00:20:32 v #22524 > > │ print_and_return / x: 3
00:20:32 v #22525 > > │ print_and_return / x: 4
00:20:32 v #22526 > > │ print_and_return / x: 5
00:20:32 v #22527 > > │ __assert_eq / actual: 10 / expected: 10
00:20:32 v #22528 > > │
00:20:32 v #22529 > >
00:20:32 v #22530 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:32 v #22531 > > //// test
00:20:32 v #22532 > >
00:20:32 v #22533 > > iterate ((*) 6) 1i32
00:20:32 v #22534 > > |> take_while (fun _ i => i <= 7i32)
00:20:32 v #22535 > > |> to_list
00:20:32 v #22536 > > |> _assert_eq [[ 1i32; 6; 36; 216; 1296; 7776; 46656; 279936 ]]
00:20:32 v #22537 > >
00:20:32 v #22538 > > ── [ 196.97ms - stdout ] ───────────────────────────────────────────────────────
00:20:32 v #22539 > > │ __assert_eq / actual: UH0_1
00:20:32 v #22540 > > │   (1,
00:20:32 v #22541 > > │    UH0_1
00:20:32 v #22542 > > │      (6,
00:20:32 v #22543 > > │       UH0_1
00:20:32 v #22544 > > │         (36,
00:20:32 v #22545 > > │          UH0_1
00:20:32 v #22546 > > │            (216,
00:20:32 v #22547 > > │             UH0_1 (1296, UH0_1 (7776, UH0_1 (46656, UH0_1
00:20:32 v #22548 > > (279936, UH0_0)))))))) / expected: UH0_1
00:20:32 v #22549 > > │   (1,
00:20:32 v #22550 > > │    UH0_1
00:20:32 v #22551 > > │      (6,
00:20:32 v #22552 > > │       UH0_1
00:20:32 v #22553 > > │         (36,
00:20:32 v #22554 > > │          UH0_1
00:20:32 v #22555 > > │            (216,
00:20:32 v #22556 > > │             UH0_1 (1296, UH0_1 (7776, UH0_1 (46656, UH0_1
00:20:32 v #22557 > > (279936, UH0_0))))))))
00:20:32 v #22558 > > │
00:20:32 v #22559 > >
00:20:32 v #22560 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:32 v #22561 > > │ ### indexed
00:20:32 v #22562 > >
00:20:32 v #22563 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:32 v #22564 > > inl indexed s =
00:20:32 v #22565 > >     ((StreamNil, 0), s)
00:20:32 v #22566 > >     ||> fold fun (acc, i) x =>
00:20:32 v #22567 > >         StreamCons ((i, x), fun () => acc), i + 1
00:20:32 v #22568 > >     |> fst
00:20:32 v #22569 > >     |> rev
00:20:32 v #22570 > >
00:20:32 v #22571 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:32 v #22572 > > //// test
00:20:32 v #22573 > >
00:20:32 v #22574 > > listm.init 10i32 ((*) 2)
00:20:32 v #22575 > > |> from_list
00:20:32 v #22576 > > |> indexed
00:20:32 v #22577 > > |> item 5i32
00:20:32 v #22578 > > |> _assert_eq (5i32, 10i32)
00:20:32 v #22579 > >
00:20:32 v #22580 > > ── [ 156.92ms - stdout ] ───────────────────────────────────────────────────────
00:20:32 v #22581 > > │ __assert_eq / actual: struct (5, 10) / expected: struct (5,
00:20:32 v #22582 > > 10)
00:20:32 v #22583 > > │
00:20:32 v #22584 > >
00:20:32 v #22585 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:32 v #22586 > > │ ### map
00:20:32 v #22587 > >
00:20:32 v #22588 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:32 v #22589 > > inl map fn s =
00:20:32 v #22590 > >     (s, StreamNil)
00:20:32 v #22591 > >     ||> fold_back fun x acc =>
00:20:32 v #22592 > >         StreamCons (fn x, fun () => acc)
00:20:32 v #22593 > >
00:20:32 v #22594 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:32 v #22595 > > //// test
00:20:32 v #22596 > >
00:20:32 v #22597 > > listm.init 10i32 id
00:20:32 v #22598 > > |> from_list
00:20:32 v #22599 > > |> map ((*) 2)
00:20:32 v #22600 > > |> item 5i32
00:20:32 v #22601 > > |> _assert_eq 10i32
00:20:33 v #22602 > >
00:20:33 v #22603 > > ── [ 175.37ms - stdout ] ───────────────────────────────────────────────────────
00:20:33 v #22604 > > │ __assert_eq / actual: 10 / expected: 10
00:20:33 v #22605 > > │
00:20:33 v #22606 > >
00:20:33 v #22607 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:33 v #22608 > > │ ### zip_with
00:20:33 v #22609 > >
00:20:33 v #22610 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:33 v #22611 > > inl zip_with fn s1 s2 =
00:20:33 v #22612 > >     inl rec loop s1 s2 =
00:20:33 v #22613 > >         match s1, s2 with
00:20:33 v #22614 > >         | StreamCons (st1, fn1), StreamCons (st2, fn2) =>
00:20:33 v #22615 > >             StreamCons (fn st1 st2, fun () => loop (fn1 ()) (fn2 ()))
00:20:33 v #22616 > >         | StreamNil, _ | _, StreamNil => StreamNil
00:20:33 v #22617 > >     loop s1 s2
00:20:33 v #22618 > >
00:20:33 v #22619 > > inl zip_with_ fn s1 s2 =
00:20:33 v #22620 > >     let rec loop s1 s2 =
00:20:33 v #22621 > >         match s1, s2 with
00:20:33 v #22622 > >         | StreamCons (st1, fn1), StreamCons (st2, fn2) =>
00:20:33 v #22623 > >             StreamCons (fn st1 st2, fun () => loop (fn1 ()) (fn2 ()))
00:20:33 v #22624 > >         | StreamNil, _ | _, StreamNil => StreamNil
00:20:33 v #22625 > >     loop s1 s2
00:20:33 v #22626 > >
00:20:33 v #22627 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:33 v #22628 > > //// test
00:20:33 v #22629 > >
00:20:33 v #22630 > > ((listm.init 10i32 id |> from_list), (listm.init 10i32 ((*) 2) |> from_list))
00:20:33 v #22631 > > ||> zip_with (+)
00:20:33 v #22632 > > |> item 2i32
00:20:33 v #22633 > > |> _assert_eq 6
00:20:33 v #22634 > >
00:20:33 v #22635 > > ── [ 180.96ms - stdout ] ───────────────────────────────────────────────────────
00:20:33 v #22636 > > │ __assert_eq / actual: 6 / expected: 6
00:20:33 v #22637 > > │
00:20:33 v #22638 > >
00:20:33 v #22639 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:33 v #22640 > > │ ### zip
00:20:33 v #22641 > >
00:20:33 v #22642 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:33 v #22643 > > inl zip s1 s2 =
00:20:33 v #22644 > >     zip_with pair s1 s2
00:20:33 v #22645 > >
00:20:33 v #22646 > > inl zip_ s1 s2 =
00:20:33 v #22647 > >     zip_with_ pair s1 s2
00:20:33 v #22648 > >
00:20:33 v #22649 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:33 v #22650 > > //// test
00:20:33 v #22651 > >
00:20:33 v #22652 > > ((listm.init 10i32 id |> from_list), (listm.init 10i32 ((*) 2) |> from_list))
00:20:33 v #22653 > > ||> zip
00:20:33 v #22654 > > |> item 5i32
00:20:33 v #22655 > > |> _assert_eq (5, 10)
00:20:33 v #22656 > >
00:20:33 v #22657 > > ── [ 169.23ms - stdout ] ───────────────────────────────────────────────────────
00:20:33 v #22658 > > │ __assert_eq / actual: struct (5, 10) / expected: struct (5,
00:20:33 v #22659 > > 10)
00:20:33 v #22660 > > │
00:20:33 v #22661 > >
00:20:33 v #22662 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:33 v #22663 > > │ ### unzip
00:20:33 v #22664 > >
00:20:33 v #22665 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:33 v #22666 > > inl unzip s =
00:20:33 v #22667 > >     inl rec body s =
00:20:33 v #22668 > >         match s with
00:20:33 v #22669 > >         | StreamCons ((x, y), fn) =>
00:20:33 v #22670 > >             inl xs, ys = loop (fn ())
00:20:33 v #22671 > >             StreamCons (x, fun () => xs), StreamCons (y, fun () => ys)
00:20:33 v #22672 > >         | StreamNil => pair StreamNil StreamNil
00:20:33 v #22673 > >     and inl loop x =
00:20:33 v #22674 > >         if var_is x |> not
00:20:33 v #22675 > >         then body x
00:20:33 v #22676 > >         else
00:20:33 v #22677 > >             inl x = dyn x
00:20:33 v #22678 > >             join body x
00:20:33 v #22679 > >     loop s
00:20:33 v #22680 > >
00:20:33 v #22681 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:33 v #22682 > > //// test
00:20:33 v #22683 > >
00:20:33 v #22684 > > listm.init 10i32 id
00:20:33 v #22685 > > |> listm.map (fun x => x, x)
00:20:33 v #22686 > > |> from_list
00:20:33 v #22687 > > |> unzip
00:20:33 v #22688 > > |> fun x, y =>
00:20:33 v #22689 > >     x |> sum
00:20:33 v #22690 > >     |> _assert_eq 45
00:20:33 v #22691 > >
00:20:33 v #22692 > >     y |> sum
00:20:33 v #22693 > >     |> _assert_eq 45
00:20:33 v #22694 > >
00:20:33 v #22695 > > ── [ 168.74ms - stdout ] ───────────────────────────────────────────────────────
00:20:33 v #22696 > > │ __assert_eq / actual: 45 / expected: 45
00:20:33 v #22697 > > │ __assert_eq / actual: 45 / expected: 45
00:20:33 v #22698 > > │
00:20:33 v #22699 > >
00:20:33 v #22700 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:33 v #22701 > > │ ## rust
00:20:33 v #22702 > >
00:20:33 v #22703 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:33 v #22704 > > │ ### io_error
00:20:33 v #22705 > >
00:20:33 v #22706 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:33 v #22707 > > nominal io_error =
00:20:33 v #22708 > >     `(
00:20:33 v #22709 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:33 v #22710 > > Fable.Core.Emit(\"std::io::Error\")>]]\ntype std_io_Error = class
00:20:33 v #22711 > > end\n#else\ntype std_io_Error = string\n#endif\n"
00:20:33 v #22712 > >         $'' : $'std_io_Error'
00:20:33 v #22713 > >     )
00:20:34 v #22714 > >
00:20:34 v #22715 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:34 v #22716 > > │ ### new_io_error
00:20:34 v #22717 > >
00:20:34 v #22718 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:34 v #22719 > > inl new_io_error (text : string) : io_error =
00:20:34 v #22720 > >     run_target_args (fun () => text) function
00:20:34 v #22721 > >         | Rust _ => fun text =>
00:20:34 v #22722 > >             !\\(text, $'"std::io::Error::new(std::io::ErrorKind::Other, &*$0)"')
00:20:34 v #22723 > >         | _ => fun text => text |> unbox
00:20:34 v #22724 > >
00:20:34 v #22725 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:34 v #22726 > > │ ### buf_reader
00:20:34 v #22727 > >
00:20:34 v #22728 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:34 v #22729 > > nominal buf_reader t =
00:20:34 v #22730 > >     `(
00:20:34 v #22731 > >         backend_switch `(()) `({}) {
00:20:34 v #22732 > >             Fsharp =
00:20:34 v #22733 > >                 (fun () =>
00:20:34 v #22734 > >                     global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:34 v #22735 > > Fable.Core.Emit(\"std::io::BufReader<$0>\")>]]\n#endif\ntype
00:20:34 v #22736 > > std_io_BufReader<'T> = class end"
00:20:34 v #22737 > >                 ) : () -> ()
00:20:34 v #22738 > >         }
00:20:34 v #22739 > >         $'' : $'std_io_BufReader<`t>'
00:20:34 v #22740 > >     )
00:20:34 v #22741 > >
00:20:34 v #22742 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:34 v #22743 > > │ ### cursor
00:20:34 v #22744 > >
00:20:34 v #22745 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:34 v #22746 > > nominal cursor t =
00:20:34 v #22747 > >     `(
00:20:34 v #22748 > >         backend_switch `(()) `({}) {
00:20:34 v #22749 > >             Fsharp =
00:20:34 v #22750 > >                 (fun () =>
00:20:34 v #22751 > >                     global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:34 v #22752 > > Fable.Core.Emit(\"std::io::Cursor<$0>\")>]]\n#endif\ntype std_io_Cursor<'T> =
00:20:34 v #22753 > > class end"
00:20:34 v #22754 > >                 ) : () -> ()
00:20:34 v #22755 > >         }
00:20:34 v #22756 > >         $'' : $'std_io_Cursor<`t>'
00:20:34 v #22757 > >     )
00:20:34 v #22758 > >
00:20:34 v #22759 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:34 v #22760 > > │ ### buf_reader_tokio
00:20:34 v #22761 > >
00:20:34 v #22762 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:34 v #22763 > > nominal buf_reader_tokio t =
00:20:34 v #22764 > >     `(
00:20:34 v #22765 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:34 v #22766 > > Fable.Core.Emit(\"tokio::io::BufReader<$0>\")>]]\n#endif\ntype
00:20:34 v #22767 > > tokio_io_BufReader<'T> = class end"
00:20:34 v #22768 > >         $'' : $'tokio_io_BufReader<`t>'
00:20:34 v #22769 > >     )
00:20:34 v #22770 > >
00:20:34 v #22771 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:34 v #22772 > > │ ### new_buf_reader
00:20:34 v #22773 > >
00:20:34 v #22774 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:34 v #22775 > > inl new_buf_reader forall t. (x : t) : buf_reader t =
00:20:34 v #22776 > >     !\\(x, $'"std::io::BufReader::new($0)"')
00:20:34 v #22777 > >
00:20:34 v #22778 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:34 v #22779 > > │ ### new_cursor
00:20:34 v #22780 > >
00:20:34 v #22781 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:34 v #22782 > > inl new_cursor forall t. (x : t) : cursor t =
00:20:34 v #22783 > >     !\($'"std::io::Cursor::new(!x)"')
00:20:35 v #22784 > >
00:20:35 v #22785 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:35 v #22786 > > │ ### lines
00:20:35 v #22787 > >
00:20:35 v #22788 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:35 v #22789 > > nominal lines t =
00:20:35 v #22790 > >     `(
00:20:35 v #22791 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:35 v #22792 > > Fable.Core.Emit(\"std::io::Lines<$0>\")>]]\n#endif\ntype std_io_Lines<'T> =
00:20:35 v #22793 > > class end"
00:20:35 v #22794 > >         $'' : $'std_io_Lines<`t>'
00:20:35 v #22795 > >     )
00:20:35 v #22796 > >
00:20:35 v #22797 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:35 v #22798 > > │ ### buf_read_lines
00:20:35 v #22799 > >
00:20:35 v #22800 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:35 v #22801 > > inl buf_read_lines forall t. (buf_reader : buf_reader t) : lines (buf_reader t)
00:20:35 v #22802 > > =
00:20:35 v #22803 > >     !\($'"std::io::BufRead::lines(!buf_reader)"')
00:20:35 v #22804 > >
00:20:35 v #22805 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:35 v #22806 > > │ ### decode_reader_bytes
00:20:35 v #22807 > >
00:20:35 v #22808 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:35 v #22809 > > nominal decode_reader_bytes t u =
00:20:35 v #22810 > >     `(
00:20:35 v #22811 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:35 v #22812 > > Fable.Core.Emit(\"encoding_rs_io::DecodeReaderBytes<$0, $1>\")>]]\n#endif\ntype
00:20:35 v #22813 > > encoding_rs_io_DecodeReaderBytes<'T, 'U> = class end"
00:20:35 v #22814 > >         $'' : $'encoding_rs_io_DecodeReaderBytes<`t, `u>'
00:20:35 v #22815 > >     )
00:20:35 v #22816 > >
00:20:35 v #22817 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:35 v #22818 > > │ ### decode_reader_bytes_build
00:20:35 v #22819 > >
00:20:35 v #22820 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:35 v #22821 > > inl decode_reader_bytes_build forall t. (x : t) : decode_reader_bytes t (am'.vec
00:20:35 v #22822 > > u8) =
00:20:35 v #22823 > >
00:20:35 v #22824 > > !\($'"encoding_rs_io::DecodeReaderBytesBuilder::new().encoding(Some(encoding_rs:
00:20:35 v #22825 > > :UTF_8)).build(!x)"')
00:20:35 v #22826 > >
00:20:35 v #22827 > > !\($'"encoding_rs_io::DecodeReaderBytesBuilder::new().encoding(Some(encoding_rs:
00:20:35 v #22828 > > :UTF_8)).utf8_passthru(true).build(!x)"')
00:20:35 v #22829 > >     !\\(x,
00:20:35 v #22830 > > $'"encoding_rs_io::DecodeReaderBytesBuilder::new().utf8_passthru(true).build($0)
00:20:35 v #22831 > > "')
00:20:35 v #22832 > >     // !\($'"encoding_rs_io::DecodeReaderBytes::new(!x)"')
00:20:35 v #22833 > >
00:20:35 v #22834 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:35 v #22835 > > │ ### buf_reader_read
00:20:35 v #22836 > >
00:20:35 v #22837 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:35 v #22838 > > inl buf_reader_read forall el dim. (slice : am'.slice' el dim) (buf_reader :
00:20:35 v #22839 > > buf_reader el) : resultm.result' unativeint io_error =
00:20:35 v #22840 > >     (!\($'"true; let mut !slice = !slice"') : bool) |> ignore
00:20:35 v #22841 > >     !\($'"std::io::Read::read(&mut !buf_reader, &mut !slice)"')
00:20:35 v #22842 > >
00:20:35 v #22843 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:35 v #22844 > > │ ### io_read_by_ref
00:20:35 v #22845 > >
00:20:35 v #22846 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:35 v #22847 > > inl io_read_by_ref forall t. (lines : lines t) : lines t =
00:20:35 v #22848 > >     !\\(lines, $'"std::io::Read::by_ref($0)"')
00:20:36 v #22849 > 00:00:13 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 24186 }
00:20:36 v #22850 > 00:00:13 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/stream.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/stream.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:20:36 v #22851 > 00:00:14 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/stream.dib.ipynb to html
00:20:36 v #22852 > 00:00:14 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:20:36 v #22853 > 00:00:14 v #7 !   validate(nb)
00:20:37 v #22854 > 00:00:14 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:20:37 v #22855 > 00:00:14 v #9 !   return _pygments_highlight(
00:20:37 v #22856 > 00:00:14 v #10 ! [NbConvertApp] Writing 372356 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/stream.dib.html
00:20:37 v #22857 > 00:00:14 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 896 }
00:20:37 v #22858 > 00:00:14 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 896 }
00:20:37 v #22859 > 00:00:14 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/stream.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/stream.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:20:37 v #22860 > 00:00:15 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:20:37 v #22861 > 00:00:15 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:20:37 v #22862 > 00:00:15 d #16 spiral.run / dib / { exit_code = 0; result_length = 25141 }
00:20:37 d #22863 runtime.execute_with_options_async / { exit_code = 0; output_length = 29138 }
00:20:37 d #31 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path stream.dib --retries 3
00:20:37 d #22864 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path threading.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path threading.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:20:37 v #22865 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "threading.dib", "--retries", "3"])) }
00:20:37 v #22866 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/threading.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/threading.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/threading.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/threading.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:20:39 v #22867 > >
00:20:39 v #22868 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:39 v #22869 > > │ # threading
00:20:41 v #22870 > >
00:20:41 v #22871 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:41 v #22872 > > open rust
00:20:41 v #22873 > > open rust_operators
00:20:42 v #22874 > >
00:20:42 v #22875 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:42 v #22876 > > //// test
00:20:42 v #22877 > >
00:20:42 v #22878 > > open testing
00:20:42 v #22879 > >
00:20:42 v #22880 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:42 v #22881 > > │ ## rust
00:20:42 v #22882 > >
00:20:42 v #22883 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:42 v #22884 > > │ ### sleep
00:20:42 v #22885 > >
00:20:42 v #22886 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:42 v #22887 > > inl sleep (duration : date_time.duration) : () =
00:20:42 v #22888 > >     inl duration = join duration
00:20:42 v #22889 > >     !\($'"std::thread::sleep(!duration)"')
00:20:42 v #22890 > >
00:20:42 v #22891 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:42 v #22892 > > │ ### join_handle
00:20:42 v #22893 > >
00:20:42 v #22894 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:42 v #22895 > > nominal join_handle t =
00:20:42 v #22896 > >     `(
00:20:42 v #22897 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:42 v #22898 > > Fable.Core.Emit(\"std::thread::JoinHandle<$0>\")>]]\n#endif\ntype
00:20:42 v #22899 > > std_thread_JoinHandle<'T> = class end"
00:20:42 v #22900 > >         $'' : $'std_thread_JoinHandle<`t>'
00:20:42 v #22901 > >     )
00:20:42 v #22902 > >
00:20:42 v #22903 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:42 v #22904 > > │ ### spawn
00:20:42 v #22905 > >
00:20:42 v #22906 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:42 v #22907 > > inl spawn forall t. depth flag (x : () -> t) : join_handle t =
00:20:42 v #22908 > >     if flag = 1u8
00:20:42 v #22909 > >     then (!\($'"true; let __spawn = std::thread::spawn(move || { //"') : bool)
00:20:42 v #22910 > > |> ignore
00:20:42 v #22911 > >     else (!\($'"true; let __spawn = std::thread::spawn(|| { //"') : bool) |>
00:20:42 v #22912 > > ignore
00:20:42 v #22913 > >
00:20:42 v #22914 > >     let x' = x ()
00:20:42 v #22915 > >     inl x' = join x'
00:20:42 v #22916 > >
00:20:42 v #22917 > >     x' |> rust.fix_closure depth
00:20:42 v #22918 > >
00:20:42 v #22919 > >     !\($'"__spawn"')
00:20:42 v #22920 > >
00:20:42 v #22921 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:42 v #22922 > > │ ### join'
00:20:42 v #22923 > >
00:20:42 v #22924 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:42 v #22925 > > inl join' forall t.
00:20:42 v #22926 > >     (x : join_handle t)
00:20:42 v #22927 > >     : resultm.result'
00:20:42 v #22928 > >         t
00:20:42 v #22929 > >         (
00:20:42 v #22930 > >             rust.box (
00:20:42 v #22931 > >                 rust.lifetime_ref
00:20:42 v #22932 > >                     rust.dyn'
00:20:42 v #22933 > >                     (
00:20:42 v #22934 > >                         rust.lifetime_join
00:20:42 v #22935 > >                             rust.any
00:20:42 v #22936 > >                             (
00:20:42 v #22937 > >                                 rust.lifetime_ref
00:20:42 v #22938 > >                                     rust.send
00:20:42 v #22939 > >                                     rust.static_lifetime
00:20:42 v #22940 > >                             )
00:20:42 v #22941 > >                     )
00:20:42 v #22942 > >             )
00:20:42 v #22943 > >         ) =
00:20:42 v #22944 > >     !\\(x, $'"std::thread::JoinHandle::join($0)"')
00:20:43 v #22945 > >
00:20:43 v #22946 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:43 v #22947 > > │ ### arc
00:20:43 v #22948 > >
00:20:43 v #22949 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:43 v #22950 > > nominal arc t =
00:20:43 v #22951 > >     `(
00:20:43 v #22952 > >         backend_switch `(()) `({}) {
00:20:43 v #22953 > >             Fsharp = (fun () => global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:43 v #22954 > > Fable.Core.Emit(\"std::sync::Arc<$0>\")>]]\n#endif\ntype std_sync_Arc<'T> =
00:20:43 v #22955 > > class end") : () -> ()
00:20:43 v #22956 > >         }
00:20:43 v #22957 > >         $'' : $'std_sync_Arc<`t>'
00:20:43 v #22958 > >     )
00:20:43 v #22959 > >
00:20:43 v #22960 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:43 v #22961 > > │ ### new_arc
00:20:43 v #22962 > >
00:20:43 v #22963 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:43 v #22964 > > inl new_arc forall t. (x : t) : arc t =
00:20:43 v #22965 > >     !\($'"std::sync::Arc::new(!x)"')
00:20:43 v #22966 > >
00:20:43 v #22967 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:43 v #22968 > > │ ### mutex
00:20:43 v #22969 > >
00:20:43 v #22970 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:43 v #22971 > > nominal mutex t =
00:20:43 v #22972 > >     `(
00:20:43 v #22973 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:43 v #22974 > > Fable.Core.Emit(\"std::sync::Mutex<$0>\")>]]\n#endif\ntype std_sync_Mutex<'T> =
00:20:43 v #22975 > > class end"
00:20:43 v #22976 > >         $'' : $'std_sync_Mutex<`t>'
00:20:43 v #22977 > >     )
00:20:43 v #22978 > >
00:20:43 v #22979 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:43 v #22980 > > │ ### new_mutex
00:20:43 v #22981 > >
00:20:43 v #22982 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:43 v #22983 > > inl new_mutex forall t. (x : t) : mutex t =
00:20:43 v #22984 > >     !\($'"std::sync::Mutex::new(!x)"')
00:20:43 v #22985 > >
00:20:43 v #22986 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:43 v #22987 > > │ ### new_mutex_mut
00:20:43 v #22988 > >
00:20:43 v #22989 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:43 v #22990 > > inl new_mutex_mut forall t. (x : rust.ref (rust.mut' t)) : mutex t =
00:20:43 v #22991 > >     !\($'"std::sync::Mutex::new(!x)"')
00:20:43 v #22992 > >
00:20:43 v #22993 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:43 v #22994 > > │ ### rw_lock
00:20:43 v #22995 > >
00:20:43 v #22996 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:43 v #22997 > > nominal rw_lock t =
00:20:43 v #22998 > >     `(
00:20:43 v #22999 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:43 v #23000 > > Fable.Core.Emit(\"std::sync::RwLock<$0>\")>]]\n#endif\ntype std_sync_RwLock<'T>
00:20:43 v #23001 > > = class end"
00:20:43 v #23002 > >         $'' : $'std_sync_RwLock<`t>'
00:20:43 v #23003 > >     )
00:20:43 v #23004 > >
00:20:43 v #23005 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:43 v #23006 > > │ ### new_rw_lock
00:20:43 v #23007 > >
00:20:43 v #23008 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:43 v #23009 > > inl new_rw_lock forall t. (x : t) : rw_lock t =
00:20:43 v #23010 > >     !\\(x, $'"std::sync::RwLock::new($0)"')
00:20:44 v #23011 > >
00:20:44 v #23012 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:44 v #23013 > > │ ### new_arc_mutex
00:20:44 v #23014 > >
00:20:44 v #23015 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:44 v #23016 > > inl new_arc_mutex forall t. (x : t) : arc (mutex t) =
00:20:44 v #23017 > >     x |> new_mutex |> new_arc
00:20:44 v #23018 > >
00:20:44 v #23019 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:44 v #23020 > > │ ### new_arc_rw_lock
00:20:44 v #23021 > >
00:20:44 v #23022 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:44 v #23023 > > inl new_arc_rw_lock forall t. (x : t) : arc (rw_lock t) =
00:20:44 v #23024 > >     x |> new_rw_lock |> new_arc
00:20:44 v #23025 > >
00:20:44 v #23026 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:44 v #23027 > > │ ### arc_clone
00:20:44 v #23028 > >
00:20:44 v #23029 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:44 v #23030 > > inl arc_clone forall t. (x : arc t) : arc t =
00:20:44 v #23031 > >     inl x = join x
00:20:44 v #23032 > >     !\($'"std::sync::Arc::clone(&!x)"')
00:20:44 v #23033 > >
00:20:44 v #23034 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:44 v #23035 > > │ ### arc_ptr_eq
00:20:44 v #23036 > >
00:20:44 v #23037 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:44 v #23038 > > inl arc_ptr_eq forall t. (a : rust.ref (arc t)) (b : rust.ref (arc t)) : bool =
00:20:44 v #23039 > >     !\\((a, b), $'"std::sync::Arc::ptr_eq($0, $1)"')
00:20:44 v #23040 > >
00:20:44 v #23041 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:44 v #23042 > > │ ### arc_try_unwrap
00:20:44 v #23043 > >
00:20:44 v #23044 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:44 v #23045 > > inl arc_try_unwrap forall t. (x : arc t) : resultm.result' t (arc t) =
00:20:44 v #23046 > >     !\\(x, $'"std::sync::Arc::try_unwrap($0)"')
00:20:44 v #23047 > >
00:20:44 v #23048 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:44 v #23049 > > │ ### arc_into_raw
00:20:44 v #23050 > >
00:20:44 v #23051 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:44 v #23052 > > inl arc_into_raw forall t. (x : arc t) : rust.ptr t =
00:20:44 v #23053 > >     !\\(x, $'"std::sync::Arc::into_raw($0)"')
00:20:44 v #23054 > >
00:20:44 v #23055 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:44 v #23056 > > │ ### arc_from_raw
00:20:44 v #23057 > >
00:20:44 v #23058 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:44 v #23059 > > inl arc_from_raw forall t. (x : rust.ptr t) : arc t =
00:20:44 v #23060 > >     !\\(x, $'"std::sync::Arc::from_raw($0)"')
00:20:45 v #23061 > >
00:20:45 v #23062 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:45 v #23063 > > │ ### partial_eq_wrapper_arc_eq
00:20:45 v #23064 > >
00:20:45 v #23065 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:45 v #23066 > > inl partial_eq_wrapper_arc_eq forall t.
00:20:45 v #23067 > >     (self : rust.ref (rust.partial_eq_wrapper (arc t)))
00:20:45 v #23068 > >     (other : rust.ref (rust.partial_eq_wrapper (arc t)))
00:20:45 v #23069 > >     =
00:20:45 v #23070 > >     self
00:20:45 v #23071 > >     |> rust.unwrap_0_ref
00:20:45 v #23072 > >     |> arc_ptr_eq (
00:20:45 v #23073 > >         other
00:20:45 v #23074 > >         |> rust.unwrap_0_ref
00:20:45 v #23075 > >     )
00:20:45 v #23076 > >
00:20:45 v #23077 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:45 v #23078 > > │ ### new_partial_eq_wrapper_arc
00:20:45 v #23079 > >
00:20:45 v #23080 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:45 v #23081 > > inl new_partial_eq_wrapper_arc forall t. (x : arc t) : rust.partial_eq_wrapper
00:20:45 v #23082 > > (arc t) =
00:20:45 v #23083 > >     x |> rust.new_partial_eq_wrapper partial_eq_wrapper_arc_eq
00:20:45 v #23084 > >
00:20:45 v #23085 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:45 v #23086 > > │ ### mutex_guard
00:20:45 v #23087 > >
00:20:45 v #23088 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:45 v #23089 > > nominal mutex_guard t =
00:20:45 v #23090 > >     `(
00:20:45 v #23091 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:45 v #23092 > > Fable.Core.Emit(\"std::sync::MutexGuard<$0>\")>]]\n#endif\ntype
00:20:45 v #23093 > > std_sync_MutexGuard<'T> = class end"
00:20:45 v #23094 > >         $'' : $'std_sync_MutexGuard<`t>'
00:20:45 v #23095 > >     )
00:20:45 v #23096 > >
00:20:45 v #23097 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:45 v #23098 > > │ ### rw_lock_read_guard
00:20:45 v #23099 > >
00:20:45 v #23100 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:45 v #23101 > > nominal rw_lock_read_guard t =
00:20:45 v #23102 > >     `(
00:20:45 v #23103 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:45 v #23104 > > Fable.Core.Emit(\"std::sync::RwLockReadGuard<$0>\")>]]\n#endif\ntype
00:20:45 v #23105 > > std_sync_RwLockReadGuard<'T> = class end"
00:20:45 v #23106 > >         $'' : $'std_sync_RwLockReadGuard<`t>'
00:20:45 v #23107 > >     )
00:20:45 v #23108 > >
00:20:45 v #23109 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:45 v #23110 > > │ ### rw_lock_write_guard
00:20:45 v #23111 > >
00:20:45 v #23112 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:45 v #23113 > > nominal rw_lock_write_guard t =
00:20:45 v #23114 > >     `(
00:20:45 v #23115 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:45 v #23116 > > Fable.Core.Emit(\"std::sync::RwLockWriteGuard<$0>\")>]]\n#endif\ntype
00:20:45 v #23117 > > std_sync_RwLockWriteGuard<'T> = class end"
00:20:45 v #23118 > >         $'' : $'std_sync_RwLockWriteGuard<`t>'
00:20:45 v #23119 > >     )
00:20:45 v #23120 > >
00:20:45 v #23121 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:45 v #23122 > > │ ### poison_error
00:20:45 v #23123 > >
00:20:45 v #23124 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:45 v #23125 > > nominal poison_error t =
00:20:45 v #23126 > >     `(
00:20:45 v #23127 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:45 v #23128 > > Fable.Core.Emit(\"std::sync::PoisonError<$0>\")>]]\n#endif\ntype
00:20:45 v #23129 > > std_sync_PoisonError<'T> = class end"
00:20:45 v #23130 > >         $'' : $'std_sync_PoisonError<`t>'
00:20:45 v #23131 > >     )
00:20:46 v #23132 > >
00:20:46 v #23133 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:46 v #23134 > > │ ### try_lock_error
00:20:46 v #23135 > >
00:20:46 v #23136 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:46 v #23137 > > nominal try_lock_error t =
00:20:46 v #23138 > >     `(
00:20:46 v #23139 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:46 v #23140 > > Fable.Core.Emit(\"std::sync::TryLockError<$0>\")>]]\n#endif\ntype
00:20:46 v #23141 > > std_sync_TryLockError<'T> = class end"
00:20:46 v #23142 > >         $'' : $'std_sync_TryLockError<`t>'
00:20:46 v #23143 > >     )
00:20:46 v #23144 > >
00:20:46 v #23145 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:46 v #23146 > > │ ### arc_mutex_lock
00:20:46 v #23147 > >
00:20:46 v #23148 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:46 v #23149 > > inl arc_mutex_lock forall t. (x : arc (mutex t)) : resultm.result' (mutex_guard
00:20:46 v #23150 > > t) (poison_error (mutex_guard t)) =
00:20:46 v #23151 > >     inl x = x |> rust.emit
00:20:46 v #23152 > >     !\($'"!x.lock()"')
00:20:46 v #23153 > >
00:20:46 v #23154 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:46 v #23155 > > │ ### arc_rw_lock_read
00:20:46 v #23156 > >
00:20:46 v #23157 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:46 v #23158 > > inl arc_rw_lock_read forall t. (x : arc (rw_lock t)) : resultm.result'
00:20:46 v #23159 > > (rw_lock_read_guard t) (poison_error (rw_lock_read_guard t)) =
00:20:46 v #23160 > >     inl x = x |> rust.emit
00:20:46 v #23161 > >     !\($'"!x.read()"')
00:20:46 v #23162 > >
00:20:46 v #23163 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:46 v #23164 > > │ ### arc_rw_lock_write
00:20:46 v #23165 > >
00:20:46 v #23166 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:46 v #23167 > > inl arc_rw_lock_write forall t. (x : arc (rw_lock t)) : resultm.result'
00:20:46 v #23168 > > (rw_lock_write_guard t) (poison_error (rw_lock_write_guard t)) =
00:20:46 v #23169 > >     inl x = x |> rust.emit
00:20:46 v #23170 > >     !\($'"!x.write()"')
00:20:46 v #23171 > >
00:20:46 v #23172 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:46 v #23173 > > │ ### arc_rw_lock_try_read
00:20:46 v #23174 > >
00:20:46 v #23175 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:46 v #23176 > > inl arc_rw_lock_try_read forall t. (x : arc (rw_lock t)) : resultm.result'
00:20:46 v #23177 > > (rw_lock_read_guard t) (try_lock_error (rw_lock_read_guard t)) =
00:20:46 v #23178 > >     inl x = x |> rust.emit
00:20:46 v #23179 > >     !\($'"!x.try_read()"')
00:20:46 v #23180 > >
00:20:46 v #23181 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:46 v #23182 > > │ ### arc_rw_lock_try_write
00:20:46 v #23183 > >
00:20:46 v #23184 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:46 v #23185 > > inl arc_rw_lock_try_write forall t. (x : arc (rw_lock t)) : resultm.result'
00:20:46 v #23186 > > (rw_lock_write_guard t) (try_lock_error (rw_lock_write_guard t)) =
00:20:46 v #23187 > >     inl x = x |> rust.emit
00:20:46 v #23188 > >     !\($'"!x.try_write()"')
00:20:46 v #23189 > >
00:20:46 v #23190 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:46 v #23191 > > │ ### mutex_guard_ref
00:20:46 v #23192 > >
00:20:46 v #23193 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:46 v #23194 > > inl mutex_guard_ref forall t. (x : mutex_guard t) : rust.ref t =
00:20:46 v #23195 > >     !\\(x, $'"&$0"')
00:20:47 v #23196 > >
00:20:47 v #23197 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:47 v #23198 > > │ ### rw_lock_read_guard_ref
00:20:47 v #23199 > >
00:20:47 v #23200 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:47 v #23201 > > inl rw_lock_read_guard_ref forall t. (x : rw_lock_read_guard t) : rust.ref t =
00:20:47 v #23202 > >     !\\(x, $'"&$0"')
00:20:47 v #23203 > >
00:20:47 v #23204 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:47 v #23205 > > │ ### rw_lock_write_guard_ref
00:20:47 v #23206 > >
00:20:47 v #23207 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:47 v #23208 > > inl rw_lock_write_guard_ref forall t. (x : rw_lock_write_guard t) : rust.ref t =
00:20:47 v #23209 > >     !\\(x, $'"&$0"')
00:20:47 v #23210 > >
00:20:47 v #23211 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:47 v #23212 > > │ ### mutex_guard_ref_mut
00:20:47 v #23213 > >
00:20:47 v #23214 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:47 v #23215 > > inl mutex_guard_ref_mut forall t. (x : mutex_guard t) : rust.ref (rust.mut' t) =
00:20:47 v #23216 > >     inl x = join x
00:20:47 v #23217 > >     (!\($'"true; let mut !x = !x"') : bool) |> ignore
00:20:47 v #23218 > >     !\\(x, $'"&mut $0"')
00:20:47 v #23219 > >
00:20:47 v #23220 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:47 v #23221 > > │ ### mutex_guard_ref_mut'
00:20:47 v #23222 > >
00:20:47 v #23223 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:47 v #23224 > > inl mutex_guard_ref_mut' forall t. (x : mutex_guard (rust.ref (rust.mut' t))) :
00:20:47 v #23225 > > rust.ref (rust.mut' t) =
00:20:47 v #23226 > >     inl x = x |> rust.emit
00:20:47 v #23227 > >     (!\($'"true; let mut !x = !x"') : bool) |> ignore
00:20:47 v #23228 > >     !\\(x, $'"&mut $0"')
00:20:47 v #23229 > >
00:20:47 v #23230 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:47 v #23231 > > │ ### mutex_guard_as_mut
00:20:47 v #23232 > >
00:20:47 v #23233 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:47 v #23234 > > inl mutex_guard_as_mut forall (t : * -> *) u. (x : mutex_guard (t u)) : t
00:20:47 v #23235 > > (rust.ref (rust.mut' u)) =
00:20:47 v #23236 > >     (!\($'"true; let mut !x = !x"') : bool) |> ignore
00:20:47 v #23237 > >     !\\(x, $'"$0.as_mut()"')
00:20:47 v #23238 > >
00:20:47 v #23239 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:47 v #23240 > > │ ### channel_receiver
00:20:47 v #23241 > >
00:20:47 v #23242 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:47 v #23243 > > nominal channel_receiver t =
00:20:47 v #23244 > >     `(
00:20:47 v #23245 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:47 v #23246 > > Fable.Core.Emit(\"std::sync::mpsc::Receiver<$0>\")>]]\n#endif\ntype
00:20:47 v #23247 > > std_sync_mpsc_Receiver<'T> = class end"
00:20:47 v #23248 > >         $'' : $'std_sync_mpsc_Receiver<`t>'
00:20:47 v #23249 > >     )
00:20:48 v #23250 > >
00:20:48 v #23251 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:48 v #23252 > > │ ### channel_sender
00:20:48 v #23253 > >
00:20:48 v #23254 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:48 v #23255 > > nominal channel_sender t =
00:20:48 v #23256 > >     `(
00:20:48 v #23257 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:48 v #23258 > > Fable.Core.Emit(\"std::sync::mpsc::Sender<$0>\")>]]\n#endif\ntype
00:20:48 v #23259 > > std_sync_mpsc_Sender<'T> = class end"
00:20:48 v #23260 > >         $'' : $'std_sync_mpsc_Sender<`t>'
00:20:48 v #23261 > >     )
00:20:48 v #23262 > >
00:20:48 v #23263 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:48 v #23264 > > │ ### new_channel
00:20:48 v #23265 > >
00:20:48 v #23266 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:48 v #23267 > > inl new_channel () : channel_sender sm'.std_string * arc (channel_receiver
00:20:48 v #23268 > > sm'.std_string) =
00:20:48 v #23269 > >     !\($'"{ let (sender, receiver) = std::sync::mpsc::channel(); (sender,
00:20:48 v #23270 > > std::sync::Arc::new(receiver)) }"')
00:20:48 v #23271 > >
00:20:48 v #23272 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:48 v #23273 > > │ ### send_error
00:20:48 v #23274 > >
00:20:48 v #23275 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:48 v #23276 > > nominal send_error t =
00:20:48 v #23277 > >     `(
00:20:48 v #23278 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:20:48 v #23279 > > Fable.Core.Emit(\"std::sync::mpsc::SendError<$0>\")>]]\n#endif\ntype
00:20:48 v #23280 > > std_sync_mpsc_SendError<'T> = class end"
00:20:48 v #23281 > >         $'' : $'std_sync_mpsc_SendError<`t>'
00:20:48 v #23282 > >     )
00:20:48 v #23283 > >
00:20:48 v #23284 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:48 v #23285 > > │ ### channel_send
00:20:48 v #23286 > >
00:20:48 v #23287 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:48 v #23288 > > inl channel_send forall t. (line : t) (sender : rust.ref (channel_sender t)) :
00:20:48 v #23289 > > resultm.result' () (send_error sm'.std_string) =
00:20:48 v #23290 > >     !\\((sender, line), $'"$0.send($1)"')
00:20:48 v #23291 > >
00:20:48 v #23292 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:48 v #23293 > > │ ## fsharp
00:20:48 v #23294 > >
00:20:48 v #23295 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:48 v #23296 > > │ ### sleep'
00:20:48 v #23297 > >
00:20:48 v #23298 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:48 v #23299 > > inl sleep' (n : i32) : () =
00:20:48 v #23300 > >     run_target function
00:20:48 v #23301 > >         | Fsharp (Native)
00:20:48 v #23302 > >         | Rust _
00:20:48 v #23303 > >         | Python _ => fun () => $'System.Threading.Thread.Sleep' n
00:20:48 v #23304 > >         | _ => fun () => ()
00:20:48 v #23305 > >
00:20:48 v #23306 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:48 v #23307 > > │ ### thread
00:20:48 v #23308 > >
00:20:48 v #23309 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:48 v #23310 > > nominal thread = $'System.Threading.Thread'
00:20:48 v #23311 > >
00:20:48 v #23312 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:48 v #23313 > > │ ### cancellation_token
00:20:48 v #23314 > >
00:20:48 v #23315 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:48 v #23316 > > nominal cancellation_token = $'System.Threading.CancellationToken'
00:20:49 v #23317 > >
00:20:49 v #23318 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:49 v #23319 > > │ ### cancellation_token_source
00:20:49 v #23320 > >
00:20:49 v #23321 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:49 v #23322 > > nominal cancellation_token_source = $'System.Threading.CancellationTokenSource'
00:20:49 v #23323 > >
00:20:49 v #23324 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:49 v #23325 > > │ ### cancellation_token_registration
00:20:49 v #23326 > >
00:20:49 v #23327 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:49 v #23328 > > nominal cancellation_token_registration =
00:20:49 v #23329 > > $'System.Threading.CancellationTokenRegistration'
00:20:49 v #23330 > >
00:20:49 v #23331 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:49 v #23332 > > │ ### cancellation_source_token
00:20:49 v #23333 > >
00:20:49 v #23334 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:49 v #23335 > > inl cancellation_source_token (x : cancellation_token_source) :
00:20:49 v #23336 > > cancellation_token =
00:20:49 v #23337 > >     $'!x.Token'
00:20:49 v #23338 > >
00:20:49 v #23339 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:49 v #23340 > > │ ### cancellation_source_cancel
00:20:49 v #23341 > >
00:20:49 v #23342 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:49 v #23343 > > inl cancellation_source_cancel (x : cancellation_token_source) : () =
00:20:49 v #23344 > >     run_target function
00:20:49 v #23345 > >         | Fsharp (Native) => fun () =>
00:20:49 v #23346 > >             $'!x.Cancel' ()
00:20:49 v #23347 > >         | _ => fun () => null ()
00:20:49 v #23348 > >
00:20:49 v #23349 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:49 v #23350 > > │ ### create_linked_token_source
00:20:49 v #23351 > >
00:20:49 v #23352 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:49 v #23353 > > inl create_linked_token_source (x : array_base cancellation_token) :
00:20:49 v #23354 > > cancellation_token_source =
00:20:49 v #23355 > >     x |> $'System.Threading.CancellationTokenSource.CreateLinkedTokenSource'
00:20:49 v #23356 > >
00:20:49 v #23357 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:49 v #23358 > > │ ### concurrent_stack
00:20:49 v #23359 > >
00:20:49 v #23360 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:49 v #23361 > > nominal concurrent_stack t =
00:20:49 v #23362 > > $'System.Collections.Concurrent.ConcurrentStack<`t>'
00:20:50 v #23363 > >
00:20:50 v #23364 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:50 v #23365 > > │ ### concurrent_stack_push
00:20:50 v #23366 > >
00:20:50 v #23367 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:50 v #23368 > > inl concurrent_stack_push forall t. (item : t) (stack : concurrent_stack t) : ()
00:20:50 v #23369 > > =
00:20:50 v #23370 > >     run_target function
00:20:50 v #23371 > >         | Fsharp (Native) => fun () => $'!stack.Push' item
00:20:50 v #23372 > >         | _ => fun () => ()
00:20:50 v #23373 > >
00:20:50 v #23374 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:50 v #23375 > > │ ### token_none
00:20:50 v #23376 > >
00:20:50 v #23377 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:50 v #23378 > > inl token_none () : cancellation_token =
00:20:50 v #23379 > >     $'`cancellation_token.None'
00:20:50 v #23380 > >
00:20:50 v #23381 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:50 v #23382 > > │ ### new_concurrent_stack
00:20:50 v #23383 > >
00:20:50 v #23384 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:50 v #23385 > > inl new_concurrent_stack forall t. () : concurrent_stack t =
00:20:50 v #23386 > >     $'System.Collections.Concurrent.ConcurrentStack<`t>' ()
00:20:50 v #23387 > >
00:20:50 v #23388 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:50 v #23389 > > │ ### token_register
00:20:50 v #23390 > >
00:20:50 v #23391 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:50 v #23392 > > inl token_register (fn : () -> ()) (ct : cancellation_token) :
00:20:50 v #23393 > > cancellation_token_registration =
00:20:50 v #23394 > >     fn |> $'!ct.Register'
00:20:50 v #23395 > >
00:20:50 v #23396 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:50 v #23397 > > │ ### new_cancellation_token_source
00:20:50 v #23398 > >
00:20:50 v #23399 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:50 v #23400 > > inl new_cancellation_token_source () : cancellation_token_source =
00:20:50 v #23401 > >     $'new `cancellation_token_source ()'
00:20:50 v #23402 > >
00:20:50 v #23403 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:50 v #23404 > > inl token_cancellation_requested (ct : cancellation_token) : bool =
00:20:50 v #23405 > >     $'!ct.IsCancellationRequested'
00:20:50 v #23406 > >
00:20:50 v #23407 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:50 v #23408 > > │ ### new_disposable_token
00:20:50 v #23409 > >
00:20:50 v #23410 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:50 v #23411 > > inl new_disposable_token (merge_token : optionm'.option' cancellation_token) =
00:20:50 v #23412 > >     run_target function
00:20:50 v #23413 > >         | Fsharp (Native) => fun () =>
00:20:50 v #23414 > >             inl cts = new_cancellation_token_source ()
00:20:50 v #23415 > >             inl cts =
00:20:50 v #23416 > >                 match merge_token |> optionm'.unbox with
00:20:50 v #23417 > >                 | None => cts
00:20:50 v #23418 > >                 | Some merge_token =>
00:20:50 v #23419 > >                     create_linked_token_source ;[[ cts |>
00:20:50 v #23420 > > cancellation_source_token; merge_token ]]
00:20:50 v #23421 > >             inl disposable : _ () = new_disposable fun () =>
00:20:50 v #23422 > >                 cts |> cancellation_source_cancel
00:20:50 v #23423 > >             cts |> cancellation_source_token, disposable
00:20:50 v #23424 > >         | _ => fun () => null ()
00:20:51 v #23425 > >
00:20:51 v #23426 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:51 v #23427 > > //// test
00:20:51 v #23428 > >
00:20:51 v #23429 > > inl run fn =
00:20:51 v #23430 > >     inl token, disposable = new_disposable_token (None |> optionm'.box)
00:20:51 v #23431 > >     disposable |> use |> ignore
00:20:51 v #23432 > >     fn token
00:20:51 v #23433 > >     fun () =>
00:20:51 v #23434 > >         fn token
00:20:51 v #23435 > >     |> async.new_async
00:20:51 v #23436 > >     |> async.start
00:20:51 v #23437 > >
00:20:51 v #23438 > > fun () =>
00:20:51 v #23439 > >     inl counter = mut 0i32
00:20:51 v #23440 > >
00:20:51 v #23441 > >     inl fn (token : cancellation_token) =
00:20:51 v #23442 > >         counter <- *counter + (if token |> token_cancellation_requested then 10
00:20:51 v #23443 > > else 1)
00:20:51 v #23444 > >
00:20:51 v #23445 > >     join run fn
00:20:51 v #23446 > >     async.sleep 10 |> async.do
00:20:51 v #23447 > >     return *counter
00:20:51 v #23448 > > |> async.new_async_unit
00:20:51 v #23449 > > |> async.run_synchronously
00:20:51 v #23450 > > |> _assert_eq 11i32
00:20:52 v #23451 > >
00:20:52 v #23452 > > ── [ 1.47s - stdout ] ──────────────────────────────────────────────────────────
00:20:52 v #23453 > > │ __assert_eq / actual: 11 / expected: 11
00:20:52 v #23454 > > │
00:20:52 v #23455 > >
00:20:52 v #23456 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:52 v #23457 > > │ ## main
00:20:52 v #23458 > >
00:20:52 v #23459 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:52 v #23460 > > inl main () =
00:20:52 v #23461 > >     $'let new_disposable_token x = !new_disposable_token x' : ()
00:20:52 v #23462 > 00:00:14 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 25359 }
00:20:52 v #23463 > 00:00:14 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/threading.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/threading.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:20:53 v #23464 > 00:00:15 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/threading.dib.ipynb to html
00:20:53 v #23465 > 00:00:15 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:20:53 v #23466 > 00:00:15 v #7 !   validate(nb)
00:20:54 v #23467 > 00:00:16 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:20:54 v #23468 > 00:00:16 v #9 !   return _pygments_highlight(
00:20:54 v #23469 > 00:00:16 v #10 ! [NbConvertApp] Writing 383322 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/threading.dib.html
00:20:54 v #23470 > 00:00:16 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 902 }
00:20:54 v #23471 > 00:00:16 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 902 }
00:20:54 v #23472 > 00:00:16 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/threading.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/threading.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:20:54 v #23473 > 00:00:16 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:20:54 v #23474 > 00:00:16 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:20:54 v #23475 > 00:00:16 d #16 spiral.run / dib / { exit_code = 0; result_length = 26320 }
00:20:54 d #23476 runtime.execute_with_options_async / { exit_code = 0; output_length = 30192 }
00:20:54 d #32 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path threading.dib --retries 3
00:20:54 d #23477 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path benchmark.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path benchmark.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:20:54 v #23478 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "benchmark.dib", "--retries", "3"])) }
00:20:54 v #23479 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/benchmark.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/benchmark.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/benchmark.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/benchmark.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:20:56 v #23480 > >
00:20:56 v #23481 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:56 v #23482 > > │ ## benchmark
00:20:58 v #23483 > >
00:20:58 v #23484 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:58 v #23485 > > //// test
00:20:58 v #23486 > >
00:20:58 v #23487 > > open testing
00:20:59 v #23488 > >
00:20:59 v #23489 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:59 v #23490 > > │ ## fsharp
00:20:59 v #23491 > >
00:20:59 v #23492 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:59 v #23493 > > │ ### test_case_result
00:20:59 v #23494 > >
00:20:59 v #23495 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:59 v #23496 > > type test_case_result =
00:20:59 v #23497 > >     {
00:20:59 v #23498 > >         input : string
00:20:59 v #23499 > >         expected : string
00:20:59 v #23500 > >         result : string
00:20:59 v #23501 > >         time_list : array_base i64
00:20:59 v #23502 > >     }
00:20:59 v #23503 > >
00:20:59 v #23504 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:59 v #23505 > > │ ### run'
00:20:59 v #23506 > >
00:20:59 v #23507 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:59 v #23508 > > inl run' forall t. count (fn : () -> t) =
00:20:59 v #23509 > >     runtime.gc_collect ()
00:20:59 v #23510 > >     inl stopwatch = date_time.stopwatch ()
00:20:59 v #23511 > >     stopwatch |> date_time.stopwatch_start
00:20:59 v #23512 > >     inl time1 = stopwatch |> date_time.stopwatch_elapsed_milliseconds
00:20:59 v #23513 > >     inl result : t =
00:20:59 v #23514 > >         am'.init_series 0 count 1i32
00:20:59 v #23515 > >         |> fun x => a x : _ int _
00:20:59 v #23516 > >         |> am'.parallel_map fun _n => fn ()
00:20:59 v #23517 > >         |> am'.last
00:20:59 v #23518 > >     inl time2 = (stopwatch |> date_time.stopwatch_elapsed_milliseconds) - time1
00:20:59 v #23519 > >     result, time2
00:20:59 v #23520 > >
00:20:59 v #23521 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:59 v #23522 > > │ ### run
00:20:59 v #23523 > >
00:20:59 v #23524 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:59 v #23525 > > inl run forall input expected.
00:20:59 v #23526 > >     count
00:20:59 v #23527 > >     (solutions : list (string * (input -> expected)))
00:20:59 v #23528 > >     ((input, expected) : (input * expected))
00:20:59 v #23529 > >     : test_case_result
00:20:59 v #23530 > >     =
00:20:59 v #23531 > >     inl input_str = input |> sm'.format_debug
00:20:59 v #23532 > >
00:20:59 v #23533 > >     console.write_line ""
00:20:59 v #23534 > >     trace Verbose
00:20:59 v #23535 > >         fun () => "benchmark.run"
00:20:59 v #23536 > >         fun () => { input_str = input_str |> sm'.ellipsis_end 40 }
00:20:59 v #23537 > >
00:20:59 v #23538 > >     inl results_with_time : array_base _ =
00:20:59 v #23539 > >         solutions
00:20:59 v #23540 > >         |> listm'.indexed
00:20:59 v #23541 > >         |> listm'.box
00:20:59 v #23542 > >         |> listm'.to_array'
00:20:59 v #23543 > >         |> am'.map_base fun ((i : int), (test_name, solution)) =>
00:20:59 v #23544 > >             inl result, time =
00:20:59 v #23545 > >                 fun () => solution input
00:20:59 v #23546 > >                 |> run' count
00:20:59 v #23547 > >             trace Verbose
00:20:59 v #23548 > >                 fun () => "benchmark.run / solutions.map"
00:20:59 v #23549 > >                 fun () => { i = i + 1; test_name time }
00:20:59 v #23550 > >             result, time
00:20:59 v #23551 > >
00:20:59 v #23552 > >     match results_with_time |> am'.map_base fst with
00:20:59 v #23553 > >     | array when (array |> (fun x => a x : _ int _) |> am'.length) <= 1 => ()
00:20:59 v #23554 > >     | array when array |> (fun x => a x : _ int _) |> am.forall' ((=) (array |>
00:20:59 v #23555 > > (fun x => a x : _ int _) |> am'.index 0)) => ()
00:20:59 v #23556 > >     | results => failwith ($'$"benchmark.run / error / results: {!results}"' :
00:20:59 v #23557 > > string)
00:20:59 v #23558 > >
00:20:59 v #23559 > >     {
00:20:59 v #23560 > >         input = input_str
00:20:59 v #23561 > >         expected = expected |> sm'.format_debug
00:20:59 v #23562 > >         result = results_with_time |> am'.map_base fst |> (fun x => a x : _ int
00:20:59 v #23563 > > _) |> am'.index 0 |> sm'.format_debug
00:20:59 v #23564 > >         time_list = results_with_time |> am'.map_base snd
00:20:59 v #23565 > >     }
00:20:59 v #23566 > >
00:20:59 v #23567 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:59 v #23568 > > │ ### run_all
00:20:59 v #23569 > >
00:20:59 v #23570 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:59 v #23571 > > inl run_all forall input expected.
00:20:59 v #23572 > >     test_name
00:20:59 v #23573 > >     count
00:20:59 v #23574 > >     (solutions : list (string * (input -> expected)))
00:20:59 v #23575 > >     test_cases
00:20:59 v #23576 > >     =
00:20:59 v #23577 > >     console.write_line ""
00:20:59 v #23578 > >     console.write_line "```"
00:20:59 v #23579 > >     trace Verbose
00:20:59 v #23580 > >         fun () => "benchmark.run_all"
00:20:59 v #23581 > >         fun () => { test_name count }
00:20:59 v #23582 > >     test_cases
00:20:59 v #23583 > >     |> listm'.box
00:20:59 v #23584 > >     |> listm'.to_array'
00:20:59 v #23585 > >     |> am'.map_base (run count solutions)
00:20:59 v #23586 > >
00:20:59 v #23587 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:59 v #23588 > > │ ### sort_result_list
00:20:59 v #23589 > >
00:20:59 v #23590 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:59 v #23591 > > inl sort_result_list results =
00:20:59 v #23592 > >     inl table =
00:20:59 v #23593 > >         inl rows =
00:20:59 v #23594 > >             results
00:20:59 v #23595 > >             |> am'.map_base fun (result : test_case_result) =>
00:20:59 v #23596 > >                 inl best =
00:20:59 v #23597 > >                     result.time_list
00:20:59 v #23598 > >                     |> am'.indexed
00:20:59 v #23599 > >                     |> am'.map_base fun (i, time) =>
00:20:59 v #23600 > >                         i + 1i32, time
00:20:59 v #23601 > >                     |> fun x => a x : _ int _
00:20:59 v #23602 > >                     |> am'.sort_by snd
00:20:59 v #23603 > >                     |> am'.index 0i32
00:20:59 v #23604 > >                     |> sm'.format
00:20:59 v #23605 > >                 inl row =
00:20:59 v #23606 > >                     [[
00:20:59 v #23607 > >                         result.input |> sm'.ellipsis_end 40 |> sm'.replace "|"
00:20:59 v #23608 > > ""
00:20:59 v #23609 > >                         result.expected
00:20:59 v #23610 > >                         result.result
00:20:59 v #23611 > >                         best
00:20:59 v #23612 > >                     ]]
00:20:59 v #23613 > >                 inl color : option console.console_color =
00:20:59 v #23614 > >                     open console
00:20:59 v #23615 > >                     match result.expected = result.result with
00:20:59 v #23616 > >                     | true => Some $'`console_color.DarkGreen'
00:20:59 v #23617 > >                     | false => Some $'`console_color.DarkRed'
00:20:59 v #23618 > >                 row, color
00:20:59 v #23619 > >
00:20:59 v #23620 > >         inl header =
00:20:59 v #23621 > >             [[
00:20:59 v #23622 > >                 [[
00:20:59 v #23623 > >                     "input"
00:20:59 v #23624 > >                     "expected"
00:20:59 v #23625 > >                     "result"
00:20:59 v #23626 > >                     "best"
00:20:59 v #23627 > >                 ]]
00:20:59 v #23628 > >                 [[
00:20:59 v #23629 > >                     "---"
00:20:59 v #23630 > >                     "---"
00:20:59 v #23631 > >                     "---"
00:20:59 v #23632 > >                     "---"
00:20:59 v #23633 > >                 ]]
00:20:59 v #23634 > >             ]]
00:20:59 v #23635 > >             |> listm.map fun row => row, None
00:20:59 v #23636 > >             |> listm'.box
00:20:59 v #23637 > >             |> listm'.to_array'
00:20:59 v #23638 > >             |> fun x => a x : _ int _
00:20:59 v #23639 > >         a rows
00:20:59 v #23640 > >         |> am.append header
00:20:59 v #23641 > >         |> fun (a x) => x
00:20:59 v #23642 > >
00:20:59 v #23643 > >     inl formatted_table =
00:20:59 v #23644 > >         inl length_map : mapm.map i32 i64 =
00:20:59 v #23645 > >             table
00:20:59 v #23646 > >             |> am'.map_base (fst >> listm'.box >> listm'.to_array')
00:20:59 v #23647 > >             |> am'.transpose
00:20:59 v #23648 > >             |> am'.map_base fun column =>
00:20:59 v #23649 > >                 column
00:20:59 v #23650 > >                 |> am'.map_base sm.length
00:20:59 v #23651 > >                 |> fun x => a x : _ int _
00:20:59 v #23652 > >                 |> am'.sort_descending
00:20:59 v #23653 > >                 |> am'.try_item 0i32
00:20:59 v #23654 > >                 |> optionm'.default_value 0i64
00:20:59 v #23655 > >             |> am'.indexed
00:20:59 v #23656 > >             |> fun x => a x : _ int _
00:20:59 v #23657 > >             |> mapm.of_array
00:20:59 v #23658 > >         table
00:20:59 v #23659 > >         |> am'.map_base fun (row, color) =>
00:20:59 v #23660 > >             inl new_row =
00:20:59 v #23661 > >                 row
00:20:59 v #23662 > >                 |> listm'.indexed
00:20:59 v #23663 > >                 |> listm.map fun (i, cell) =>
00:20:59 v #23664 > >                     cell |> sm'.pad_right (length_map |> mapm.item i |> conv) '
00:20:59 v #23665 > > '
00:20:59 v #23666 > >                 |> listm'.box
00:20:59 v #23667 > >                 |> listm'.to_array'
00:20:59 v #23668 > >             new_row, color
00:20:59 v #23669 > >
00:20:59 v #23670 > >     console.write_line "```"
00:20:59 v #23671 > >     formatted_table
00:20:59 v #23672 > >     |> fun x => a x : _ int _
00:20:59 v #23673 > >     |> am'.to_list'
00:20:59 v #23674 > >     |> listm'.unbox
00:20:59 v #23675 > >     |> listm.iter fun (row, color) =>
00:20:59 v #23676 > >         match color with
00:20:59 v #23677 > >         | Some color => color |> console.set_foreground_color
00:20:59 v #23678 > >         | None => console.reset_color ()
00:20:59 v #23679 > >
00:20:59 v #23680 > >         a row |> sm'.join' "\t| " |> console.write_line
00:20:59 v #23681 > >
00:20:59 v #23682 > >         console.reset_color ()
00:20:59 v #23683 > >
00:20:59 v #23684 > >     inl averages =
00:20:59 v #23685 > >         results
00:20:59 v #23686 > >         |> am'.map_base fun result =>
00:20:59 v #23687 > >             result.time_list
00:20:59 v #23688 > >             |> am'.map_base ($'float' : i64 -> f64)
00:20:59 v #23689 > >         |> am'.transpose
00:20:59 v #23690 > >         |> am'.map_base ((fun x => a x : _ int _) >> am'.average)
00:20:59 v #23691 > >         |> am'.map_base ($'int64' : f64 -> i64)
00:20:59 v #23692 > >         |> am'.indexed
00:20:59 v #23693 > >         |> fun x => a x : _ u64 _
00:20:59 v #23694 > >
00:20:59 v #23695 > >     console.write_line "```"
00:20:59 v #23696 > >     averages
00:20:59 v #23697 > >     |> am'.sort_by snd
00:20:59 v #23698 > >     |> am'.to_list'
00:20:59 v #23699 > >     |> listm'.unbox
00:20:59 v #23700 > >     |> listm.iter fun ((i : i32), avg) =>
00:20:59 v #23701 > >         trace Verbose
00:20:59 v #23702 > >             fun () => "benchmark.sort_result_list / averages.iter"
00:20:59 v #23703 > >             fun () => { i = i + 1; avg }
00:20:59 v #23704 > >     console.write_line "```"
00:20:59 v #23705 > >
00:20:59 v #23706 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:59 v #23707 > > //// test
00:20:59 v #23708 > >
00:20:59 v #23709 > > inl is_fast () =
00:20:59 v #23710 > >     false
00:20:59 v #23711 > >
00:20:59 v #23712 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:59 v #23713 > > │ ### empty2Tests
00:20:59 v #23714 > >
00:20:59 v #23715 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:59 v #23716 > > │ Test: Empty2
00:20:59 v #23717 > > │
00:20:59 v #23718 > > │ Solution: (a, a)
00:20:59 v #23719 > > │ Test case 1. A. Time: 59L
00:20:59 v #23720 > > │
00:20:59 v #23721 > > │ Solution: (a, a)
00:20:59 v #23722 > > │ Test case 1. A. Time: 53L
00:20:59 v #23723 > > │
00:20:59 v #23724 > > │ Input   | Expected        | Result  | Best
00:20:59 v #23725 > > │ ---     | ---             | ---     | ---
00:20:59 v #23726 > > │ (a, a)  | a               | a       | (1, 59)
00:20:59 v #23727 > > │ (a, a)  | a               | a       | (1, 53)
00:20:59 v #23728 > > │
00:20:59 v #23729 > > │ Averages
00:20:59 v #23730 > > │ Test case 1. Average Time: 56L
00:20:59 v #23731 > > │
00:20:59 v #23732 > > │ Ranking
00:20:59 v #23733 > > │ Test case 1. Average Time: 56L
00:20:59 v #23734 > > │
00:20:59 v #23735 > > │ ---
00:20:59 v #23736 > > │
00:20:59 v #23737 > > │
00:20:59 v #23738 > > │ ```
00:20:59 v #23739 > > │ 01:12:03 verbose #1 benchmark.run_all / {count =
00:20:59 v #23740 > > 2000000; test_name = empty_2_tests}
00:20:59 v #23741 > > │ 01:12:03 verbose #2 benchmark.run / {count = 2000000;
00:20:59 v #23742 > > expected = a; input = a, a; input_str = struct ("a", "a")}
00:20:59 v #23743 > > │ 01:12:03 verbose #3 benchmark.run / solutions.map
00:20:59 v #23744 > > {count = 2000000; expected = a; i = 0; input = a, a; input_str = struct ("a",
00:20:59 v #23745 > > "a"); test_name = A; time = 119}
00:20:59 v #23746 > > │ 01:12:04 verbose #4 benchmark.run / solutions.map
00:20:59 v #23747 > > {count = 2000000; expected = a; i = 1; input = a, a; input_str = struct ("a",
00:20:59 v #23748 > > "a"); test_name = B; time = 122}
00:20:59 v #23749 > > │ 01:12:04 verbose #5 benchmark.run / {count = 2000000;
00:20:59 v #23750 > > expected = b; input = b, b; input_str = struct ("b", "b")}
00:20:59 v #23751 > > │ 01:12:04 verbose #6 benchmark.run / solutions.map
00:20:59 v #23752 > > {count = 2000000; expected = b; i = 0; input = b, b; input_str = struct ("b",
00:20:59 v #23753 > > "b"); test_name = A; time = 110}
00:20:59 v #23754 > > │ 01:12:04 verbose #7 benchmark.run / solutions.map
00:20:59 v #23755 > > {count = 2000000; expected = b; i = 1; input = b, b; input_str = struct ("b",
00:20:59 v #23756 > > "b"); test_name = B; time = 120}
00:20:59 v #23757 > > │ ```
00:20:59 v #23758 > > │ Input            	| Expected	| Result	| Best
00:20:59 v #23759 > > │ ---              	| ---     	| ---   	| ---
00:20:59 v #23760 > > │ struct ("a", "a")	| "a"     	| "a"   	| struct (1L, 119L)
00:20:59 v #23761 > > │ struct ("b", "b")	| "b"     	| "b"   	| struct (1L, 110L)
00:20:59 v #23762 > > │ ```
00:20:59 v #23763 > > │ 01:12:04 verbose #8 benchmark.sort_result_list
00:20:59 v #23764 > > averages.iter / {avg = 114; i = 0}
00:20:59 v #23765 > > │ 01:12:04 verbose #9 benchmark.sort_result_list
00:20:59 v #23766 > > averages.iter / {avg = 121; i = 1}
00:20:59 v #23767 > > │ ```
00:20:59 v #23768 > > │ `
00:20:59 v #23769 > >
00:20:59 v #23770 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:59 v #23771 > > //// test
00:20:59 v #23772 > >
00:20:59 v #23773 > > inl get_solutions () =
00:20:59 v #23774 > >     [[
00:20:59 v #23775 > >         "A",
00:20:59 v #23776 > >         fun (a, _b) =>
00:20:59 v #23777 > >             a
00:20:59 v #23778 > >
00:20:59 v #23779 > >         "B",
00:20:59 v #23780 > >         fun (_a, b) =>
00:20:59 v #23781 > >             b
00:20:59 v #23782 > >     ]]
00:20:59 v #23783 > >
00:20:59 v #23784 > > inl rec empty_2_tests () =
00:20:59 v #23785 > >     inl test_cases = [[
00:20:59 v #23786 > >         ("a", "a"), "a"
00:20:59 v #23787 > >         ("b", "b"), "b"
00:20:59 v #23788 > >     ]]
00:20:59 v #23789 > >
00:20:59 v #23790 > >     inl solutions = get_solutions ()
00:20:59 v #23791 > >
00:20:59 v #23792 > >     // inl is_fast () = true
00:20:59 v #23793 > >
00:20:59 v #23794 > >     inl count =
00:20:59 v #23795 > >         if is_fast ()
00:20:59 v #23796 > >         then 1000i32
00:20:59 v #23797 > >         else 2000000i32
00:20:59 v #23798 > >
00:20:59 v #23799 > >     run_all (reflection.nameof { empty_2_tests }) count solutions test_cases
00:20:59 v #23800 > >     |> sort_result_list
00:20:59 v #23801 > >
00:20:59 v #23802 > > empty_2_tests ()
00:21:02 v #23803 > >
00:21:02 v #23804 > > ── [ 2.83s - stdout ] ──────────────────────────────────────────────────────────
00:21:02 v #23805 > > │
00:21:02 v #23806 > > │ ```
00:21:02 v #23807 > > │ 00:00:00 v #1 benchmark.run_all / { test_name =
00:21:02 v #23808 > > empty_2_tests; count = 2000000 }
00:21:02 v #23809 > > │
00:21:02 v #23810 > > │ 00:00:00 v #2 benchmark.run / { input_str = struct ("a",
00:21:02 v #23811 > > "a") }
00:21:02 v #23812 > > │ 00:00:00 v #3 benchmark.run / solutions.map / { i = 1;
00:21:02 v #23813 > > test_name = A; time = 32 }
00:21:02 v #23814 > > │ 00:00:00 v #4 benchmark.run / solutions.map / { i = 2;
00:21:02 v #23815 > > test_name = B; time = 12 }
00:21:02 v #23816 > > │
00:21:02 v #23817 > > │ 00:00:00 v #5 benchmark.run / { input_str = struct ("b",
00:21:02 v #23818 > > "b") }
00:21:02 v #23819 > > │ 00:00:00 v #6 benchmark.run / solutions.map / { i = 1;
00:21:02 v #23820 > > test_name = A; time = 14 }
00:21:02 v #23821 > > │ 00:00:00 v #7 benchmark.run / solutions.map / { i = 2;
00:21:02 v #23822 > > test_name = B; time = 15 }
00:21:02 v #23823 > > │ ```
00:21:02 v #23824 > > │ input            	| expected	| result	| best
00:21:02 v #23825 > > │ ---              	| ---     	| ---   	| ---
00:21:02 v #23826 > > │ struct ("a", "a")	| "a"     	| "a"   	| 2, 12
00:21:02 v #23827 > > │ struct ("b", "b")	| "b"     	| "b"   	| 1, 14
00:21:02 v #23828 > > │ ```
00:21:02 v #23829 > > │ 00:00:00 v #8 benchmark.sort_result_list / averages.iter
00:21:02 v #23830 > > / { i = 2; avg = 13 }
00:21:02 v #23831 > > │ 00:00:00 v #9 benchmark.sort_result_list / averages.iter
00:21:02 v #23832 > > / { i = 1; avg = 23 }
00:21:02 v #23833 > > │ ```
00:21:02 v #23834 > > │
00:21:02 v #23835 > >
00:21:02 v #23836 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:02 v #23837 > > │ ### emptyTests
00:21:02 v #23838 > >
00:21:02 v #23839 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:02 v #23840 > > │ Test: Empty
00:21:02 v #23841 > > │
00:21:02 v #23842 > > │ Solution: 0
00:21:02 v #23843 > > │ Test case 1. A. Time: 61L
00:21:02 v #23844 > > │
00:21:02 v #23845 > > │ Solution: 2
00:21:02 v #23846 > > │ Test case 1. A. Time: 62L
00:21:02 v #23847 > > │
00:21:02 v #23848 > > │ Solution: 5
00:21:02 v #23849 > > │ Test case 1. A. Time: 70L
00:21:02 v #23850 > > │
00:21:02 v #23851 > > │ Input   | Expected        | Result  | Best
00:21:02 v #23852 > > │ ---     | ---             | ---     | ---
00:21:02 v #23853 > > │ 0       | 0               | 0       | (1, 61)
00:21:02 v #23854 > > │ 2       | 2               | 2       | (1, 62)
00:21:02 v #23855 > > │ 5       | 5               | 5       | (1, 70)
00:21:02 v #23856 > > │
00:21:02 v #23857 > > │ Averages
00:21:02 v #23858 > > │ Test case 1. Average Time: 64L
00:21:02 v #23859 > > │
00:21:02 v #23860 > > │ Ranking
00:21:02 v #23861 > > │ Test case 1. Average Time: 64L
00:21:02 v #23862 > > │
00:21:02 v #23863 > > │ ---
00:21:02 v #23864 > > │
00:21:02 v #23865 > > │ ```
00:21:02 v #23866 > > │ 01:21:25 verbose #1 benchmark.run_all / {count =
00:21:02 v #23867 > > 2000000; test_name = empty_1_tests}
00:21:02 v #23868 > > │ 01:21:25 verbose #2 benchmark.run / {count = 2000000;
00:21:02 v #23869 > > expected = +1.000000; input = +0.000000; input_str = 0.0}
00:21:02 v #23870 > > │ 01:21:25 verbose #3 benchmark.run / solutions.map
00:21:02 v #23871 > > {count = 2000000; expected = +1.000000; i = 0; input = +0.000000; input_str =
00:21:02 v #23872 > > 0.0; test_name = A; time = 36}
00:21:02 v #23873 > > │ 01:21:25 verbose #4 benchmark.run / {count = 2000000;
00:21:02 v #23874 > > expected = +3.000000; input = +2.000000; input_str = 2.0}
00:21:02 v #23875 > > │ 01:21:25 verbose #5 benchmark.run / solutions.map
00:21:02 v #23876 > > {count = 2000000; expected = +3.000000; i = 0; input = +2.000000; input_str =
00:21:02 v #23877 > > 2.0; test_name = A; time = 20}
00:21:02 v #23878 > > │ 01:21:25 verbose #6 benchmark.run / {count = 2000000;
00:21:02 v #23879 > > expected = +6.000000; input = +5.000000; input_str = 5.0}
00:21:02 v #23880 > > │ 01:21:25 verbose #7 benchmark.run / solutions.map
00:21:02 v #23881 > > {count = 2000000; expected = +6.000000; i = 0; input = +5.000000; input_str =
00:21:02 v #23882 > > 5.0; test_name = A; time = 22}
00:21:02 v #23883 > > │ ```
00:21:02 v #23884 > > │ Input	| Expected	| Result	| Best
00:21:02 v #23885 > > │ ---  	| ---     	| ---   	| ---
00:21:02 v #23886 > > │ 0.0  	| 1.0     	| 1.0   	| struct (1L, 36L)
00:21:02 v #23887 > > │ 2.0  	| 3.0     	| 3.0   	| struct (1L, 20L)
00:21:02 v #23888 > > │ 5.0  	| 6.0     	| 6.0   	| struct (1L, 22L)
00:21:02 v #23889 > > │ ```
00:21:02 v #23890 > > │ 01:21:25 verbose #8 benchmark.sort_result_list
00:21:02 v #23891 > > averages.iter / {avg = 26; i = 0}
00:21:02 v #23892 > > │ ```
00:21:02 v #23893 > >
00:21:02 v #23894 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:02 v #23895 > > //// test
00:21:02 v #23896 > >
00:21:02 v #23897 > > inl get_solutions () =
00:21:02 v #23898 > >     [[
00:21:02 v #23899 > >         "A",
00:21:02 v #23900 > >         fun n =>
00:21:02 v #23901 > >             n + 1f64
00:21:02 v #23902 > >     ]]
00:21:02 v #23903 > >
00:21:02 v #23904 > > inl rec empty_1_tests () =
00:21:02 v #23905 > >     inl test_cases = [[
00:21:02 v #23906 > >         0, 1
00:21:02 v #23907 > >         2, 3
00:21:02 v #23908 > >         5, 6
00:21:02 v #23909 > >     ]]
00:21:02 v #23910 > >
00:21:02 v #23911 > >     inl solutions = get_solutions ()
00:21:02 v #23912 > >
00:21:02 v #23913 > >     // inl is_fast () = true
00:21:02 v #23914 > >
00:21:02 v #23915 > >     inl count =
00:21:02 v #23916 > >         if is_fast ()
00:21:02 v #23917 > >         then 1000i32
00:21:02 v #23918 > >         else 2000000i32
00:21:02 v #23919 > >
00:21:02 v #23920 > >     run_all (reflection.nameof { empty_1_tests }) count solutions test_cases
00:21:02 v #23921 > >     |> sort_result_list
00:21:02 v #23922 > >
00:21:02 v #23923 > > empty_1_tests ()
00:21:04 v #23924 > >
00:21:04 v #23925 > > ── [ 1.74s - stdout ] ──────────────────────────────────────────────────────────
00:21:04 v #23926 > > │
00:21:04 v #23927 > > │ ```
00:21:04 v #23928 > > │ 00:00:00 v #1 benchmark.run_all / { test_name =
00:21:04 v #23929 > > empty_1_tests; count = 2000000 }
00:21:04 v #23930 > > │
00:21:04 v #23931 > > │ 00:00:00 v #2 benchmark.run / { input_str = 0.0 }
00:21:04 v #23932 > > │ 00:00:00 v #3 benchmark.run / solutions.map / { i = 1;
00:21:04 v #23933 > > test_name = A; time = 20 }
00:21:04 v #23934 > > │
00:21:04 v #23935 > > │ 00:00:00 v #4 benchmark.run / { input_str = 2.0 }
00:21:04 v #23936 > > │ 00:00:00 v #5 benchmark.run / solutions.map / { i = 1;
00:21:04 v #23937 > > test_name = A; time = 12 }
00:21:04 v #23938 > > │
00:21:04 v #23939 > > │ 00:00:00 v #6 benchmark.run / { input_str = 5.0 }
00:21:04 v #23940 > > │ 00:00:00 v #7 benchmark.run / solutions.map / { i = 1;
00:21:04 v #23941 > > test_name = A; time = 42 }
00:21:04 v #23942 > > │ ```
00:21:04 v #23943 > > │ input	| expected	| result	| best
00:21:04 v #23944 > > │ ---  	| ---     	| ---   	| ---
00:21:04 v #23945 > > │ 0.0  	| 1.0     	| 1.0   	| 1, 20
00:21:04 v #23946 > > │ 2.0  	| 3.0     	| 3.0   	| 1, 12
00:21:04 v #23947 > > │ 5.0  	| 6.0     	| 6.0   	| 1, 42
00:21:04 v #23948 > > │ ```
00:21:04 v #23949 > > │ 00:00:00 v #8 benchmark.sort_result_list / averages.iter
00:21:04 v #23950 > > / { i = 1; avg = 24 }
00:21:04 v #23951 > > │ ```
00:21:04 v #23952 > > │
00:21:04 v #23953 > 00:00:09 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 17996 }
00:21:04 v #23954 > 00:00:09 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/benchmark.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/benchmark.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:21:05 v #23955 > 00:00:10 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/benchmark.dib.ipynb to html
00:21:05 v #23956 > 00:00:10 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:21:05 v #23957 > 00:00:10 v #7 !   validate(nb)
00:21:05 v #23958 > 00:00:10 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:21:05 v #23959 > 00:00:10 v #9 !   return _pygments_highlight(
00:21:05 v #23960 > 00:00:11 v #10 ! [NbConvertApp] Writing 316523 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/benchmark.dib.html
00:21:05 v #23961 > 00:00:11 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 902 }
00:21:05 v #23962 > 00:00:11 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 902 }
00:21:05 v #23963 > 00:00:11 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/benchmark.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/benchmark.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:21:06 v #23964 > 00:00:11 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:21:06 v #23965 > 00:00:11 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:21:06 v #23966 > 00:00:11 d #16 spiral.run / dib / { exit_code = 0; result_length = 18957 }
00:21:06 d #23967 runtime.execute_with_options_async / { exit_code = 0; output_length = 22585 }
00:21:06 d #33 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path benchmark.dib --retries 3
00:21:06 d #23968 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path physics.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path physics.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:21:06 v #23969 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "physics.dib", "--retries", "3"])) }
00:21:06 v #23970 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/physics.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/physics.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/physics.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/physics.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:21:07 v #23971 > >
00:21:07 v #23972 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:07 v #23973 > > │ # physics
00:21:20 v #23974 > >
00:21:20 v #23975 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:20 v #23976 > > //// test
00:21:20 v #23977 > >
00:21:20 v #23978 > > open testing
00:21:20 v #23979 > >
00:21:20 v #23980 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:20 v #23981 > > │ ### init_series
00:21:20 v #23982 > >
00:21:20 v #23983 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:20 v #23984 > > //// test
00:21:20 v #23985 > >
00:21:20 v #23986 > > inl x = am'.init_series -3f64 3 0.01
00:21:20 v #23987 > > inl y = x |> am'.map_base math.square
00:21:20 v #23988 > > "square", "x", "y", ;[[ "square", x, y ]]
00:21:21 v #23989 > >
00:21:21 v #23990 > > ── [ 291.16ms - return value ] ─────────────────────────────────────────────────
00:21:21 v #23991 > > │ <svg width="640" height="480" viewBox="0 0 640 480"
00:21:21 v #23992 > > xmlns="http://www.w3.org/2000/svg">
00:21:21 v #23993 > > │ <rect x="0" y="0" width="640" height="480" opacity="1"
00:21:21 v #23994 > > fill="#141414" stroke="none"/>
00:21:21 v #23995 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"
00:21:21 v #23996 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1"
00:21:21 v #23997 > > fill="#FFFFFF">
00:21:21 v #23998 > > │ square
00:21:21 v #23999 > > │ </text>
00:21:21 v #24000 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="61"
00:21:21 v #24001 > > y1="424" x2="61" y2="75"/>
00:21:21 v #24002 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69"
00:21:21 v #24003 > > y1="424" x2="69" y2="75"/>
00:21:21 v #24004 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="78"
00:21:21 v #24005 > > y1="424" x2="78" y2="75"/>
00:21:21 v #24006 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="86"
00:21:21 v #24007 > > y1="424" x2="86" y2="75"/>
00:21:21 v #24008 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="94"
00:21:21 v #24009 > > y1="424" x2="94" y2="75"/>
00:21:21 v #24010 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="103"
00:21:21 v #24011 > > y1="424" x2="103" y2="75"/>
00:21:21 v #24012 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="111"
00:21:21 v #24013 > > y1="424" x2="111" y2="75"/>
00:21:21 v #24014 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119"
00:21:21 v #24015 > > y1="424" x2="119" y2="75"/>
00:21:21 v #24016 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="128"
00:21:21 v #24017 > > y1="424" x2="128" y2="75"/>
00:21:21 v #24018 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="136"
00:21:21 v #24019 > > y1="424" x2="136" y2="75"/>
00:21:21 v #24020 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="144"
00:21:21 v #24021 > > y1="424" x2="144" y2="75"/>
00:21:21 v #24022 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="153"
00:21:21 v #24023 > > y1="424" x2="153" y2="75"/>
00:21:21 v #24024 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="161"
00:21:21 v #24025 > > y1="424" x2="161" y2="75"/>
00:21:21 v #24026 > > │ <line opacity="1" stroke="#... 449,326 450,324 450,323
00:21:21 v #24027 > > 451,322 452,321 453,320 454,319 455,317 455,316 456,315 457,314 458,313 459,311
00:21:21 v #24028 > > 460,310 460,309 461,308 462,306 463,305 464,304 465,303 465,301 466,300 467,299
00:21:21 v #24029 > > 468,297 469,296 470,295 470,293 471,292 472,291 473,289 474,288 475,287 475,285
00:21:21 v #24030 > > 476,284 477,283 478,281 479,280 480,278 480,277 481,276 482,274 483,273 484,271
00:21:21 v #24031 > > 485,270 485,268 486,267 487,265 488,264 489,262 490,261 490,259 491,258 492,256
00:21:21 v #24032 > > 493,255 494,253 495,252 495,250 496,249 497,247 498,246 499,244 499,242 500,241
00:21:21 v #24033 > > 501,239 502,238 503,236 504,234 504,233 505,231 506,229 507,228 508,226 509,224
00:21:21 v #24034 > > 509,223 510,221 511,219 512,218 513,216 514,214 514,213 515,211 516,209 517,207
00:21:21 v #24035 > > 518,206 519,204 519,202 520,200 521,199 522,197 523,195 524,193 524,191 525,190
00:21:21 v #24036 > > 526,188 527,186 528,184 529,182 529,180 530,179 531,177 532,175 533,173 534,171
00:21:21 v #24037 > > 534,169 535,167 536,165 537,164 538,162 539,160 539,158 540,156 541,154 542,152
00:21:21 v #24038 > > 543,150 544,148 544,146 545,144 546,142 547,140 548,138 549,136 549,134 550,132
00:21:21 v #24039 > > 551,130 552,128 553,126 554,124 554,122 555,120 556,117 557,115 558,113 559,111
00:21:21 v #24040 > > 559,109 560,107 561,105 562,103 563,101 564,98 564,96 565,94 566,92 567,90
00:21:21 v #24041 > > 568,88 569,85 "/>
00:21:21 v #24042 > > │ <rect x="497" y="235" width="83" height="30" opacity="1"
00:21:21 v #24043 > > fill="none" stroke="#FFFFFF"/>
00:21:21 v #24044 > > │ <text x="537" y="245" dy="0.76em" text-anchor="start"
00:21:21 v #24045 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1"
00:21:21 v #24046 > > fill="#FFFFFF">
00:21:21 v #24047 > > │ square
00:21:21 v #24048 > > │ </text>
00:21:21 v #24049 > > │ <polyline fill="none" opacity="1" stroke="#FF0000"
00:21:21 v #24050 > > stroke-width="1" points="507,250 527,250 "/>
00:21:21 v #24051 > > │ </svg>
00:21:21 v #24052 > > │
00:21:21 v #24053 > >
00:21:21 v #24054 > > ── [ 296.08ms - stdout ] ───────────────────────────────────────────────────────
00:21:21 v #24055 > > │ 00:00:05 d #1 runtime.execute_with_options_async / {
00:21:21 v #24056 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:21 v #24057 > > arguments = US5_1; options = { command =
00:21:21 v #24058 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:21 v #24059 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:21 v #24060 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:21 v #24061 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:21 v #24062 > > │ 00:00:05 v #2 > Creating
00:21:21 v #24063 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/7b7fc4c35397bb203cd73e7
00:21:21 v #24064 > > 1999e798459034face642d83ec40fb90a61bec926.svg
00:21:21 v #24065 > > │ 00:00:05 d #3 runtime.execute_with_options_async / {
00:21:21 v #24066 > > exit_code = 0; output_length = 134 }
00:21:21 v #24067 > > │
00:21:21 v #24068 > >
00:21:21 v #24069 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:21 v #24070 > > //// test
00:21:21 v #24071 > >
00:21:21 v #24072 > > inl x = am'.init_series -10f64 10 0.1
00:21:21 v #24073 > > inl y_sin = x |> am'.map_base sin
00:21:21 v #24074 > > inl y_cos = x |> am'.map_base cos
00:21:21 v #24075 > > "sin cos", "x", "y", ;[[ "sin", x, y_sin; "cos", x, y_cos ]]
00:21:21 v #24076 > >
00:21:21 v #24077 > > ── [ 199.36ms - return value ] ─────────────────────────────────────────────────
00:21:21 v #24078 > > │ <svg width="640" height="480" viewBox="0 0 640 480"
00:21:21 v #24079 > > xmlns="http://www.w3.org/2000/svg">
00:21:21 v #24080 > > │ <rect x="0" y="0" width="640" height="480" opacity="1"
00:21:21 v #24081 > > fill="#141414" stroke="none"/>
00:21:21 v #24082 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"
00:21:21 v #24083 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1"
00:21:21 v #24084 > > fill="#FFFFFF">
00:21:21 v #24085 > > │ sin cos
00:21:21 v #24086 > > │ </text>
00:21:21 v #24087 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="57"
00:21:21 v #24088 > > y1="424" x2="57" y2="75"/>
00:21:21 v #24089 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69"
00:21:21 v #24090 > > y1="424" x2="69" y2="75"/>
00:21:21 v #24091 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="82"
00:21:21 v #24092 > > y1="424" x2="82" y2="75"/>
00:21:21 v #24093 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="94"
00:21:21 v #24094 > > y1="424" x2="94" y2="75"/>
00:21:21 v #24095 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="107"
00:21:21 v #24096 > > y1="424" x2="107" y2="75"/>
00:21:21 v #24097 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119"
00:21:21 v #24098 > > y1="424" x2="119" y2="75"/>
00:21:21 v #24099 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="132"
00:21:21 v #24100 > > y1="424" x2="132" y2="75"/>
00:21:21 v #24101 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="144"
00:21:21 v #24102 > > y1="424" x2="144" y2="75"/>
00:21:21 v #24103 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="157"
00:21:21 v #24104 > > y1="424" x2="157" y2="75"/>
00:21:21 v #24105 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="169"
00:21:21 v #24106 > > y1="424" x2="169" y2="75"/>
00:21:21 v #24107 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="182"
00:21:21 v #24108 > > y1="424" x2="182" y2="75"/>
00:21:21 v #24109 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="194"
00:21:21 v #24110 > > y1="424" x2="194" y2="75"/>
00:21:21 v #24111 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="207"
00:21:21 v #24112 > > y1="424" x2="207" y2="75"/>
00:21:21 v #24113 > > │ <line opacity="1" stroke...55 282,238 284,222 287,206 289,190
00:21:21 v #24114 > > 292,175 294,161 297,148 299,135 302,124 304,114 307,106 309,98 312,93 314,89
00:21:21 v #24115 > > 317,86 319,85 321,86 324,89 326,93 329,98 331,106 334,114 336,124 339,135
00:21:21 v #24116 > > 341,148 344,161 346,175 349,190 351,206 354,222 356,238 359,255 361,271 364,287
00:21:21 v #24117 > > 366,303 369,319 371,333 374,347 376,360 379,371 381,382 384,391 386,399 389,405
00:21:21 v #24118 > > 391,410 394,413 396,414 399,414 401,413 404,409 406,404 409,398 411,390 414,380
00:21:21 v #24119 > > 416,370 419,358 421,345 424,331 426,316 429,301 431,285 434,268 436,252 439,236
00:21:21 v #24120 > > 441,219 444,203 446,188 449,173 451,159 454,146 456,133 459,122 461,113 464,104
00:21:21 v #24121 > > 466,97 469,92 471,88 474,86 476,85 479,86 481,89 484,94 486,99 489,107 491,116
00:21:21 v #24122 > > 494,126 496,137 499,150 501,163 504,178 506,193 509,209 511,225 514,241 516,258
00:21:21 v #24123 > > 519,274 521,290 524,306 526,321 529,335 531,349 534,362 536,373 539,384 541,392
00:21:21 v #24124 > > 544,400 546,406 549,410 551,413 554,415 556,414 559,412 561,408 564,403 566,396
00:21:21 v #24125 > > 569,388 "/>
00:21:21 v #24126 > > │ <rect x="514" y="227" width="66" height="45" opacity="1"
00:21:21 v #24127 > > fill="none" stroke="#FFFFFF"/>
00:21:21 v #24128 > > │ <text x="554" y="237" dy="0.76em" text-anchor="start"
00:21:21 v #24129 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1"
00:21:21 v #24130 > > fill="#FFFFFF">
00:21:21 v #24131 > > │ sin
00:21:21 v #24132 > > │ </text>
00:21:21 v #24133 > > │ <text x="554" y="252" dy="0.76em" text-anchor="start"
00:21:21 v #24134 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1"
00:21:21 v #24135 > > fill="#FFFFFF">
00:21:21 v #24136 > > │ cos
00:21:21 v #24137 > > │ </text>
00:21:21 v #24138 > > │ <polyline fill="none" opacity="1" stroke="#FF0000"
00:21:21 v #24139 > > stroke-width="1" points="524,242 544,242 "/>
00:21:21 v #24140 > > │ <polyline fill="none" opacity="1" stroke="#0000FF"
00:21:21 v #24141 > > stroke-width="1" points="524,257 544,257 "/>
00:21:21 v #24142 > > │ </svg>
00:21:21 v #24143 > > │
00:21:21 v #24144 > >
00:21:21 v #24145 > > ── [ 201.44ms - stdout ] ───────────────────────────────────────────────────────
00:21:21 v #24146 > > │ 00:00:05 d #4 runtime.execute_with_options_async / {
00:21:21 v #24147 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:21 v #24148 > > arguments = US5_1; options = { command =
00:21:21 v #24149 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:21 v #24150 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:21 v #24151 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:21 v #24152 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:21 v #24153 > > │ 00:00:05 v #5 > Creating
00:21:21 v #24154 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/92923048c2357a589255fc3
00:21:21 v #24155 > > a1ba8375e45c2d4a0a29d12fd266f7c935f7a46fa.svg
00:21:21 v #24156 > > │ 00:00:05 d #6 runtime.execute_with_options_async / {
00:21:21 v #24157 > > exit_code = 0; output_length = 134 }
00:21:21 v #24158 > > │
00:21:21 v #24159 > >
00:21:21 v #24160 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:21 v #24161 > > //// test
00:21:21 v #24162 > >
00:21:21 v #24163 > > inl y_pos y0 vy0 ay t =
00:21:21 v #24164 > >     y0 + vy0 * t + ay * (t |> math.square) / 2
00:21:21 v #24165 > >
00:21:21 v #24166 > > inl x = am'.init_series 0f64 5 0.01
00:21:21 v #24167 > > inl y = x |> am'.map_base (y_pos 0 20 -9.8)
00:21:21 v #24168 > > "projectile motion", "time (s)", "", ;[[ "height of projectile (m)", x, y ]]
00:21:21 v #24169 > >
00:21:21 v #24170 > > ── [ 215.13ms - return value ] ─────────────────────────────────────────────────
00:21:21 v #24171 > > │ <svg width="640" height="480" viewBox="0 0 640 480"
00:21:21 v #24172 > > xmlns="http://www.w3.org/2000/svg">
00:21:21 v #24173 > > │ <rect x="0" y="0" width="640" height="480" opacity="1"
00:21:21 v #24174 > > fill="#141414" stroke="none"/>
00:21:21 v #24175 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"
00:21:21 v #24176 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1"
00:21:21 v #24177 > > fill="#FFFFFF">
00:21:21 v #24178 > > │ projectile motion
00:21:21 v #24179 > > │ </text>
00:21:21 v #24180 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="59"
00:21:21 v #24181 > > y1="424" x2="59" y2="75"/>
00:21:21 v #24182 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69"
00:21:21 v #24183 > > y1="424" x2="69" y2="75"/>
00:21:21 v #24184 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="79"
00:21:21 v #24185 > > y1="424" x2="79" y2="75"/>
00:21:21 v #24186 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="89"
00:21:21 v #24187 > > y1="424" x2="89" y2="75"/>
00:21:21 v #24188 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="99"
00:21:21 v #24189 > > y1="424" x2="99" y2="75"/>
00:21:21 v #24190 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="109"
00:21:21 v #24191 > > y1="424" x2="109" y2="75"/>
00:21:21 v #24192 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119"
00:21:21 v #24193 > > y1="424" x2="119" y2="75"/>
00:21:21 v #24194 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="129"
00:21:21 v #24195 > > y1="424" x2="129" y2="75"/>
00:21:21 v #24196 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="139"
00:21:21 v #24197 > > y1="424" x2="139" y2="75"/>
00:21:21 v #24198 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="149"
00:21:21 v #24199 > > y1="424" x2="149" y2="75"/>
00:21:21 v #24200 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="159"
00:21:21 v #24201 > > y1="424" x2="159" y2="75"/>
00:21:21 v #24202 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="169"
00:21:21 v #24203 > > y1="424" x2="169" y2="75"/>
00:21:21 v #24204 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="179"
00:21:21 v #24205 > > y1="424" x2="179" y2="75"/>
00:21:21 v #24206 > > │ <line opacity="1...28,176 429,177 430,178 431,179 432,180
00:21:21 v #24207 > > 433,182 434,183 435,184 436,185 437,186 438,188 439,189 440,190 441,191 442,193
00:21:21 v #24208 > > 443,194 444,195 445,197 446,198 447,199 448,200 449,202 450,203 451,204 452,206
00:21:21 v #24209 > > 453,207 454,208 455,210 456,211 457,213 458,214 459,215 460,217 461,218 462,220
00:21:21 v #24210 > > 463,221 464,222 465,224 466,225 467,227 468,228 469,230 470,231 471,233 472,234
00:21:21 v #24211 > > 473,236 474,237 475,239 476,240 477,242 478,243 479,245 480,246 481,248 482,249
00:21:21 v #24212 > > 483,251 484,253 485,254 486,256 487,257 488,259 489,261 490,262 491,264 492,266
00:21:21 v #24213 > > 493,267 494,269 495,271 496,272 497,274 498,276 499,277 500,279 501,281 502,282
00:21:21 v #24214 > > 503,284 504,286 505,288 506,289 507,291 508,293 509,295 510,296 511,298 512,300
00:21:21 v #24215 > > 513,302 514,304 515,305 516,307 517,309 518,311 519,313 520,315 521,316 522,318
00:21:21 v #24216 > > 523,320 524,322 525,324 526,326 527,328 528,330 529,332 530,334 531,335 532,337
00:21:21 v #24217 > > 533,339 534,341 535,343 536,345 537,347 538,349 539,351 540,353 541,355 542,357
00:21:21 v #24218 > > 543,359 544,361 545,363 546,365 547,367 548,370 549,372 550,374 551,376 552,378
00:21:21 v #24219 > > 553,380 554,382 555,384 556,386 557,388 558,391 559,393 560,395 561,397 562,399
00:21:21 v #24220 > > 563,401 564,404 565,406 566,408 567,410 568,412 569,415 "/>
00:21:21 v #24221 > > │ <rect x="399" y="235" width="181" height="30" opacity="1"
00:21:21 v #24222 > > fill="none" stroke="#FFFFFF"/>
00:21:21 v #24223 > > │ <text x="439" y="245" dy="0.76em" text-anchor="start"
00:21:21 v #24224 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1"
00:21:21 v #24225 > > fill="#FFFFFF">
00:21:21 v #24226 > > │ height of projectile (m)
00:21:21 v #24227 > > │ </text>
00:21:21 v #24228 > > │ <polyline fill="none" opacity="1" stroke="#FF0000"
00:21:21 v #24229 > > stroke-width="1" points="409,250 429,250 "/>
00:21:21 v #24230 > > │ </svg>
00:21:21 v #24231 > > │
00:21:21 v #24232 > >
00:21:21 v #24233 > > ── [ 216.99ms - stdout ] ───────────────────────────────────────────────────────
00:21:21 v #24234 > > │ 00:00:05 d #7 runtime.execute_with_options_async / {
00:21:21 v #24235 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:21 v #24236 > > arguments = US5_1; options = { command =
00:21:21 v #24237 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:21 v #24238 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:21 v #24239 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:21 v #24240 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:21 v #24241 > > │ 00:00:05 v #8 > Creating
00:21:21 v #24242 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/9ba10ae80d4645862b925ee
00:21:21 v #24243 > > 46c6c11acaddaeeaef0ca08c6bf4f906b08df5b19.svg
00:21:21 v #24244 > > │ 00:00:05 d #9 runtime.execute_with_options_async / {
00:21:21 v #24245 > > exit_code = 0; output_length = 134 }
00:21:21 v #24246 > > │
00:21:21 v #24247 > >
00:21:21 v #24248 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:21 v #24249 > > │ ### velocity_cf
00:21:21 v #24250 > >
00:21:21 v #24251 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:21 v #24252 > > type mass = f64
00:21:21 v #24253 > > type time = f64
00:21:21 v #24254 > > type position = f64
00:21:21 v #24255 > > type velocity = f64
00:21:21 v #24256 > > type force = f64
00:21:21 v #24257 > >
00:21:21 v #24258 > > type velocity_cf = mass -> velocity -> list force -> (time -> velocity)
00:21:21 v #24259 > >
00:21:21 v #24260 > > inl velocity_cf m v0 fs =
00:21:21 v #24261 > >     inl f_net = fs |> listm'.sum
00:21:21 v #24262 > >     inl a0 = f_net / m
00:21:21 v #24263 > >     inl v t = v0 + a0 * t
00:21:21 v #24264 > >     v
00:21:21 v #24265 > >
00:21:21 v #24266 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:21 v #24267 > > //// test
00:21:21 v #24268 > >
00:21:21 v #24269 > > velocity_cf 0.1f64 0.6 [[ 0.04; -0.08 ]] 0
00:21:21 v #24270 > > |> _assert_eq 0.6
00:21:21 v #24271 > >
00:21:21 v #24272 > > velocity_cf 0.1f64 0.6 [[ 0.04; -0.08 ]] 1
00:21:21 v #24273 > > |> _assert_eq 0.2
00:21:21 v #24274 > >
00:21:21 v #24275 > > ── [ 176.40ms - stdout ] ───────────────────────────────────────────────────────
00:21:21 v #24276 > > │ __assert_eq / actual: 0.6 / expected: 0.6
00:21:21 v #24277 > > │ __assert_eq / actual: 0.2 / expected: 0.2
00:21:21 v #24278 > > │
00:21:22 v #24279 > >
00:21:22 v #24280 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:22 v #24281 > > //// test
00:21:22 v #24282 > >
00:21:22 v #24283 > > inl x = am'.init_series 0f64 4 0.1
00:21:22 v #24284 > > inl y = x |> am'.map_base (velocity_cf 0.1f64 0.6 [[ 0.04; -0.08 ]])
00:21:22 v #24285 > > "car on an air track", "time (s)", "", ;[[ "velocity of car (m/s)", x, y ]]
00:21:22 v #24286 > >
00:21:22 v #24287 > > ── [ 185.00ms - return value ] ─────────────────────────────────────────────────
00:21:22 v #24288 > > │ <svg width="640" height="480" viewBox="0 0 640 480"
00:21:22 v #24289 > > xmlns="http://www.w3.org/2000/svg">
00:21:22 v #24290 > > │ <rect x="0" y="0" width="640" height="480" opacity="1"
00:21:22 v #24291 > > fill="#141414" stroke="none"/>
00:21:22 v #24292 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"
00:21:22 v #24293 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1"
00:21:22 v #24294 > > fill="#FFFFFF">
00:21:22 v #24295 > > │ car on an air track
00:21:22 v #24296 > > │ </text>
00:21:22 v #24297 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="57"
00:21:22 v #24298 > > y1="424" x2="57" y2="75"/>
00:21:22 v #24299 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69"
00:21:22 v #24300 > > y1="424" x2="69" y2="75"/>
00:21:22 v #24301 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="82"
00:21:22 v #24302 > > y1="424" x2="82" y2="75"/>
00:21:22 v #24303 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="94"
00:21:22 v #24304 > > y1="424" x2="94" y2="75"/>
00:21:22 v #24305 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="107"
00:21:22 v #24306 > > y1="424" x2="107" y2="75"/>
00:21:22 v #24307 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119"
00:21:22 v #24308 > > y1="424" x2="119" y2="75"/>
00:21:22 v #24309 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="132"
00:21:22 v #24310 > > y1="424" x2="132" y2="75"/>
00:21:22 v #24311 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="144"
00:21:22 v #24312 > > y1="424" x2="144" y2="75"/>
00:21:22 v #24313 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="157"
00:21:22 v #24314 > > y1="424" x2="157" y2="75"/>
00:21:22 v #24315 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="169"
00:21:22 v #24316 > > y1="424" x2="169" y2="75"/>
00:21:22 v #24317 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="182"
00:21:22 v #24318 > > y1="424" x2="182" y2="75"/>
00:21:22 v #24319 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="194"
00:21:22 v #24320 > > y1="424" x2="194" y2="75"/>
00:21:22 v #24321 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="207"
00:21:22 v #24322 > > y1="424" x2="207" y2="75"/>
00:21:22 v #24323 > > │ <line opacit...85,209 590,209 "/>
00:21:22 v #24324 > > │ <text x="617" y="168" dy="0.5ex" text-anchor="end"
00:21:22 v #24325 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1"
00:21:22 v #24326 > > fill="#FFFFFF">
00:21:22 v #24327 > > │ 0.2
00:21:22 v #24328 > > │ </text>
00:21:22 v #24329 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF"
00:21:22 v #24330 > > stroke-width="1" points="585,168 590,168 "/>
00:21:22 v #24331 > > │ <text x="617" y="127" dy="0.5ex" text-anchor="end"
00:21:22 v #24332 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1"
00:21:22 v #24333 > > fill="#FFFFFF">
00:21:22 v #24334 > > │ 0.4
00:21:22 v #24335 > > │ </text>
00:21:22 v #24336 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF"
00:21:22 v #24337 > > stroke-width="1" points="585,127 590,127 "/>
00:21:22 v #24338 > > │ <text x="617" y="85" dy="0.5ex" text-anchor="end"
00:21:22 v #24339 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1"
00:21:22 v #24340 > > fill="#FFFFFF">
00:21:22 v #24341 > > │ 0.6
00:21:22 v #24342 > > │ </text>
00:21:22 v #24343 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF"
00:21:22 v #24344 > > stroke-width="1" points="585,85 590,85 "/>
00:21:22 v #24345 > > │ <polyline fill="none" opacity="1" stroke="#FF0000"
00:21:22 v #24346 > > stroke-width="1" points="69,85 82,94 94,102 107,110 119,118 132,127 144,135
00:21:22 v #24347 > > 157,143 169,151 182,159 194,168 207,176 219,184 232,192 244,201 257,209 269,217
00:21:22 v #24348 > > 282,225 294,234 307,242 319,250 331,258 344,266 356,275 369,283 381,291 394,299
00:21:22 v #24349 > > 406,308 419,316 431,324 444,332 456,341 469,349 481,357 494,365 506,373 519,382
00:21:22 v #24350 > > 531,390 544,398 556,406 569,415 "/>
00:21:22 v #24351 > > │ <rect x="415" y="235" width="165" height="30" opacity="1"
00:21:22 v #24352 > > fill="none" stroke="#FFFFFF"/>
00:21:22 v #24353 > > │ <text x="455" y="245" dy="0.76em" text-anchor="start"
00:21:22 v #24354 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1"
00:21:22 v #24355 > > fill="#FFFFFF">
00:21:22 v #24356 > > │ velocity of car (m/s)
00:21:22 v #24357 > > │ </text>
00:21:22 v #24358 > > │ <polyline fill="none" opacity="1" stroke="#FF0000"
00:21:22 v #24359 > > stroke-width="1" points="425,250 445,250 "/>
00:21:22 v #24360 > > │ </svg>
00:21:22 v #24361 > > │
00:21:22 v #24362 > >
00:21:22 v #24363 > > ── [ 194.43ms - stdout ] ───────────────────────────────────────────────────────
00:21:22 v #24364 > > │ 00:00:06 d #10 runtime.execute_with_options_async / {
00:21:22 v #24365 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:22 v #24366 > > arguments = US5_1; options = { command =
00:21:22 v #24367 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:22 v #24368 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:22 v #24369 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:22 v #24370 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:22 v #24371 > > │ 00:00:06 v #11 > Creating
00:21:22 v #24372 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/ca28324d0914f6213d0165a
00:21:22 v #24373 > > e9c1e93d26d3b9e674acc73e0947a72dfaf617897.svg
00:21:22 v #24374 > > │ 00:00:06 d #12 runtime.execute_with_options_async / {
00:21:22 v #24375 > > exit_code = 0; output_length = 134 }
00:21:22 v #24376 > > │
00:21:22 v #24377 > >
00:21:22 v #24378 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:22 v #24379 > > │ ### derivative
00:21:22 v #24380 > >
00:21:22 v #24381 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:22 v #24382 > > type derivative = (f64 -> f64) -> f64 -> f64
00:21:22 v #24383 > >
00:21:22 v #24384 > > inl derivative dt : derivative =
00:21:22 v #24385 > >     fun x t =>
00:21:22 v #24386 > >         (x (t + dt / 2) - x (t - dt / 2)) / dt
00:21:22 v #24387 > >
00:21:22 v #24388 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:22 v #24389 > > //// test
00:21:22 v #24390 > >
00:21:22 v #24391 > > derivative 1 (fun x => x ** 4 / 4) 1 - 1
00:21:22 v #24392 > > |> _assert_approx_eq None 0.25
00:21:22 v #24393 > >
00:21:22 v #24394 > > derivative 0.001 (fun x => x ** 4 / 4) 1 - 1
00:21:22 v #24395 > > |> _assert_approx_eq None 0.0000002499998827953931
00:21:22 v #24396 > >
00:21:22 v #24397 > > derivative 0.000001 (fun x => x ** 4 / 4) 1 - 1
00:21:22 v #24398 > > |> _assert_approx_eq None 0.000000000001000088900582341
00:21:22 v #24399 > >
00:21:22 v #24400 > > derivative 0.000000001 (fun x => x ** 4 / 4) 1 - 1
00:21:22 v #24401 > > |> _assert_approx_eq None 0.00000008274037099909037
00:21:22 v #24402 > >
00:21:22 v #24403 > > derivative 0.000000000001 (fun x => x ** 4 / 4) 1 - 1
00:21:22 v #24404 > > |> _assert_approx_eq None 0.00008890058234101161
00:21:22 v #24405 > >
00:21:22 v #24406 > > derivative 0.000000000000001 (fun x => x ** 4 / 4) 1 - 1
00:21:22 v #24407 > > |> _assert_approx_eq None -0.0007992778373592246
00:21:22 v #24408 > >
00:21:22 v #24409 > > derivative 0.000000000000000001 (fun x => x ** 4 / 4) 1 - 1
00:21:22 v #24410 > > |> _assert_approx_eq None -1
00:21:22 v #24411 > >
00:21:22 v #24412 > > ── [ 178.88ms - stdout ] ───────────────────────────────────────────────────────
00:21:22 v #24413 > > │ __assert_approx_eq / actual: 0.25 / expected: 0.25
00:21:22 v #24414 > > │ __assert_approx_eq / actual: 2.499998828e-07 / expected:
00:21:22 v #24415 > > 2.499998828e-07
00:21:22 v #24416 > > │ __assert_approx_eq / actual: 1.000088901e-12 / expected:
00:21:22 v #24417 > > 1.000088901e-12
00:21:22 v #24418 > > │ __assert_approx_eq / actual: 8.2740371e-08 / expected:
00:21:22 v #24419 > > 8.2740371e-08
00:21:22 v #24420 > > │ __assert_approx_eq / actual: 8.890058234e-05 / expected:
00:21:22 v #24421 > > 8.890058234e-05
00:21:22 v #24422 > > │ __assert_approx_eq / actual: -0.0007992778374 / expected:
00:21:22 v #24423 > > -0.0007992778374
00:21:22 v #24424 > > │ __assert_approx_eq / actual: -1.0 / expected: -1.0
00:21:22 v #24425 > > │
00:21:22 v #24426 > >
00:21:22 v #24427 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:22 v #24428 > > │ ### integration
00:21:22 v #24429 > >
00:21:22 v #24430 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:22 v #24431 > > type integration = (f64 -> f64) -> f64 -> f64 -> f64
00:21:22 v #24432 > >
00:21:22 v #24433 > > inl integral dt : integration =
00:21:22 v #24434 > >     fun f a b =>
00:21:22 v #24435 > >         inl rec loop t y =
00:21:22 v #24436 > >             if t < b
00:21:22 v #24437 > >             then loop (t + dt) (y + f t * dt)
00:21:22 v #24438 > >             else t, y
00:21:22 v #24439 > >         loop (a + dt / 2) 0
00:21:22 v #24440 > >         |> snd
00:21:22 v #24441 > >
00:21:22 v #24442 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:22 v #24443 > > //// test
00:21:22 v #24444 > >
00:21:22 v #24445 > > integral 0.01 math.square 0 1
00:21:22 v #24446 > > |> _assert_approx_eq None 0.33332500000000004
00:21:22 v #24447 > >
00:21:22 v #24448 > > ── [ 167.42ms - stdout ] ───────────────────────────────────────────────────────
00:21:22 v #24449 > > │ __assert_approx_eq / actual: 0.333325 / expected: 0.333325
00:21:22 v #24450 > > │
00:21:22 v #24451 > >
00:21:22 v #24452 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:22 v #24453 > > inl integral' dt : integration =
00:21:22 v #24454 > >     fun f a b =>
00:21:22 v #24455 > >         listm'.init_series (a + dt / 2) (b - dt / 2) dt
00:21:22 v #24456 > >         |> listm.map (f >> (*) dt)
00:21:22 v #24457 > >         |> listm'.sum
00:21:22 v #24458 > >
00:21:22 v #24459 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:22 v #24460 > > //// test
00:21:22 v #24461 > >
00:21:22 v #24462 > > integral' 0.1 math.square 0 1
00:21:22 v #24463 > > |> _assert_approx_eq None (integral 0.1 math.square 0 1)
00:21:23 v #24464 > >
00:21:23 v #24465 > > ── [ 155.29ms - stdout ] ───────────────────────────────────────────────────────
00:21:23 v #24466 > > │ __assert_approx_eq / actual: 0.3325 / expected: 0.3325
00:21:23 v #24467 > > │
00:21:23 v #24468 > >
00:21:23 v #24469 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:23 v #24470 > > inl integral'' dt : integration =
00:21:23 v #24471 > >     fun f x y =>
00:21:23 v #24472 > >         am'.init_series (x + dt / 2) (y - dt / 2) dt
00:21:23 v #24473 > >         |> fun x => a x : _ int _
00:21:23 v #24474 > >         |> am.map (f >> (*) dt)
00:21:23 v #24475 > >         |> am'.sum
00:21:23 v #24476 > >
00:21:23 v #24477 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:23 v #24478 > > //// test
00:21:23 v #24479 > >
00:21:23 v #24480 > > integral'' 0.01 math.square 0 1
00:21:23 v #24481 > > |> _assert_approx_eq None (integral 0.01 math.square 0 1)
00:21:23 v #24482 > >
00:21:23 v #24483 > > ── [ 225.83ms - stdout ] ───────────────────────────────────────────────────────
00:21:23 v #24484 > > │ __assert_approx_eq / actual: 0.333325 / expected: 0.333325
00:21:23 v #24485 > > │
00:21:23 v #24486 > >
00:21:23 v #24487 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:23 v #24488 > > │ ### anti_derivative
00:21:23 v #24489 > >
00:21:23 v #24490 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:23 v #24491 > > inl anti_derivative dt v0 a t =
00:21:23 v #24492 > >     v0 + integral' dt a 0 t
00:21:23 v #24493 > >
00:21:23 v #24494 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:23 v #24495 > > │ ### velocity_ft
00:21:23 v #24496 > >
00:21:23 v #24497 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:23 v #24498 > > type velocity_ft = mass -> velocity -> list (time -> force) -> (time ->
00:21:23 v #24499 > > velocity)
00:21:23 v #24500 > >
00:21:23 v #24501 > > inl velocity_ft dt : velocity_ft =
00:21:23 v #24502 > >     fun m v0 fs =>
00:21:23 v #24503 > >         inl f_net t = fs |> listm.map (fun f => f t) |> listm'.sum
00:21:23 v #24504 > >         inl a t = f_net t / m
00:21:23 v #24505 > >         anti_derivative dt v0 a
00:21:23 v #24506 > >
00:21:23 v #24507 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:23 v #24508 > > │ ### position_ft
00:21:23 v #24509 > >
00:21:23 v #24510 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:23 v #24511 > > type position_ft = mass -> position -> velocity -> list (time -> force) -> (time
00:21:23 v #24512 > > -> position)
00:21:23 v #24513 > >
00:21:23 v #24514 > > inl position_ft dt : position_ft =
00:21:23 v #24515 > >     fun m x0 v0 fs =>
00:21:23 v #24516 > >         velocity_ft dt m v0 fs
00:21:23 v #24517 > >         |> anti_derivative dt x0
00:21:24 v #24518 > >
00:21:24 v #24519 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:24 v #24520 > > //// test
00:21:24 v #24521 > >
00:21:24 v #24522 > > inl pedal_coast (t : time) : force =
00:21:24 v #24523 > >     inl t_cycle = 20
00:21:24 v #24524 > >     inl n_complete : i32 = t / t_cycle |> conv
00:21:24 v #24525 > >     inl remainder = t - conv n_complete * t_cycle
00:21:24 v #24526 > >     if remainder > 0 && remainder < 10
00:21:24 v #24527 > >     then 10
00:21:24 v #24528 > >     else 0
00:21:24 v #24529 > >
00:21:24 v #24530 > > inl x = am'.init_series -5f64 45 0.1
00:21:24 v #24531 > > inl y = x |> am'.map_base pedal_coast
00:21:24 v #24532 > > "child pedaling then coasting", "time (s)", "", ;[[ "force on bike (N)", x, y ]]
00:21:24 v #24533 > >
00:21:24 v #24534 > > ── [ 169.24ms - return value ] ─────────────────────────────────────────────────
00:21:24 v #24535 > > │ <svg width="640" height="480" viewBox="0 0 640 480"
00:21:24 v #24536 > > xmlns="http://www.w3.org/2000/svg">
00:21:24 v #24537 > > │ <rect x="0" y="0" width="640" height="480" opacity="1"
00:21:24 v #24538 > > fill="#141414" stroke="none"/>
00:21:24 v #24539 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"
00:21:24 v #24540 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1"
00:21:24 v #24541 > > fill="#FFFFFF">
00:21:24 v #24542 > > │ child pedaling then coasting
00:21:24 v #24543 > > │ </text>
00:21:24 v #24544 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="59"
00:21:24 v #24545 > > y1="424" x2="59" y2="75"/>
00:21:24 v #24546 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69"
00:21:24 v #24547 > > y1="424" x2="69" y2="75"/>
00:21:24 v #24548 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="79"
00:21:24 v #24549 > > y1="424" x2="79" y2="75"/>
00:21:24 v #24550 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="89"
00:21:24 v #24551 > > y1="424" x2="89" y2="75"/>
00:21:24 v #24552 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="99"
00:21:24 v #24553 > > y1="424" x2="99" y2="75"/>
00:21:24 v #24554 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="109"
00:21:24 v #24555 > > y1="424" x2="109" y2="75"/>
00:21:24 v #24556 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119"
00:21:24 v #24557 > > y1="424" x2="119" y2="75"/>
00:21:24 v #24558 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="129"
00:21:24 v #24559 > > y1="424" x2="129" y2="75"/>
00:21:24 v #24560 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="139"
00:21:24 v #24561 > > y1="424" x2="139" y2="75"/>
00:21:24 v #24562 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="149"
00:21:24 v #24563 > > y1="424" x2="149" y2="75"/>
00:21:24 v #24564 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="159"
00:21:24 v #24565 > > y1="424" x2="159" y2="75"/>
00:21:24 v #24566 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="169"
00:21:24 v #24567 > > y1="424" x2="169" y2="75"/>
00:21:24 v #24568 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="179"
00:21:24 v #24569 > > y1="424" x2="179" y2="75"/>
00:21:24 v #24570 > > │ <line...421,415 422,415 423,415 424,415 425,415 426,415
00:21:24 v #24571 > > 427,415 428,415 429,415 430,415 431,415 432,415 433,415 434,415 435,415 436,415
00:21:24 v #24572 > > 437,415 438,415 439,415 440,415 441,415 442,415 443,415 444,415 445,415 446,415
00:21:24 v #24573 > > 447,415 448,415 449,415 450,415 451,415 452,415 453,415 454,415 455,415 456,415
00:21:24 v #24574 > > 457,415 458,415 459,415 460,415 461,415 462,415 463,415 464,415 465,415 466,415
00:21:24 v #24575 > > 467,415 468,415 469,415 470,415 471,415 472,415 473,415 474,415 475,415 476,415
00:21:24 v #24576 > > 477,415 478,415 479,415 480,415 481,415 482,415 483,415 484,415 485,415 486,415
00:21:24 v #24577 > > 487,415 488,415 489,415 490,415 491,415 492,415 493,415 494,415 495,415 496,415
00:21:24 v #24578 > > 497,415 498,415 499,415 500,415 501,415 502,415 503,415 504,415 505,415 506,415
00:21:24 v #24579 > > 507,415 508,415 509,415 510,415 511,415 512,415 513,415 514,415 515,415 516,415
00:21:24 v #24580 > > 517,415 518,415 519,415 520,85 521,85 522,85 523,85 524,85 525,85 526,85 527,85
00:21:24 v #24581 > > 528,85 529,85 530,85 531,85 532,85 533,85 534,85 535,85 536,85 537,85 538,85
00:21:24 v #24582 > > 539,85 540,85 541,85 542,85 543,85 544,85 545,85 546,85 547,85 548,85 549,85
00:21:24 v #24583 > > 550,85 551,85 552,85 553,85 554,85 555,85 556,85 557,85 558,85 559,85 560,85
00:21:24 v #24584 > > 561,85 562,85 563,85 564,85 565,85 566,85 567,85 568,85 569,85 "/>
00:21:24 v #24585 > > │ <rect x="437" y="235" width="143" height="30" opacity="1"
00:21:24 v #24586 > > fill="none" stroke="#FFFFFF"/>
00:21:24 v #24587 > > │ <text x="477" y="245" dy="0.76em" text-anchor="start"
00:21:24 v #24588 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1"
00:21:24 v #24589 > > fill="#FFFFFF">
00:21:24 v #24590 > > │ force on bike (N)
00:21:24 v #24591 > > │ </text>
00:21:24 v #24592 > > │ <polyline fill="none" opacity="1" stroke="#FF0000"
00:21:24 v #24593 > > stroke-width="1" points="447,250 467,250 "/>
00:21:24 v #24594 > > │ </svg>
00:21:24 v #24595 > > │
00:21:24 v #24596 > >
00:21:24 v #24597 > > ── [ 171.44ms - stdout ] ───────────────────────────────────────────────────────
00:21:24 v #24598 > > │ 00:00:08 d #13 runtime.execute_with_options_async / {
00:21:24 v #24599 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:24 v #24600 > > arguments = US5_1; options = { command =
00:21:24 v #24601 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:24 v #24602 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:24 v #24603 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:24 v #24604 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:24 v #24605 > > │ 00:00:08 v #14 > Creating
00:21:24 v #24606 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/0ac10ed4fc31e5733d3eadb
00:21:24 v #24607 > > bffbf047568e7cb8eed5922ef2828dbad94721326.svg
00:21:24 v #24608 > > │ 00:00:08 d #15 runtime.execute_with_options_async / {
00:21:24 v #24609 > > exit_code = 0; output_length = 134 }
00:21:24 v #24610 > > │
00:21:24 v #24611 > >
00:21:24 v #24612 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:24 v #24613 > > //// test
00:21:24 v #24614 > >
00:21:24 v #24615 > > inl x = am'.init_series -5 45 1
00:21:24 v #24616 > > inl y = x |> am'.map_base (position_ft 0.1f64 20 0 0 [[ pedal_coast ]])
00:21:24 v #24617 > > "child pedaling then coasting", "time (s)", "", ;[[ "position of bike (m)", x, y
00:21:24 v #24618 > > ]]
00:21:24 v #24619 > >
00:21:24 v #24620 > > ── [ 400.17ms - return value ] ─────────────────────────────────────────────────
00:21:24 v #24621 > > │ <svg width="640" height="480" viewBox="0 0 640 480"
00:21:24 v #24622 > > xmlns="http://www.w3.org/2000/svg">
00:21:24 v #24623 > > │ <rect x="0" y="0" width="640" height="480" opacity="1"
00:21:24 v #24624 > > fill="#141414" stroke="none"/>
00:21:24 v #24625 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"
00:21:24 v #24626 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1"
00:21:24 v #24627 > > fill="#FFFFFF">
00:21:24 v #24628 > > │ child pedaling then coasting
00:21:24 v #24629 > > │ </text>
00:21:24 v #24630 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="59"
00:21:24 v #24631 > > y1="424" x2="59" y2="75"/>
00:21:24 v #24632 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69"
00:21:24 v #24633 > > y1="424" x2="69" y2="75"/>
00:21:24 v #24634 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="79"
00:21:24 v #24635 > > y1="424" x2="79" y2="75"/>
00:21:24 v #24636 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="89"
00:21:24 v #24637 > > y1="424" x2="89" y2="75"/>
00:21:24 v #24638 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="99"
00:21:24 v #24639 > > y1="424" x2="99" y2="75"/>
00:21:24 v #24640 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="109"
00:21:24 v #24641 > > y1="424" x2="109" y2="75"/>
00:21:24 v #24642 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119"
00:21:24 v #24643 > > y1="424" x2="119" y2="75"/>
00:21:24 v #24644 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="129"
00:21:24 v #24645 > > y1="424" x2="129" y2="75"/>
00:21:24 v #24646 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="139"
00:21:24 v #24647 > > y1="424" x2="139" y2="75"/>
00:21:24 v #24648 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="149"
00:21:24 v #24649 > > y1="424" x2="149" y2="75"/>
00:21:24 v #24650 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="159"
00:21:24 v #24651 > > y1="424" x2="159" y2="75"/>
00:21:24 v #24652 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="169"
00:21:24 v #24653 > > y1="424" x2="169" y2="75"/>
00:21:24 v #24654 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="179"
00:21:24 v #24655 > > y1="424" x2="179" y2="75"/>
00:21:24 v #24656 > > │ <line...serif" font-size="9.67741935483871" opacity="1"
00:21:24 v #24657 > > fill="#FFFFFF">
00:21:24 v #24658 > > │ 200.0
00:21:24 v #24659 > > │ </text>
00:21:24 v #24660 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF"
00:21:24 v #24661 > > stroke-width="1" points="585,201 590,201 "/>
00:21:24 v #24662 > > │ <text x="595" y="147" dy="0.5ex" text-anchor="start"
00:21:24 v #24663 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1"
00:21:24 v #24664 > > fill="#FFFFFF">
00:21:24 v #24665 > > │ 250.0
00:21:24 v #24666 > > │ </text>
00:21:24 v #24667 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF"
00:21:24 v #24668 > > stroke-width="1" points="585,147 590,147 "/>
00:21:24 v #24669 > > │ <text x="595" y="94" dy="0.5ex" text-anchor="start"
00:21:24 v #24670 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1"
00:21:24 v #24671 > > fill="#FFFFFF">
00:21:24 v #24672 > > │ 300.0
00:21:24 v #24673 > > │ </text>
00:21:24 v #24674 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF"
00:21:24 v #24675 > > stroke-width="1" points="585,94 590,94 "/>
00:21:24 v #24676 > > │ <polyline fill="none" opacity="1" stroke="#FF0000"
00:21:24 v #24677 > > stroke-width="1" points="69,415 79,415 89,415 99,415 109,415 119,415 129,414
00:21:24 v #24678 > > 139,413 149,412 159,410 169,408 179,405 189,401 199,397 209,393 219,388 229,382
00:21:24 v #24679 > > 239,377 249,372 259,366 269,361 279,356 289,350 299,345 309,340 319,334 329,329
00:21:24 v #24680 > > 339,322 349,316 359,308 369,301 379,292 389,284 399,274 409,264 419,254 429,243
00:21:24 v #24681 > > 439,232 449,221 459,210 469,199 479,189 489,178 499,167 509,157 519,146 529,135
00:21:24 v #24682 > > 539,123 549,111 559,99 569,85 "/>
00:21:24 v #24683 > > │ <rect x="421" y="235" width="159" height="30" opacity="1"
00:21:24 v #24684 > > fill="none" stroke="#FFFFFF"/>
00:21:24 v #24685 > > │ <text x="461" y="245" dy="0.76em" text-anchor="start"
00:21:24 v #24686 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1"
00:21:24 v #24687 > > fill="#FFFFFF">
00:21:24 v #24688 > > │ position of bike (m)
00:21:24 v #24689 > > │ </text>
00:21:24 v #24690 > > │ <polyline fill="none" opacity="1" stroke="#FF0000"
00:21:24 v #24691 > > stroke-width="1" points="431,250 451,250 "/>
00:21:24 v #24692 > > │ </svg>
00:21:24 v #24693 > > │
00:21:24 v #24694 > >
00:21:24 v #24695 > > ── [ 401.97ms - stdout ] ───────────────────────────────────────────────────────
00:21:24 v #24696 > > │ 00:00:08 d #16 runtime.execute_with_options_async / {
00:21:24 v #24697 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:24 v #24698 > > arguments = US5_1; options = { command =
00:21:24 v #24699 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:24 v #24700 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:24 v #24701 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:24 v #24702 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:24 v #24703 > > │ 00:00:08 v #17 > Creating
00:21:24 v #24704 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/111e334258a3fc6398b55a8
00:21:24 v #24705 > > d561905d49cd0648a39dd06c1856b1cb0e8a9546c.svg
00:21:24 v #24706 > > │ 00:00:08 d #18 runtime.execute_with_options_async / {
00:21:24 v #24707 > > exit_code = 0; output_length = 134 }
00:21:24 v #24708 > > │
00:21:24 v #24709 > >
00:21:24 v #24710 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:24 v #24711 > > │ ### velocity_fv
00:21:24 v #24712 > >
00:21:24 v #24713 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:24 v #24714 > > inl newton_second_v m fs v0 =
00:21:24 v #24715 > >     fs |> listm.map (fun f => f v0) |> listm'.sum |> fun x => x / m
00:21:24 v #24716 > >
00:21:24 v #24717 > > inl update_velocity dt m fs v0 =
00:21:24 v #24718 > >     v0 + newton_second_v m fs v0 * dt
00:21:24 v #24719 > >
00:21:24 v #24720 > > inl velocity_fv dt m v0 fs t =
00:21:24 v #24721 > >     stream.iterate (update_velocity dt m fs) v0
00:21:24 v #24722 > >     |> stream.try_item (t / dt |> math.round |> abs)
00:21:24 v #24723 > >     |> optionm'.default_value 0
00:21:24 v #24724 > >
00:21:24 v #24725 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:24 v #24726 > > inl f_air drag rho area v =
00:21:24 v #24727 > >     -drag * rho * area * abs v * v / 2
00:21:24 v #24728 > >
00:21:24 v #24729 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:24 v #24730 > > //// test
00:21:24 v #24731 > >
00:21:24 v #24732 > > inl x = am'.init_series 0 60 0.5
00:21:24 v #24733 > > inl y = x |> am'.map_base (velocity_fv 1 70 0f64 [[ fun _ => 100; f_air 2 1.225
00:21:24 v #24734 > > 0.6 ]])
00:21:24 v #24735 > > "bike velocity", "time (s)", "", ;[[ "velocity of bike (m/s)", x, y ]]
00:21:25 v #24736 > >
00:21:25 v #24737 > > ── [ 507.49ms - return value ] ─────────────────────────────────────────────────
00:21:25 v #24738 > > │ <svg width="640" height="480" viewBox="0 0 640 480"
00:21:25 v #24739 > > xmlns="http://www.w3.org/2000/svg">
00:21:25 v #24740 > > │ <rect x="0" y="0" width="640" height="480" opacity="1"
00:21:25 v #24741 > > fill="#141414" stroke="none"/>
00:21:25 v #24742 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"
00:21:25 v #24743 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1"
00:21:25 v #24744 > > fill="#FFFFFF">
00:21:25 v #24745 > > │ bike velocity
00:21:25 v #24746 > > │ </text>
00:21:25 v #24747 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="61"
00:21:25 v #24748 > > y1="424" x2="61" y2="75"/>
00:21:25 v #24749 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69"
00:21:25 v #24750 > > y1="424" x2="69" y2="75"/>
00:21:25 v #24751 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="78"
00:21:25 v #24752 > > y1="424" x2="78" y2="75"/>
00:21:25 v #24753 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="86"
00:21:25 v #24754 > > y1="424" x2="86" y2="75"/>
00:21:25 v #24755 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="94"
00:21:25 v #24756 > > y1="424" x2="94" y2="75"/>
00:21:25 v #24757 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="103"
00:21:25 v #24758 > > y1="424" x2="103" y2="75"/>
00:21:25 v #24759 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="111"
00:21:25 v #24760 > > y1="424" x2="111" y2="75"/>
00:21:25 v #24761 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119"
00:21:25 v #24762 > > y1="424" x2="119" y2="75"/>
00:21:25 v #24763 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="128"
00:21:25 v #24764 > > y1="424" x2="128" y2="75"/>
00:21:25 v #24765 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="136"
00:21:25 v #24766 > > y1="424" x2="136" y2="75"/>
00:21:25 v #24767 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="144"
00:21:25 v #24768 > > y1="424" x2="144" y2="75"/>
00:21:25 v #24769 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="153"
00:21:25 v #24770 > > y1="424" x2="153" y2="75"/>
00:21:25 v #24771 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="161"
00:21:25 v #24772 > > y1="424" x2="161" y2="75"/>
00:21:25 v #24773 > > │ <line opacity="1" st...t" font-family="sans-serif"
00:21:25 v #24774 > > font-size="9.67741935483871" opacity="1" fill="#FFFFFF">
00:21:25 v #24775 > > │ 12.0
00:21:25 v #24776 > > │ </text>
00:21:25 v #24777 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF"
00:21:25 v #24778 > > stroke-width="1" points="585,76 590,76 "/>
00:21:25 v #24779 > > │ <polyline fill="none" opacity="1" stroke="#FF0000"
00:21:25 v #24780 > > stroke-width="1" points="69,415 74,415 78,374 82,335 86,335 90,335 94,297 99,261
00:21:25 v #24781 > > 103,261 107,261 111,230 115,202 119,202 124,202 128,179 132,159 136,159 140,159
00:21:25 v #24782 > > 144,143 148,130 153,130 157,130 161,120 165,112 169,112 173,112 178,106 182,101
00:21:25 v #24783 > > 186,101 190,101 194,97 198,94 203,94 207,94 211,92 215,91 219,91 223,91 228,89
00:21:25 v #24784 > > 232,88 236,88 240,88 244,88 248,87 252,87 257,87 261,87 265,86 269,86 273,86
00:21:25 v #24785 > > 277,86 282,86 286,86 290,86 294,86 298,86 302,86 307,86 311,86 315,86 319,86
00:21:25 v #24786 > > 323,86 327,86 331,85 336,85 340,85 344,85 348,85 352,85 356,85 361,85 365,85
00:21:25 v #24787 > > 369,85 373,85 377,85 381,85 386,85 390,85 394,85 398,85 402,85 406,85 410,85
00:21:25 v #24788 > > 415,85 419,85 423,85 427,85 431,85 435,85 440,85 444,85 448,85 452,85 456,85
00:21:25 v #24789 > > 460,85 465,85 469,85 473,85 477,85 481,85 485,85 490,85 494,85 498,85 502,85
00:21:25 v #24790 > > 506,85 510,85 514,85 519,85 523,85 527,85 531,85 535,85 539,85 544,85 548,85
00:21:25 v #24791 > > 552,85 556,85 560,85 564,85 569,85 "/>
00:21:25 v #24792 > > │ <rect x="410" y="235" width="170" height="30" opacity="1"
00:21:25 v #24793 > > fill="none" stroke="#FFFFFF"/>
00:21:25 v #24794 > > │ <text x="450" y="245" dy="0.76em" text-anchor="start"
00:21:25 v #24795 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1"
00:21:25 v #24796 > > fill="#FFFFFF">
00:21:25 v #24797 > > │ velocity of bike (m/s)
00:21:25 v #24798 > > │ </text>
00:21:25 v #24799 > > │ <polyline fill="none" opacity="1" stroke="#FF0000"
00:21:25 v #24800 > > stroke-width="1" points="420,250 440,250 "/>
00:21:25 v #24801 > > │ </svg>
00:21:25 v #24802 > > │
00:21:25 v #24803 > >
00:21:25 v #24804 > > ── [ 509.41ms - stdout ] ───────────────────────────────────────────────────────
00:21:25 v #24805 > > │ 00:00:09 d #19 runtime.execute_with_options_async / {
00:21:25 v #24806 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:25 v #24807 > > arguments = US5_1; options = { command =
00:21:25 v #24808 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:25 v #24809 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:25 v #24810 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:25 v #24811 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:25 v #24812 > > │ 00:00:09 v #20 > Creating
00:21:25 v #24813 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/b1c46a76c7d245173909491
00:21:25 v #24814 > > beb9557fd28414b9dde459da20a63459014535a90.svg
00:21:25 v #24815 > > │ 00:00:09 d #21 runtime.execute_with_options_async / {
00:21:25 v #24816 > > exit_code = 0; output_length = 134 }
00:21:25 v #24817 > > │
00:21:25 v #24818 > >
00:21:25 v #24819 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:25 v #24820 > > │ ### velocity_ftv
00:21:25 v #24821 > >
00:21:25 v #24822 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:25 v #24823 > > inl newton_second_tv m fs (t, v0) =
00:21:25 v #24824 > >     inl f_net = fs |> listm.map (fun f => f (t, v0)) |> listm'.sum
00:21:25 v #24825 > >     inl acc = f_net / m
00:21:25 v #24826 > >     1, acc
00:21:25 v #24827 > >
00:21:25 v #24828 > > inl update_tv dt m fs (t, v0) =
00:21:25 v #24829 > >     inl dtdt, dvdt = newton_second_tv m fs (t, v0)
00:21:25 v #24830 > >     t + dtdt * dt, v0 + dvdt * dt
00:21:25 v #24831 > >
00:21:25 v #24832 > > inl velocity_ftv dt m tv0 fs t =
00:21:25 v #24833 > >     stream.iterate (join update_tv dt m fs) tv0
00:21:25 v #24834 > >     |> stream.try_item (t / dt |> math.round |> abs)
00:21:25 v #24835 > >     |> optionm.map snd
00:21:25 v #24836 > >     |> optionm'.default_value 0
00:21:25 v #24837 > >
00:21:25 v #24838 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:25 v #24839 > > //// test
00:21:25 v #24840 > >
00:21:25 v #24841 > > inl x = am'.init_series 0 100 0.1
00:21:25 v #24842 > > inl y =
00:21:25 v #24843 > >     x
00:21:25 v #24844 > >     |> am'.map_base (
00:21:25 v #24845 > >         velocity_ftv 0.1 20 (dyn (0, 0)) [[ fun (t, _) => pedal_coast t; fun (_,
00:21:25 v #24846 > > v) => f_air 2 1.225 0.5 v ]]
00:21:25 v #24847 > >     )
00:21:25 v #24848 > > "pedaling and coasting with air", "time (s)", "", ;[[ "velocity of bike (m/s)",
00:21:25 v #24849 > > x, y ]]
00:21:25 v #24850 > >
00:21:25 v #24851 > > ── [ 330.63ms - return value ] ─────────────────────────────────────────────────
00:21:25 v #24852 > > │ <svg width="640" height="480" viewBox="0 0 640 480"
00:21:25 v #24853 > > xmlns="http://www.w3.org/2000/svg">
00:21:25 v #24854 > > │ <rect x="0" y="0" width="640" height="480" opacity="1"
00:21:25 v #24855 > > fill="#141414" stroke="none"/>
00:21:25 v #24856 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"
00:21:25 v #24857 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1"
00:21:25 v #24858 > > fill="#FFFFFF">
00:21:25 v #24859 > > │ pedaling and coasting with air
00:21:25 v #24860 > > │ </text>
00:21:25 v #24861 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="59"
00:21:25 v #24862 > > y1="424" x2="59" y2="75"/>
00:21:25 v #24863 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69"
00:21:25 v #24864 > > y1="424" x2="69" y2="75"/>
00:21:25 v #24865 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="79"
00:21:25 v #24866 > > y1="424" x2="79" y2="75"/>
00:21:25 v #24867 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="89"
00:21:25 v #24868 > > y1="424" x2="89" y2="75"/>
00:21:25 v #24869 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="99"
00:21:25 v #24870 > > y1="424" x2="99" y2="75"/>
00:21:25 v #24871 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="109"
00:21:25 v #24872 > > y1="424" x2="109" y2="75"/>
00:21:25 v #24873 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119"
00:21:25 v #24874 > > y1="424" x2="119" y2="75"/>
00:21:25 v #24875 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="129"
00:21:25 v #24876 > > y1="424" x2="129" y2="75"/>
00:21:25 v #24877 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="139"
00:21:25 v #24878 > > y1="424" x2="139" y2="75"/>
00:21:25 v #24879 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="149"
00:21:25 v #24880 > > y1="424" x2="149" y2="75"/>
00:21:25 v #24881 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="159"
00:21:25 v #24882 > > y1="424" x2="159" y2="75"/>
00:21:25 v #24883 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="169"
00:21:25 v #24884 > > y1="424" x2="169" y2="75"/>
00:21:25 v #24885 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="179"
00:21:25 v #24886 > > y1="424" x2="179" y2="75"/>
00:21:25 v #24887 > > │ <li... 497,128 497,126 498,125 498,123 499,122 499,121
00:21:25 v #24888 > > 500,119 500,118 501,117 501,116 502,114 502,113 503,112 503,111 504,110 504,109
00:21:25 v #24889 > > 505,108 505,107 506,106 506,105 507,104 507,103 508,102 508,101 509,100 509,99
00:21:25 v #24890 > > 510,98 510,98 511,97 511,96 512,95 512,94 513,94 513,93 514,92 514,92 515,91
00:21:25 v #24891 > > 515,90 516,90 516,89 517,88 517,88 518,87 518,87 519,86 519,85 520,89 520,93
00:21:25 v #24892 > > 521,97 521,100 522,104 522,107 523,110 523,114 524,117 524,120 525,123 525,126
00:21:25 v #24893 > > 526,129 526,132 527,135 527,137 528,140 528,143 529,145 529,148 530,150 530,153
00:21:25 v #24894 > > 531,155 531,158 532,160 532,162 533,165 533,167 534,169 534,171 535,173 535,175
00:21:25 v #24895 > > 536,177 536,179 537,181 537,183 538,185 538,187 539,189 539,190 540,192 540,194
00:21:25 v #24896 > > 541,196 541,197 542,199 542,201 543,202 543,204 544,205 544,207 545,208 545,210
00:21:25 v #24897 > > 546,211 546,213 547,214 547,216 548,217 548,219 549,220 549,221 550,223 550,224
00:21:25 v #24898 > > 551,225 551,226 552,228 552,229 553,230 553,231 554,232 554,234 555,235 555,236
00:21:25 v #24899 > > 556,237 556,238 557,239 557,240 558,241 558,242 559,243 559,245 560,246 560,247
00:21:25 v #24900 > > 561,248 561,249 562,249 562,250 563,251 563,252 564,253 564,254 565,255 565,256
00:21:25 v #24901 > > 566,257 566,258 567,259 567,259 568,260 568,261 569,262 "/>
00:21:25 v #24902 > > │ <rect x="410" y="235" width="170" height="30" opacity="1"
00:21:25 v #24903 > > fill="none" stroke="#FFFFFF"/>
00:21:25 v #24904 > > │ <text x="450" y="245" dy="0.76em" text-anchor="start"
00:21:25 v #24905 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1"
00:21:25 v #24906 > > fill="#FFFFFF">
00:21:25 v #24907 > > │ velocity of bike (m/s)
00:21:25 v #24908 > > │ </text>
00:21:25 v #24909 > > │ <polyline fill="none" opacity="1" stroke="#FF0000"
00:21:25 v #24910 > > stroke-width="1" points="420,250 440,250 "/>
00:21:25 v #24911 > > │ </svg>
00:21:25 v #24912 > > │
00:21:25 v #24913 > >
00:21:25 v #24914 > > ── [ 332.49ms - stdout ] ───────────────────────────────────────────────────────
00:21:25 v #24915 > > │ 00:00:10 d #22 runtime.execute_with_options_async / {
00:21:25 v #24916 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:25 v #24917 > > arguments = US5_1; options = { command =
00:21:25 v #24918 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:25 v #24919 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:25 v #24920 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:25 v #24921 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:25 v #24922 > > │ 00:00:10 v #23 > Creating
00:21:25 v #24923 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/7ce179a0676b6aeb0873f38
00:21:25 v #24924 > > a984563540676d6a701ce833dc3c5e65d8ab7def7.svg
00:21:25 v #24925 > > │ 00:00:10 d #24 runtime.execute_with_options_async / {
00:21:25 v #24926 > > exit_code = 0; output_length = 134 }
00:21:25 v #24927 > > │
00:21:25 v #24928 > >
00:21:25 v #24929 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:25 v #24930 > > │ ### velocity_ftxv
00:21:25 v #24931 > >
00:21:25 v #24932 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:25 v #24933 > > nominal state_1d = time * position * velocity
00:21:25 v #24934 > > nominal rrr = f64 * f64 * f64
00:21:25 v #24935 > >
00:21:25 v #24936 > > inl newton_second_1d m fs (state_1d (t, x0, v0)) =
00:21:25 v #24937 > >     inl f_net = fs |> listm.map (fun f => f (state_1d (t, x0, v0))) |>
00:21:25 v #24938 > > listm'.sum
00:21:25 v #24939 > >     inl acc = f_net / m
00:21:25 v #24940 > >     rrr (1f64, v0, acc)
00:21:25 v #24941 > >
00:21:25 v #24942 > > inl euler_1d dt deriv (state_1d (t0, x0, v0) as t) =
00:21:25 v #24943 > >     inl (rrr (_, _, dvdt)) = deriv t
00:21:25 v #24944 > >     inl t1 = t0 + dt
00:21:25 v #24945 > >     inl x1 = x0 + v0 * dt
00:21:25 v #24946 > >     inl v1 = v0 + dvdt * dt
00:21:25 v #24947 > >     state_1d (t1, x1, v1)
00:21:25 v #24948 > >
00:21:25 v #24949 > > inl update_txv dt m fs =
00:21:25 v #24950 > >     newton_second_1d m fs |> euler_1d dt
00:21:25 v #24951 > >
00:21:25 v #24952 > > inl states_txv dt m txv0 fs =
00:21:25 v #24953 > >     seq.iterate_ (update_txv dt m fs) txv0
00:21:25 v #24954 > >
00:21:25 v #24955 > > inl velocity_1d sts t =
00:21:25 v #24956 > >     inl (state_1d (t0, _, _)) = sts 0
00:21:25 v #24957 > >     inl (state_1d (t1, _, _)) = sts 1
00:21:25 v #24958 > >     inl dt = t1 - t0
00:21:25 v #24959 > >     inl num_steps = t / dt |> math.round |> abs
00:21:25 v #24960 > >     inl (state_1d (_, _, v0)) = sts num_steps
00:21:25 v #24961 > >     v0
00:21:25 v #24962 > >
00:21:25 v #24963 > > inl velocity_ftxv dt m txv0 fs =
00:21:25 v #24964 > >     states_txv dt m txv0 fs |> velocity_1d
00:21:25 v #24965 > >
00:21:25 v #24966 > > inl position_1d sts t =
00:21:25 v #24967 > >     inl (state_1d (t0, _, _)) = sts 0
00:21:25 v #24968 > >     inl (state_1d (t1, _, _)) = sts 1
00:21:25 v #24969 > >     inl dt = t1 - t0
00:21:25 v #24970 > >     inl num_steps = t / dt |> math.round |> abs
00:21:25 v #24971 > >     inl (state_1d (_, x0, _)) = sts num_steps
00:21:25 v #24972 > >     x0
00:21:25 v #24973 > >
00:21:25 v #24974 > > inl position_ftxv dt m txv0 fs =
00:21:25 v #24975 > >     states_txv dt m txv0 fs |> position_1d
00:21:25 v #24976 > >
00:21:25 v #24977 > > inl spring_force k (state_1d (_, x0, _)) =
00:21:25 v #24978 > >     -k * x0
00:21:26 v #24979 > >
00:21:26 v #24980 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:26 v #24981 > > //// test
00:21:26 v #24982 > >
00:21:26 v #24983 > > inl damped_ho_forces () =
00:21:26 v #24984 > >     [[
00:21:26 v #24985 > >         spring_force 0.8
00:21:26 v #24986 > >         fun (state_1d (_, _, v0)) => f_air 2 1.225 (pi * math.square 0.02) v0
00:21:26 v #24987 > >         fun _ => -0.0027 * 9.80665
00:21:26 v #24988 > >     ]]
00:21:26 v #24989 > >
00:21:26 v #24990 > > inl damped_ho_states () =
00:21:26 v #24991 > >     states_txv 0.001 0.0027 (state_1d (0, 0.1, 0)) (damped_ho_forces ())
00:21:26 v #24992 > >
00:21:26 v #24993 > > inl pingpong_position t =
00:21:26 v #24994 > >     position_ftxv 0.001 0.0027 (state_1d (0, 0.1, 0)) (damped_ho_forces ()) t
00:21:26 v #24995 > >
00:21:26 v #24996 > > inl x = am'.init_series 0 3 0.01
00:21:26 v #24997 > > inl y = x |> am'.map_base pingpong_position
00:21:26 v #24998 > > "ping pong ball on a slinky", "time (s)", "", ;[[ "position (m)", x, y ]]
00:21:26 v #24999 > >
00:21:26 v #25000 > > ── [ 211.71ms - return value ] ─────────────────────────────────────────────────
00:21:26 v #25001 > > │ <svg width="640" height="480" viewBox="0 0 640 480"
00:21:26 v #25002 > > xmlns="http://www.w3.org/2000/svg">
00:21:26 v #25003 > > │ <rect x="0" y="0" width="640" height="480" opacity="1"
00:21:26 v #25004 > > fill="#141414" stroke="none"/>
00:21:26 v #25005 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"
00:21:26 v #25006 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1"
00:21:26 v #25007 > > fill="#FFFFFF">
00:21:26 v #25008 > > │ ping pong ball on a slinky
00:21:26 v #25009 > > │ </text>
00:21:26 v #25010 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="61"
00:21:26 v #25011 > > y1="424" x2="61" y2="75"/>
00:21:26 v #25012 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69"
00:21:26 v #25013 > > y1="424" x2="69" y2="75"/>
00:21:26 v #25014 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="78"
00:21:26 v #25015 > > y1="424" x2="78" y2="75"/>
00:21:26 v #25016 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="86"
00:21:26 v #25017 > > y1="424" x2="86" y2="75"/>
00:21:26 v #25018 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="94"
00:21:26 v #25019 > > y1="424" x2="94" y2="75"/>
00:21:26 v #25020 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="103"
00:21:26 v #25021 > > y1="424" x2="103" y2="75"/>
00:21:26 v #25022 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="111"
00:21:26 v #25023 > > y1="424" x2="111" y2="75"/>
00:21:26 v #25024 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119"
00:21:26 v #25025 > > y1="424" x2="119" y2="75"/>
00:21:26 v #25026 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="128"
00:21:26 v #25027 > > y1="424" x2="128" y2="75"/>
00:21:26 v #25028 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="136"
00:21:26 v #25029 > > y1="424" x2="136" y2="75"/>
00:21:26 v #25030 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="144"
00:21:26 v #25031 > > y1="424" x2="144" y2="75"/>
00:21:26 v #25032 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="153"
00:21:26 v #25033 > > y1="424" x2="153" y2="75"/>
00:21:26 v #25034 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="161"
00:21:26 v #25035 > > y1="424" x2="161" y2="75"/>
00:21:26 v #25036 > > │ <line o...88 332,305 334,321 336,334 337,346 339,354 341,360
00:21:26 v #25037 > > 342,363 344,362 346,359 347,352 349,342 351,330 352,316 354,300 356,283 357,265
00:21:26 v #25038 > > 359,247 361,229 362,212 364,197 366,183 367,172 369,163 371,156 372,153 374,153
00:21:26 v #25039 > > 376,156 377,161 379,170 381,181 382,194 384,209 386,226 387,243 389,260 391,277
00:21:26 v #25040 > > 392,294 394,309 396,323 397,335 399,344 401,351 402,355 404,356 406,354 407,349
00:21:26 v #25041 > > 409,341 410,331 412,319 414,305 415,289 417,273 419,256 420,239 422,223 424,208
00:21:26 v #25042 > > 425,194 427,182 429,172 430,165 432,161 434,159 435,160 437,164 439,171 440,180
00:21:26 v #25043 > > 442,192 444,205 445,220 447,235 449,252 450,268 452,284 454,299 455,313 457,325
00:21:26 v #25044 > > 459,335 460,342 462,347 464,350 465,349 467,346 469,340 470,332 472,321 474,309
00:21:26 v #25045 > > 475,295 477,280 479,264 480,248 482,232 484,217 485,204 487,192 489,181 490,173
00:21:26 v #25046 > > 492,168 494,165 495,165 497,167 499,172 500,180 502,189 504,201 505,215 507,229
00:21:26 v #25047 > > 509,244 510,260 512,275 514,290 515,303 517,316 519,326 520,335 522,341 524,344
00:21:26 v #25048 > > 525,345 527,343 529,339 530,332 532,323 534,312 535,300 537,286 539,271 540,256
00:21:26 v #25049 > > 542,241 544,226 545,213 547,200 549,190 550,181 552,175 554,171 555,169 557,170
00:21:26 v #25050 > > 559,174 560,180 562,188 564,198 565,210 567,223 569,238 "/>
00:21:26 v #25051 > > │ <rect x="464" y="235" width="116" height="30" opacity="1"
00:21:26 v #25052 > > fill="none" stroke="#FFFFFF"/>
00:21:26 v #25053 > > │ <text x="504" y="245" dy="0.76em" text-anchor="start"
00:21:26 v #25054 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1"
00:21:26 v #25055 > > fill="#FFFFFF">
00:21:26 v #25056 > > │ position (m)
00:21:26 v #25057 > > │ </text>
00:21:26 v #25058 > > │ <polyline fill="none" opacity="1" stroke="#FF0000"
00:21:26 v #25059 > > stroke-width="1" points="474,250 494,250 "/>
00:21:26 v #25060 > > │ </svg>
00:21:26 v #25061 > > │
00:21:26 v #25062 > >
00:21:26 v #25063 > > ── [ 213.62ms - stdout ] ───────────────────────────────────────────────────────
00:21:26 v #25064 > > │ 00:00:10 d #25 runtime.execute_with_options_async / {
00:21:26 v #25065 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:26 v #25066 > > arguments = US5_1; options = { command =
00:21:26 v #25067 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:26 v #25068 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:26 v #25069 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:26 v #25070 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:26 v #25071 > > │ 00:00:10 v #26 > Creating
00:21:26 v #25072 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/105ea7be2f329a89809543c
00:21:26 v #25073 > > bc25878ca2117d619b4ff6fdec5ae9a8079ac700b.svg
00:21:26 v #25074 > > │ 00:00:10 d #27 runtime.execute_with_options_async / {
00:21:26 v #25075 > > exit_code = 0; output_length = 134 }
00:21:26 v #25076 > > │
00:21:26 v #25077 > >
00:21:26 v #25078 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:26 v #25079 > > //// test
00:21:26 v #25080 > >
00:21:26 v #25081 > > inl pingpong_velocity t =
00:21:26 v #25082 > >     velocity_ftxv 0.001 0.0027 (state_1d (0, 0.1, 0)) (damped_ho_forces ()) t
00:21:26 v #25083 > >
00:21:26 v #25084 > > inl x = am'.init_series 0 3 0.01
00:21:26 v #25085 > > inl y = x |> am'.map_base pingpong_velocity
00:21:26 v #25086 > > "ping pong ball on a slinky", "time (s)", "", ;[[ "velocity (m/s)", x, y ]]
00:21:26 v #25087 > >
00:21:26 v #25088 > > ── [ 198.67ms - return value ] ─────────────────────────────────────────────────
00:21:26 v #25089 > > │ <svg width="640" height="480" viewBox="0 0 640 480"
00:21:26 v #25090 > > xmlns="http://www.w3.org/2000/svg">
00:21:26 v #25091 > > │ <rect x="0" y="0" width="640" height="480" opacity="1"
00:21:26 v #25092 > > fill="#141414" stroke="none"/>
00:21:26 v #25093 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"
00:21:26 v #25094 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1"
00:21:26 v #25095 > > fill="#FFFFFF">
00:21:26 v #25096 > > │ ping pong ball on a slinky
00:21:26 v #25097 > > │ </text>
00:21:26 v #25098 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="61"
00:21:26 v #25099 > > y1="424" x2="61" y2="75"/>
00:21:26 v #25100 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69"
00:21:26 v #25101 > > y1="424" x2="69" y2="75"/>
00:21:26 v #25102 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="78"
00:21:26 v #25103 > > y1="424" x2="78" y2="75"/>
00:21:26 v #25104 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="86"
00:21:26 v #25105 > > y1="424" x2="86" y2="75"/>
00:21:26 v #25106 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="94"
00:21:26 v #25107 > > y1="424" x2="94" y2="75"/>
00:21:26 v #25108 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="103"
00:21:26 v #25109 > > y1="424" x2="103" y2="75"/>
00:21:26 v #25110 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="111"
00:21:26 v #25111 > > y1="424" x2="111" y2="75"/>
00:21:26 v #25112 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119"
00:21:26 v #25113 > > y1="424" x2="119" y2="75"/>
00:21:26 v #25114 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="128"
00:21:26 v #25115 > > y1="424" x2="128" y2="75"/>
00:21:26 v #25116 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="136"
00:21:26 v #25117 > > y1="424" x2="136" y2="75"/>
00:21:26 v #25118 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="144"
00:21:26 v #25119 > > y1="424" x2="144" y2="75"/>
00:21:26 v #25120 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="153"
00:21:26 v #25121 > > y1="424" x2="153" y2="75"/>
00:21:26 v #25122 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="161"
00:21:26 v #25123 > > y1="424" x2="161" y2="75"/>
00:21:26 v #25124 > > │ <line o... 332,343 334,332 336,319 337,304 339,287 341,269
00:21:26 v #25125 > > 342,250 344,231 346,212 347,195 349,178 351,164 352,153 354,144 356,138 357,136
00:21:26 v #25126 > > 359,136 361,140 362,147 364,157 366,169 367,183 369,199 371,216 372,234 374,253
00:21:26 v #25127 > > 376,271 377,288 379,304 381,318 382,330 384,339 386,346 387,349 389,349 391,346
00:21:26 v #25128 > > 392,340 394,332 396,321 397,307 399,292 401,276 402,258 404,241 406,223 407,206
00:21:26 v #25129 > > 409,190 410,176 412,164 414,154 415,148 417,144 419,143 420,145 422,150 424,158
00:21:26 v #25130 > > 425,168 427,180 429,194 430,210 432,227 434,244 435,261 437,278 439,293 440,307
00:21:26 v #25131 > > 442,320 444,330 445,337 447,341 449,343 450,342 452,338 454,331 455,322 457,310
00:21:26 v #25132 > > 459,297 460,282 462,266 464,249 465,233 467,216 469,201 470,187 472,174 474,164
00:21:26 v #25133 > > 475,156 477,151 479,149 480,149 482,153 484,159 485,167 487,178 489,190 490,204
00:21:26 v #25134 > > 492,220 494,236 495,252 497,268 499,283 500,297 502,310 504,320 505,329 507,334
00:21:26 v #25135 > > 509,337 510,337 512,335 514,330 515,322 517,312 519,300 520,287 522,272 524,257
00:21:26 v #25136 > > 525,241 527,226 529,210 530,196 532,184 534,173 535,164 537,158 539,154 540,154
00:21:26 v #25137 > > 542,155 544,160 545,167 547,176 549,187 550,199 552,213 554,228 555,244 557,259
00:21:26 v #25138 > > 559,274 560,288 562,301 564,312 565,321 567,327 569,332 "/>
00:21:26 v #25139 > > │ <rect x="454" y="235" width="126" height="30" opacity="1"
00:21:26 v #25140 > > fill="none" stroke="#FFFFFF"/>
00:21:26 v #25141 > > │ <text x="494" y="245" dy="0.76em" text-anchor="start"
00:21:26 v #25142 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1"
00:21:26 v #25143 > > fill="#FFFFFF">
00:21:26 v #25144 > > │ velocity (m/s)
00:21:26 v #25145 > > │ </text>
00:21:26 v #25146 > > │ <polyline fill="none" opacity="1" stroke="#FF0000"
00:21:26 v #25147 > > stroke-width="1" points="464,250 484,250 "/>
00:21:26 v #25148 > > │ </svg>
00:21:26 v #25149 > > │
00:21:26 v #25150 > >
00:21:26 v #25151 > > ── [ 200.45ms - stdout ] ───────────────────────────────────────────────────────
00:21:26 v #25152 > > │ 00:00:10 d #28 runtime.execute_with_options_async / {
00:21:26 v #25153 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:26 v #25154 > > arguments = US5_1; options = { command =
00:21:26 v #25155 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:26 v #25156 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:26 v #25157 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:26 v #25158 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:26 v #25159 > > │ 00:00:10 v #29 > Creating
00:21:26 v #25160 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/6e1af89de9d77d914991731
00:21:26 v #25161 > > dc22cdee69efe252557400e2aeaa7feb3756058da.svg
00:21:26 v #25162 > > │ 00:00:10 d #30 runtime.execute_with_options_async / {
00:21:26 v #25163 > > exit_code = 0; output_length = 134 }
00:21:26 v #25164 > > │
00:21:26 v #25165 > >
00:21:26 v #25166 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:26 v #25167 > > │ ### shift
00:21:26 v #25168 > >
00:21:26 v #25169 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:26 v #25170 > > type update_function s = s -> s
00:21:26 v #25171 > >
00:21:26 v #25172 > > type differential_equation s ds = s -> ds
00:21:26 v #25173 > >
00:21:26 v #25174 > > type numerical_method s ds = differential_equation s ds -> update_function s
00:21:26 v #25175 > >
00:21:26 v #25176 > >
00:21:26 v #25177 > > inl solver method =
00:21:26 v #25178 > >     method >> seq.iterate
00:21:26 v #25179 > > inl solver' method =
00:21:26 v #25180 > >     method >> seq.iterate'
00:21:26 v #25181 > > inl solver_ method =
00:21:26 v #25182 > >     method >> seq.iterate_
00:21:26 v #25183 > >
00:21:26 v #25184 > >
00:21:26 v #25185 > > inl euler_cromer_1d dt deriv (state_1d (t0, x0, v0) as t) =
00:21:26 v #25186 > >     inl (rrr (_, _, dvdt)) = deriv t
00:21:26 v #25187 > >     inl t1 = t0 + dt
00:21:26 v #25188 > >     inl v1 = v0 + dvdt * dt
00:21:26 v #25189 > >     inl x1 = x0 + v1 * dt
00:21:26 v #25190 > >     state_1d (t1, x1, v1)
00:21:26 v #25191 > >
00:21:26 v #25192 > > inl update_txv_ec dt m fs =
00:21:26 v #25193 > >     euler_cromer_1d dt (newton_second_1d m fs)
00:21:26 v #25194 > >
00:21:26 v #25195 > > prototype (+++) ds : ds -> ds -> ds
00:21:26 v #25196 > > prototype scale ds : f64 -> ds -> ds
00:21:26 v #25197 > >
00:21:26 v #25198 > > instance (+++) rrr = fun (rrr (dtdt0, dxdt0, dvdt0)) (rrr (dtdt1, dxdt1, dvdt1))
00:21:26 v #25199 > > =>
00:21:26 v #25200 > >     rrr (dtdt0 + dtdt1, dxdt0 + dxdt1, dvdt0 + dvdt1)
00:21:26 v #25201 > >
00:21:26 v #25202 > > instance scale rrr = fun w (rrr (dtdt0, dxdt0, dvdt0)) =>
00:21:26 v #25203 > >     rrr (w * dtdt0, w * dxdt0, w * dvdt0)
00:21:26 v #25204 > >
00:21:26 v #25205 > > prototype shift s : forall ds. f64 -> ds -> s -> s
00:21:26 v #25206 > >
00:21:26 v #25207 > > instance shift state_1d = fun dt ds (state_1d (t, x, v)) =>
00:21:26 v #25208 > >     inl dtdt, dxdt, dvdt =
00:21:26 v #25209 > >         real
00:21:26 v #25210 > >             match ds with
00:21:26 v #25211 > >             | rrr x => x
00:21:26 v #25212 > >             | state_1d x => x
00:21:26 v #25213 > >     state_1d (t + dtdt * dt, x + dxdt * dt, v + dvdt * dt)
00:21:26 v #25214 > >
00:21:26 v #25215 > > inl euler dt deriv st0 =
00:21:26 v #25216 > >     shift dt (deriv st0) st0
00:21:26 v #25217 > >
00:21:26 v #25218 > > inl runge_kutta_4 dt deriv st0 =
00:21:26 v #25219 > >     inl m0 = deriv st0
00:21:26 v #25220 > >     inl m1 = deriv (shift (dt / 2) m0 st0)
00:21:26 v #25221 > >     inl m2 = deriv (shift (dt / 2) m1 st0)
00:21:26 v #25222 > >     inl m3 = deriv (shift dt m2 st0)
00:21:26 v #25223 > >     shift (dt / 6) (m0 +++ m1 +++ m1 +++ m2 +++ m2 +++ m3) st0
00:21:26 v #25224 > >
00:21:26 v #25225 > > inl exponential (_, x0, v0) =
00:21:26 v #25226 > >     1f64, v0, x0
00:21:26 v #25227 > >
00:21:26 v #25228 > > inl of_state_1d (state_1d (t, x, v)) =
00:21:26 v #25229 > >     t, x, v
00:21:26 v #25230 > >
00:21:26 v #25231 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:26 v #25232 > > //// test
00:21:26 v #25233 > >
00:21:26 v #25234 > > solver (euler 0.01) (of_state_1d >> exponential >> state_1d) (state_1d (0, 1,
00:21:26 v #25235 > > 1)) 800i32
00:21:26 v #25236 > > |> _assert_eq (state_1d (7.999999999999874, 2864.8311229272326,
00:21:26 v #25237 > > 2864.8311229272326))
00:21:26 v #25238 > >
00:21:26 v #25239 > > solver (euler_cromer_1d 0.1) (of_state_1d >> exponential >> rrr) (state_1d (0,
00:21:26 v #25240 > > 1, 1)) 80i32
00:21:26 v #25241 > > |> _assert_eq (state_1d (7.999999999999988, 3043.379244966009,
00:21:26 v #25242 > > 2895.0121485099035))
00:21:26 v #25243 > >
00:21:26 v #25244 > > solver (runge_kutta_4 1) (of_state_1d >> exponential >> rrr) (state_1d (0, 1,
00:21:26 v #25245 > > 1)) 8i32
00:21:26 v #25246 > > |> _assert_eq (state_1d (8.0, 2894.789038540849, 2894.789038540849))
00:21:26 v #25247 > >
00:21:26 v #25248 > > ── [ 322.51ms - stdout ] ───────────────────────────────────────────────────────
00:21:26 v #25249 > > │ __assert_eq / actual: struct (8.0, 2864.831123, 2864.831123)
00:21:26 v #25250 > > / expected: struct (8.0, 2864.831123, 2864.831123)
00:21:26 v #25251 > > │ __assert_eq / actual: struct (8.0, 3043.379245, 2895.012149)
00:21:26 v #25252 > > / expected: struct (8.0, 3043.379245, 2895.012149)
00:21:26 v #25253 > > │ __assert_eq / actual: struct (8.0, 2894.789039, 2894.789039)
00:21:26 v #25254 > > / expected: struct (8.0, 2894.789039, 2894.789039)
00:21:26 v #25255 > > │
00:21:26 v #25256 > >
00:21:26 v #25257 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:26 v #25258 > > │ ### vec
00:21:26 v #25259 > >
00:21:26 v #25260 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:26 v #25261 > > type vec =
00:21:26 v #25262 > >     {
00:21:26 v #25263 > >         x : f64
00:21:26 v #25264 > >         y : f64
00:21:26 v #25265 > >         z : f64
00:21:26 v #25266 > >     }
00:21:26 v #25267 > >
00:21:26 v #25268 > > inl vec x y z : vec =
00:21:26 v #25269 > >     { x y z }
00:21:27 v #25270 > >
00:21:27 v #25271 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:27 v #25272 > > //// test
00:21:27 v #25273 > >
00:21:27 v #25274 > > vec 1 2 3 .z
00:21:27 v #25275 > > |> _assert_eq 3
00:21:27 v #25276 > >
00:21:27 v #25277 > > ── [ 171.15ms - stdout ] ───────────────────────────────────────────────────────
00:21:27 v #25278 > > │ __assert_eq / actual: 3.0 / expected: 3.0
00:21:27 v #25279 > > │
00:21:27 v #25280 > >
00:21:27 v #25281 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:27 v #25282 > > │ #### consts
00:21:27 v #25283 > >
00:21:27 v #25284 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:27 v #25285 > > inl i_hat () = vec 1 0 0
00:21:27 v #25286 > > inl j_hat () = vec 0 1 0
00:21:27 v #25287 > > inl k_hat () = vec 0 0 1
00:21:27 v #25288 > > inl zero_vec () = vec 0 0 0
00:21:27 v #25289 > >
00:21:27 v #25290 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:27 v #25291 > > │ #### ^+^
00:21:27 v #25292 > >
00:21:27 v #25293 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:27 v #25294 > > inl (^+^) (a : vec) (b : vec) =
00:21:27 v #25295 > >     vec (a.x + b.x) (a.y + b.y) (a.z + b.z)
00:21:27 v #25296 > >
00:21:27 v #25297 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:27 v #25298 > > //// test
00:21:27 v #25299 > >
00:21:27 v #25300 > > vec 1 2 3 ^+^ vec 4 5 6
00:21:27 v #25301 > > |> _assert_eq (vec 5 7 9)
00:21:27 v #25302 > >
00:21:27 v #25303 > > ── [ 162.27ms - stdout ] ───────────────────────────────────────────────────────
00:21:27 v #25304 > > │ __assert_eq / actual: struct (5.0, 7.0, 9.0) / expected:
00:21:27 v #25305 > > struct (5.0, 7.0, 9.0)
00:21:27 v #25306 > > │
00:21:27 v #25307 > >
00:21:27 v #25308 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:27 v #25309 > > │ #### sum_vec
00:21:27 v #25310 > >
00:21:27 v #25311 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:27 v #25312 > > inl sum_vec vs =
00:21:27 v #25313 > >     vs |> listm.fold (^+^) (zero_vec ())
00:21:27 v #25314 > >
00:21:27 v #25315 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:27 v #25316 > > //// test
00:21:27 v #25317 > >
00:21:27 v #25318 > > [[ vec 1 2 3; vec 4 5 6 ]]
00:21:27 v #25319 > > |> sum_vec
00:21:27 v #25320 > > |> _assert_eq (vec 5 7 9)
00:21:28 v #25321 > >
00:21:28 v #25322 > > ── [ 175.69ms - stdout ] ───────────────────────────────────────────────────────
00:21:28 v #25323 > > │ __assert_eq / actual: struct (5.0, 7.0, 9.0) / expected:
00:21:28 v #25324 > > struct (5.0, 7.0, 9.0)
00:21:28 v #25325 > > │
00:21:28 v #25326 > >
00:21:28 v #25327 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:28 v #25328 > > │ #### *^
00:21:28 v #25329 > >
00:21:28 v #25330 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:28 v #25331 > > inl (*^) c { x y z } =
00:21:28 v #25332 > >     vec (c * x) (c * y) (c * z)
00:21:28 v #25333 > >
00:21:28 v #25334 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:28 v #25335 > > //// test
00:21:28 v #25336 > >
00:21:28 v #25337 > > 5 *^ vec 1 2 3
00:21:28 v #25338 > > |> _assert_eq (vec 5 10 15)
00:21:28 v #25339 > >
00:21:28 v #25340 > > ── [ 162.20ms - stdout ] ───────────────────────────────────────────────────────
00:21:28 v #25341 > > │ __assert_eq / actual: struct (5.0, 10.0, 15.0) / expected:
00:21:28 v #25342 > > struct (5.0, 10.0, 15.0)
00:21:28 v #25343 > > │
00:21:28 v #25344 > >
00:21:28 v #25345 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:28 v #25346 > > //// test
00:21:28 v #25347 > >
00:21:28 v #25348 > > 3 *^ i_hat () ^+^ 4 *^ k_hat ()
00:21:28 v #25349 > > |> _assert_eq (vec 3 0 4)
00:21:28 v #25350 > >
00:21:28 v #25351 > > ── [ 154.70ms - stdout ] ───────────────────────────────────────────────────────
00:21:28 v #25352 > > │ __assert_eq / actual: struct (3.0, 0.0, 4.0) / expected:
00:21:28 v #25353 > > struct (3.0, 0.0, 4.0)
00:21:28 v #25354 > > │
00:21:28 v #25355 > >
00:21:28 v #25356 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:28 v #25357 > > │ #### ^*
00:21:28 v #25358 > >
00:21:28 v #25359 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:28 v #25360 > > inl (^*) v c =
00:21:28 v #25361 > >     (*^) c v
00:21:28 v #25362 > >
00:21:28 v #25363 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:28 v #25364 > > //// test
00:21:28 v #25365 > >
00:21:28 v #25366 > > vec 1 2 3 ^* 5
00:21:28 v #25367 > > |> _assert_eq (vec 5 10 15)
00:21:28 v #25368 > >
00:21:28 v #25369 > > ── [ 182.93ms - stdout ] ───────────────────────────────────────────────────────
00:21:28 v #25370 > > │ __assert_eq / actual: struct (5.0, 10.0, 15.0) / expected:
00:21:28 v #25371 > > struct (5.0, 10.0, 15.0)
00:21:28 v #25372 > > │
00:21:28 v #25373 > >
00:21:28 v #25374 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:28 v #25375 > > │ #### ^
00:21:28 v #25376 > >
00:21:28 v #25377 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:28 v #25378 > > inl (^/) { x y z } c =
00:21:28 v #25379 > >     vec (x / c) (y / c) (z / c)
00:21:29 v #25380 > >
00:21:29 v #25381 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:29 v #25382 > > //// test
00:21:29 v #25383 > >
00:21:29 v #25384 > > vec 1 2 3 ^/ 5
00:21:29 v #25385 > > |> _assert_eq (vec 0.2 0.4 0.6)
00:21:29 v #25386 > >
00:21:29 v #25387 > > ── [ 195.23ms - stdout ] ───────────────────────────────────────────────────────
00:21:29 v #25388 > > │ __assert_eq / actual: struct (0.2, 0.4, 0.6) / expected:
00:21:29 v #25389 > > struct (0.2, 0.4, 0.6)
00:21:29 v #25390 > > │
00:21:29 v #25391 > >
00:21:29 v #25392 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:29 v #25393 > > │ #### negate_vec
00:21:29 v #25394 > >
00:21:29 v #25395 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:29 v #25396 > > inl negate_vec v =
00:21:29 v #25397 > >     v ^* -1
00:21:29 v #25398 > >
00:21:29 v #25399 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:29 v #25400 > > //// test
00:21:29 v #25401 > >
00:21:29 v #25402 > > vec 1 2 3
00:21:29 v #25403 > > |> negate_vec
00:21:29 v #25404 > > |> _assert_eq (vec -1 -2 -3)
00:21:29 v #25405 > >
00:21:29 v #25406 > > ── [ 158.67ms - stdout ] ───────────────────────────────────────────────────────
00:21:29 v #25407 > > │ __assert_eq / actual: struct (-1.0, -2.0, -3.0) / expected:
00:21:29 v #25408 > > struct (-1.0, -2.0, -3.0)
00:21:29 v #25409 > > │
00:21:29 v #25410 > >
00:21:29 v #25411 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:29 v #25412 > > │ #### ^-^
00:21:29 v #25413 > >
00:21:29 v #25414 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:29 v #25415 > > inl (^-^) a b =
00:21:29 v #25416 > >     a ^+^ (negate_vec b)
00:21:29 v #25417 > >
00:21:29 v #25418 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:29 v #25419 > > //// test
00:21:29 v #25420 > >
00:21:29 v #25421 > > vec 1 2 3 ^-^ vec 4 5 6
00:21:29 v #25422 > > |> _assert_eq (vec -3 -3 -3)
00:21:29 v #25423 > >
00:21:29 v #25424 > > ── [ 176.14ms - stdout ] ───────────────────────────────────────────────────────
00:21:29 v #25425 > > │ __assert_eq / actual: struct (-3.0, -3.0, -3.0) / expected:
00:21:29 v #25426 > > struct (-3.0, -3.0, -3.0)
00:21:29 v #25427 > > │
00:21:29 v #25428 > >
00:21:29 v #25429 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:29 v #25430 > > │ #### <.>
00:21:29 v #25431 > >
00:21:29 v #25432 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:29 v #25433 > > inl (<.>) { x = ax y = ay z = az } { x = bx y = by z = bz } =
00:21:29 v #25434 > >     ax * bx + ay * by + az * bz
00:21:30 v #25435 > >
00:21:30 v #25436 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:30 v #25437 > > //// test
00:21:30 v #25438 > >
00:21:30 v #25439 > > vec 1 2 3 <.> vec 4 5 6
00:21:30 v #25440 > > |> _assert_eq 32
00:21:30 v #25441 > >
00:21:30 v #25442 > > ── [ 186.34ms - stdout ] ───────────────────────────────────────────────────────
00:21:30 v #25443 > > │ __assert_eq / actual: 32.0 / expected: 32.0
00:21:30 v #25444 > > │
00:21:30 v #25445 > >
00:21:30 v #25446 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:30 v #25447 > > │ #### \>\<
00:21:30 v #25448 > >
00:21:30 v #25449 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:30 v #25450 > > inl (><) (a : vec) (b : vec) =
00:21:30 v #25451 > >     vec
00:21:30 v #25452 > >         (a.y * b.z - a.z * b.y)
00:21:30 v #25453 > >         (a.z * b.x - a.x * b.z)
00:21:30 v #25454 > >         (a.x * b.y - a.y * b.x)
00:21:30 v #25455 > >
00:21:30 v #25456 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:30 v #25457 > > //// test
00:21:30 v #25458 > >
00:21:30 v #25459 > > vec 1 2 3 >< vec 4 5 6
00:21:30 v #25460 > > |> _assert_eq (vec -3 6 -3)
00:21:30 v #25461 > >
00:21:30 v #25462 > > ── [ 160.43ms - stdout ] ───────────────────────────────────────────────────────
00:21:30 v #25463 > > │ __assert_eq / actual: struct (-3.0, 6.0, -3.0) / expected:
00:21:30 v #25464 > > struct (-3.0, 6.0, -3.0)
00:21:30 v #25465 > > │
00:21:30 v #25466 > >
00:21:30 v #25467 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:30 v #25468 > > │ #### magnitude
00:21:30 v #25469 > >
00:21:30 v #25470 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:30 v #25471 > > inl magnitude v =
00:21:30 v #25472 > >     v <.> v |> sqrt
00:21:30 v #25473 > >
00:21:30 v #25474 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:30 v #25475 > > //// test
00:21:30 v #25476 > >
00:21:30 v #25477 > > vec 1 2 3
00:21:30 v #25478 > > |> magnitude
00:21:30 v #25479 > > |> _assert_approx_eq None 3.7416573867739413
00:21:30 v #25480 > >
00:21:30 v #25481 > > ── [ 181.91ms - stdout ] ───────────────────────────────────────────────────────
00:21:30 v #25482 > > │ __assert_approx_eq / actual: 3.741657387 / expected:
00:21:30 v #25483 > > 3.741657387
00:21:30 v #25484 > > │
00:21:30 v #25485 > >
00:21:30 v #25486 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:30 v #25487 > > │ #### v1
00:21:30 v #25488 > >
00:21:30 v #25489 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:30 v #25490 > > inl v1 t =
00:21:30 v #25491 > >     2 *^ (t ** 2 *^ i_hat () ^+^ 3 *^ (t ** 3 *^ j_hat () ^+^ t ** 4 *^ k_hat
00:21:30 v #25492 > > ()))
00:21:31 v #25493 > >
00:21:31 v #25494 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:31 v #25495 > > //// test
00:21:31 v #25496 > >
00:21:31 v #25497 > > v1 1
00:21:31 v #25498 > > |> _assert_eq (vec 2 6 6)
00:21:31 v #25499 > >
00:21:31 v #25500 > > ── [ 165.20ms - stdout ] ───────────────────────────────────────────────────────
00:21:31 v #25501 > > │ __assert_eq / actual: struct (2.0, 6.0, 6.0) / expected:
00:21:31 v #25502 > > struct (2.0, 6.0, 6.0)
00:21:31 v #25503 > > │
00:21:31 v #25504 > >
00:21:31 v #25505 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:31 v #25506 > > │ #### vec_derivative
00:21:31 v #25507 > >
00:21:31 v #25508 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:31 v #25509 > > type vec_derivative = (f64 -> vec) -> f64 -> vec
00:21:31 v #25510 > >
00:21:31 v #25511 > > inl vec_derivative dt : vec_derivative =
00:21:31 v #25512 > >     fun v t =>
00:21:31 v #25513 > >         (v (t + dt / 2) ^-^ v (t - dt / 2)) ^/ dt
00:21:31 v #25514 > >
00:21:31 v #25515 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:31 v #25516 > > //// test
00:21:31 v #25517 > >
00:21:31 v #25518 > > vec_derivative 0.01 v1 3 .x
00:21:31 v #25519 > > |> _assert_approx_eq None (derivative 0.01 (v1 >> fun v => v.x) 3)
00:21:31 v #25520 > >
00:21:31 v #25521 > > ── [ 166.72ms - stdout ] ───────────────────────────────────────────────────────
00:21:31 v #25522 > > │ __assert_approx_eq / actual: 12.0 / expected: 12.0
00:21:31 v #25523 > > │
00:21:31 v #25524 > >
00:21:31 v #25525 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:31 v #25526 > > │ ### states_ps
00:21:31 v #25527 > >
00:21:31 v #25528 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:31 v #25529 > > nominal particle_state =
00:21:31 v #25530 > >     {
00:21:31 v #25531 > >         mass : f64
00:21:31 v #25532 > >         charge : f64
00:21:31 v #25533 > >         time : f64
00:21:31 v #25534 > >         pos_vec : vec
00:21:31 v #25535 > >         velocity : vec
00:21:31 v #25536 > >     }
00:21:31 v #25537 > >
00:21:31 v #25538 > > inl default_particle_state () : particle_state =
00:21:31 v #25539 > >     particle_state {
00:21:31 v #25540 > >         mass = 1
00:21:31 v #25541 > >         charge = 0
00:21:31 v #25542 > >         time = 0
00:21:31 v #25543 > >         pos_vec = zero_vec ()
00:21:31 v #25544 > >         velocity = zero_vec ()
00:21:31 v #25545 > >     }
00:21:31 v #25546 > >
00:21:31 v #25547 > > type one_body_force = particle_state -> vec
00:21:31 v #25548 > >
00:21:31 v #25549 > > nominal d_particle_state =
00:21:31 v #25550 > >     {
00:21:31 v #25551 > >         dmdt : f64
00:21:31 v #25552 > >         dqdt : f64
00:21:31 v #25553 > >         dtdt : f64
00:21:31 v #25554 > >         drdt : vec
00:21:31 v #25555 > >         dvdt : vec
00:21:31 v #25556 > >     }
00:21:31 v #25557 > >
00:21:31 v #25558 > > inl newton_second_ps (fs : list one_body_force) (st : particle_state) :
00:21:31 v #25559 > > d_particle_state =
00:21:31 v #25560 > >     inl f_net = fs |> listm.map (fun f => f st) |> sum_vec
00:21:31 v #25561 > >     d_particle_state {
00:21:31 v #25562 > >         dmdt = 0
00:21:31 v #25563 > >         dqdt = 0
00:21:31 v #25564 > >         dtdt = 1
00:21:31 v #25565 > >         drdt = st.velocity
00:21:31 v #25566 > >         dvdt = f_net ^/ st.mass
00:21:31 v #25567 > >     }
00:21:31 v #25568 > >
00:21:31 v #25569 > > inl earth_surface_gravity (st : particle_state) =
00:21:31 v #25570 > >     inl g = 9.80665
00:21:31 v #25571 > >     -st.mass * g *^ k_hat ()
00:21:31 v #25572 > >
00:21:31 v #25573 > > inl air_resistance drag rho area (st : particle_state) =
00:21:31 v #25574 > >     -0.5 * drag * rho * area * magnitude st.velocity *^ st.velocity
00:21:31 v #25575 > >
00:21:31 v #25576 > > inl euler_cromer_ps dt (deriv : particle_state -> d_particle_state)
00:21:31 v #25577 > > (particle_state st) =
00:21:31 v #25578 > >     inl dst : d_particle_state = deriv (particle_state st)
00:21:31 v #25579 > >     inl v' = st.velocity ^+^ dst.dvdt ^* dt
00:21:31 v #25580 > >     particle_state { st with
00:21:31 v #25581 > >         time = st.time + dt
00:21:31 v #25582 > >         pos_vec = st.pos_vec ^+^ v' ^* dt
00:21:31 v #25583 > >         velocity = st.velocity ^+^ dst.dvdt ^* dt
00:21:31 v #25584 > >     }
00:21:31 v #25585 > >
00:21:31 v #25586 > > instance (+++) d_particle_state = fun (dps : d_particle_state) (dps' :
00:21:31 v #25587 > > d_particle_state) =>
00:21:31 v #25588 > >     d_particle_state {
00:21:31 v #25589 > >         dmdt = dps.dmdt + dps'.dmdt
00:21:31 v #25590 > >         dqdt = dps.dqdt + dps'.dqdt
00:21:31 v #25591 > >         dtdt = dps.dtdt + dps'.dtdt
00:21:31 v #25592 > >         drdt = dps.drdt ^+^ dps'.drdt
00:21:31 v #25593 > >         dvdt = dps.dvdt ^+^ dps'.dvdt
00:21:31 v #25594 > >     }
00:21:31 v #25595 > >
00:21:31 v #25596 > > instance scale d_particle_state = fun w (dps : d_particle_state) =>
00:21:31 v #25597 > >     d_particle_state {
00:21:31 v #25598 > >         dmdt = w * dps.dmdt
00:21:31 v #25599 > >         dqdt = w * dps.dqdt
00:21:31 v #25600 > >         dtdt = w * dps.dtdt
00:21:31 v #25601 > >         drdt = w *^ dps.drdt
00:21:31 v #25602 > >         dvdt = w *^ dps.dvdt
00:21:31 v #25603 > >     }
00:21:31 v #25604 > >
00:21:31 v #25605 > > instance shift particle_state = fun dt dps (particle_state st) =>
00:21:31 v #25606 > >     inl (d_particle_state dps) =
00:21:31 v #25607 > >         real
00:21:31 v #25608 > >             match dps with
00:21:31 v #25609 > >             | d_particle_state _ => dps
00:21:31 v #25610 > >     particle_state { st with
00:21:31 v #25611 > >         time = st.time + dps.dtdt * dt
00:21:31 v #25612 > >         pos_vec = st.pos_vec ^+^ dps.drdt ^* dt
00:21:31 v #25613 > >         velocity = st.velocity ^+^ dps.dvdt ^* dt
00:21:31 v #25614 > >     }
00:21:31 v #25615 > >
00:21:31 v #25616 > > inl states_ps (method : numerical_method particle_state d_particle_state) : _ ->
00:21:31 v #25617 > > _ -> i32 -> particle_state =
00:21:31 v #25618 > >     newton_second_ps >> method >> seq.iterate_
00:21:31 v #25619 > >
00:21:31 v #25620 > > inl z_ge0 sts =
00:21:31 v #25621 > >     sts
00:21:31 v #25622 > >     |> seq.take_while_ (fun (particle_state st) _ => st.pos_vec.z >= 0)
00:21:31 v #25623 > >
00:21:31 v #25624 > > inl trajectory sts =
00:21:31 v #25625 > >     sts |> listm.map (fun (particle_state st) => st.pos_vec.y, st.pos_vec.z)
00:21:31 v #25626 > >
00:21:31 v #25627 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:31 v #25628 > > //// test
00:21:31 v #25629 > >
00:21:31 v #25630 > > inl update_ps (method : numerical_method particle_state d_particle_state) =
00:21:31 v #25631 > >     newton_second_ps >> method
00:21:31 v #25632 > >
00:21:31 v #25633 > > inl position_ps (method : numerical_method particle_state d_particle_state) fs
00:21:31 v #25634 > > st t =
00:21:31 v #25635 > >     inl states : i32 -> particle_state = states_ps method fs st
00:21:31 v #25636 > >     inl dt = (states 1).time - (states 0).time
00:21:31 v #25637 > >     inl num_steps = t / dt |> math.round |> abs
00:21:31 v #25638 > >     inl st1 = solver' method (newton_second_ps fs) st num_steps
00:21:31 v #25639 > >     st1.pos_vec
00:21:31 v #25640 > >
00:21:31 v #25641 > > inl sun_gravity (st : particle_state) : vec =
00:21:31 v #25642 > >     inl big_g = 0.0000000000667408
00:21:31 v #25643 > >     inl sun_mass = 1988480000000000000000000000000
00:21:31 v #25644 > >     -big_g * sun_mass * st.mass *^ st.pos_vec ^/ magnitude st.pos_vec ** 3
00:21:31 v #25645 > >
00:21:31 v #25646 > > inl wind_force v_wind drag rho area (st : particle_state) =
00:21:31 v #25647 > >     inl v_rel = st.velocity ^-^ v_wind
00:21:31 v #25648 > >     -0.5 * drag * rho * area * magnitude v_rel *^ v_rel
00:21:31 v #25649 > >
00:21:31 v #25650 > > inl rock_state () =
00:21:31 v #25651 > >     inl (particle_state default_particle_state') = default_particle_state ()
00:21:31 v #25652 > >     particle_state { default_particle_state' with
00:21:31 v #25653 > >         mass = 2
00:21:31 v #25654 > >         velocity = vec 3 0 4
00:21:31 v #25655 > >     }
00:21:31 v #25656 > >
00:21:31 v #25657 > > inl halley_update dt =
00:21:31 v #25658 > >     update_ps (euler_cromer_ps dt) [[ sun_gravity ]]
00:21:31 v #25659 > >
00:21:31 v #25660 > > inl halley_initial () =
00:21:31 v #25661 > >     inl (particle_state default_particle_state') = default_particle_state ()
00:21:31 v #25662 > >     particle_state { default_particle_state' with
00:21:31 v #25663 > >         mass = 220000000000000
00:21:31 v #25664 > >         pos_vec = 87660000000 *^ i_hat ()
00:21:31 v #25665 > >         velocity = 54569 *^ j_hat ()
00:21:31 v #25666 > >     }
00:21:31 v #25667 > >
00:21:31 v #25668 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:31 v #25669 > > //// test
00:21:31 v #25670 > >
00:21:31 v #25671 > > inl baseball_forces () =
00:21:31 v #25672 > >     inl area = pi * (0.074 / 2) ** 2
00:21:31 v #25673 > >     [[
00:21:31 v #25674 > >         earth_surface_gravity
00:21:31 v #25675 > >         air_resistance 0.3 1.225 area
00:21:31 v #25676 > >     ]]
00:21:31 v #25677 > >
00:21:31 v #25678 > > inl baseball_trajectory dt v0 theta_deg =
00:21:31 v #25679 > >     inl theta_rad = theta_deg * pi / 180
00:21:31 v #25680 > >     inl vy0 = v0 * cos theta_rad
00:21:31 v #25681 > >     inl vz0 = v0 * sin theta_rad
00:21:31 v #25682 > >     inl initial_state =
00:21:31 v #25683 > >         particle_state {
00:21:31 v #25684 > >             mass = 0.145
00:21:31 v #25685 > >             charge = 0
00:21:31 v #25686 > >             time = 0
00:21:31 v #25687 > >             pos_vec = zero_vec ()
00:21:31 v #25688 > >             velocity = vec 0 vy0 vz0
00:21:31 v #25689 > >         }
00:21:31 v #25690 > >     states_ps (euler_cromer_ps dt) (baseball_forces ()) initial_state
00:21:31 v #25691 > >     >> Some
00:21:31 v #25692 > >     |> z_ge0
00:21:31 v #25693 > >     |> trajectory
00:21:31 v #25694 > >
00:21:31 v #25695 > > inl baseball_range dt v0 theta_deg =
00:21:31 v #25696 > >     baseball_trajectory dt v0 theta_deg
00:21:31 v #25697 > >     |> listm.fold (fun _ (y, _) => y) 0
00:21:31 v #25698 > >
00:21:31 v #25699 > > inl x = am'.init_series 10 80 1
00:21:31 v #25700 > > inl y = x |> am'.map_base (baseball_range 0.01 45)
00:21:31 v #25701 > > "range for a baseball hit at 45 m/s",
00:21:31 v #25702 > > "angle above horizontal (degrees)",
00:21:31 v #25703 > > "",
00:21:31 v #25704 > > ;[[ "horizontal range (m)", x, y ]]
00:21:32 v #25705 > >
00:21:32 v #25706 > > ── [ 820.49ms - return value ] ─────────────────────────────────────────────────
00:21:32 v #25707 > > │ <svg width="640" height="480" viewBox="0 0 640 480"
00:21:32 v #25708 > > xmlns="http://www.w3.org/2000/svg">
00:21:32 v #25709 > > │ <rect x="0" y="0" width="640" height="480" opacity="1"
00:21:32 v #25710 > > fill="#141414" stroke="none"/>
00:21:32 v #25711 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"
00:21:32 v #25712 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1"
00:21:32 v #25713 > > fill="#FFFFFF">
00:21:32 v #25714 > > │ range for a baseball hit at 45 m/s
00:21:32 v #25715 > > │ </text>
00:21:32 v #25716 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="55"
00:21:32 v #25717 > > y1="424" x2="55" y2="75"/>
00:21:32 v #25718 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="62"
00:21:32 v #25719 > > y1="424" x2="62" y2="75"/>
00:21:32 v #25720 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69"
00:21:32 v #25721 > > y1="424" x2="69" y2="75"/>
00:21:32 v #25722 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="77"
00:21:32 v #25723 > > y1="424" x2="77" y2="75"/>
00:21:32 v #25724 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="84"
00:21:32 v #25725 > > y1="424" x2="84" y2="75"/>
00:21:32 v #25726 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="91"
00:21:32 v #25727 > > y1="424" x2="91" y2="75"/>
00:21:32 v #25728 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="98"
00:21:32 v #25729 > > y1="424" x2="98" y2="75"/>
00:21:32 v #25730 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="105"
00:21:32 v #25731 > > y1="424" x2="105" y2="75"/>
00:21:32 v #25732 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="112"
00:21:32 v #25733 > > y1="424" x2="112" y2="75"/>
00:21:32 v #25734 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119"
00:21:32 v #25735 > > y1="424" x2="119" y2="75"/>
00:21:32 v #25736 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="127"
00:21:32 v #25737 > > y1="424" x2="127" y2="75"/>
00:21:32 v #25738 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="134"
00:21:32 v #25739 > > y1="424" x2="134" y2="75"/>
00:21:32 v #25740 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="141"
00:21:32 v #25741 > > y1="424" x2="141" y2="75"/>
00:21:32 v #25742 > > │ <li...nts="585,199 590,199 "/>
00:21:32 v #25743 > > │ <text x="595" y="156" dy="0.5ex" text-anchor="start"
00:21:32 v #25744 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1"
00:21:32 v #25745 > > fill="#FFFFFF">
00:21:32 v #25746 > > │ 100.0
00:21:32 v #25747 > > │ </text>
00:21:32 v #25748 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF"
00:21:32 v #25749 > > stroke-width="1" points="585,156 590,156 "/>
00:21:32 v #25750 > > │ <text x="595" y="114" dy="0.5ex" text-anchor="start"
00:21:32 v #25751 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1"
00:21:32 v #25752 > > fill="#FFFFFF">
00:21:32 v #25753 > > │ 110.0
00:21:32 v #25754 > > │ </text>
00:21:32 v #25755 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF"
00:21:32 v #25756 > > stroke-width="1" points="585,114 590,114 "/>
00:21:32 v #25757 > > │ <polyline fill="none" opacity="1" stroke="#FF0000"
00:21:32 v #25758 > > stroke-width="1" points="69,343 77,325 84,307 91,290 98,275 105,259 112,245
00:21:32 v #25759 > > 119,231 127,219 134,207 141,196 148,184 155,174 162,164 169,155 176,147 184,139
00:21:32 v #25760 > > 191,132 198,126 205,119 212,114 219,109 226,104 233,100 241,96 248,93 255,91
00:21:32 v #25761 > > 262,89 269,88 276,86 283,86 290,85 298,86 305,87 312,88 319,90 326,92 333,95
00:21:32 v #25762 > > 340,98 348,102 355,106 362,110 369,115 376,120 383,126 390,132 397,139 405,146
00:21:32 v #25763 > > 412,153 419,161 426,169 433,178 440,187 447,197 454,207 462,217 469,228 476,239
00:21:32 v #25764 > > 483,250 490,262 497,274 504,287 511,300 519,313 526,326 533,340 540,355 547,369
00:21:32 v #25765 > > 554,384 561,399 569,415 "/>
00:21:32 v #25766 > > │ <rect x="421" y="235" width="159" height="30" opacity="1"
00:21:32 v #25767 > > fill="none" stroke="#FFFFFF"/>
00:21:32 v #25768 > > │ <text x="461" y="245" dy="0.76em" text-anchor="start"
00:21:32 v #25769 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1"
00:21:32 v #25770 > > fill="#FFFFFF">
00:21:32 v #25771 > > │ horizontal range (m)
00:21:32 v #25772 > > │ </text>
00:21:32 v #25773 > > │ <polyline fill="none" opacity="1" stroke="#FF0000"
00:21:32 v #25774 > > stroke-width="1" points="431,250 451,250 "/>
00:21:32 v #25775 > > │ </svg>
00:21:32 v #25776 > > │
00:21:32 v #25777 > >
00:21:32 v #25778 > > ── [ 822.13ms - stdout ] ───────────────────────────────────────────────────────
00:21:32 v #25779 > > │ 00:00:16 d #31 runtime.execute_with_options_async / {
00:21:32 v #25780 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:32 v #25781 > > arguments = US5_1; options = { command =
00:21:32 v #25782 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:32 v #25783 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:32 v #25784 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:32 v #25785 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:32 v #25786 > > │ 00:00:16 v #32 > Creating
00:21:32 v #25787 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/8a3ef67f953e2a32e5071e8
00:21:32 v #25788 > > c55259d45275b376bbff5ccca65f5dad1aeac78c0.svg
00:21:32 v #25789 > > │ 00:00:16 d #33 runtime.execute_with_options_async / {
00:21:32 v #25790 > > exit_code = 0; output_length = 134 }
00:21:32 v #25791 > > │
00:21:32 v #25792 > >
00:21:32 v #25793 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:32 v #25794 > > //// test
00:21:32 v #25795 > >
00:21:32 v #25796 > > inl best_angle (min, max) =
00:21:32 v #25797 > >     let rec loop theta_deg (best_range, best_theta_deg) =
00:21:32 v #25798 > >         if theta_deg > max
00:21:32 v #25799 > >         then best_range, best_theta_deg
00:21:32 v #25800 > >         else
00:21:32 v #25801 > >             inl range = baseball_range 0.01 45 theta_deg
00:21:32 v #25802 > >             loop
00:21:32 v #25803 > >                 (theta_deg + 1)
00:21:32 v #25804 > >                 (if range > best_range
00:21:32 v #25805 > >                     then range, theta_deg
00:21:32 v #25806 > >                     else best_range, best_theta_deg)
00:21:32 v #25807 > >     loop min (0f64, min)
00:21:32 v #25808 > >
00:21:32 v #25809 > > best_angle (30f64, 60f64)
00:21:32 v #25810 > > |> _assert_eq (116.77499158246208, 41)
00:21:33 v #25811 > >
00:21:33 v #25812 > > ── [ 510.92ms - stdout ] ───────────────────────────────────────────────────────
00:21:33 v #25813 > > │ __assert_eq / actual: struct (116.7749916, 41.0) / expected:
00:21:33 v #25814 > > struct (116.7749916, 41.0)
00:21:33 v #25815 > > │
00:21:33 v #25816 > >
00:21:33 v #25817 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:33 v #25818 > > │ ### relativity_ps
00:21:33 v #25819 > >
00:21:33 v #25820 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:33 v #25821 > > inl relativity_ps fs (st : particle_state) =
00:21:33 v #25822 > >     inl f_net = fs |> listm.map (fun f => f st) |> sum_vec
00:21:33 v #25823 > >     inl c = 299792458
00:21:33 v #25824 > >     inl u = st.velocity ^/ c
00:21:33 v #25825 > >     inl acc = sqrt (1 - (u <.> u)) *^ (f_net ^-^ (f_net <.> u) *^ u) ^/ st.mass
00:21:33 v #25826 > >     d_particle_state {
00:21:33 v #25827 > >         dmdt = 0
00:21:33 v #25828 > >         dqdt = 0
00:21:33 v #25829 > >         dtdt = 1
00:21:33 v #25830 > >         drdt = st.velocity
00:21:33 v #25831 > >         dvdt = acc
00:21:33 v #25832 > >     }
00:21:33 v #25833 > >
00:21:33 v #25834 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:33 v #25835 > > //// test
00:21:33 v #25836 > >
00:21:33 v #25837 > > inl year = 365.25 * 24 * 60 * 60
00:21:33 v #25838 > > inl c = 299792458
00:21:33 v #25839 > > inl ~method = runge_kutta_4 100000
00:21:33 v #25840 > > inl forces = [[ fun _ => 10 *^ i_hat () ]]
00:21:33 v #25841 > > inl (particle_state default_particle_state') = default_particle_state ()
00:21:33 v #25842 > > inl initial_state =
00:21:33 v #25843 > >     particle_state { default_particle_state' with
00:21:33 v #25844 > >         mass = 1
00:21:33 v #25845 > >     }
00:21:33 v #25846 > >
00:21:33 v #25847 > > inl newton_states = solver_ method (newton_second_ps forces) initial_state
00:21:33 v #25848 > > inl relativity_states = solver_ method (relativity_ps forces) initial_state
00:21:33 v #25849 > >
00:21:33 v #25850 > > inl newton_x, newton_y =
00:21:33 v #25851 > >     newton_states
00:21:33 v #25852 > >     >> Some
00:21:33 v #25853 > >     |> seq.take_while_ (fun (particle_state st) (_ : i32) => st.time <= year)
00:21:33 v #25854 > >     |> listm.map (fun (particle_state st) => st.time / year, st.velocity.x / c)
00:21:33 v #25855 > >     |> listm'.unzip
00:21:33 v #25856 > >
00:21:33 v #25857 > > inl _, relativity_y =
00:21:33 v #25858 > >     relativity_states
00:21:33 v #25859 > >     >> Some
00:21:33 v #25860 > >     |> seq.take_while_ (fun (particle_state st) (_ : i32) => st.time <= year)
00:21:33 v #25861 > >     |> listm.map (fun (particle_state st) => st.time / year, st.velocity.x / c)
00:21:33 v #25862 > >     |> listm'.unzip
00:21:33 v #25863 > >
00:21:33 v #25864 > > inl newton_x = newton_x |> listm'.box |> listm'.to_array'
00:21:33 v #25865 > > inl newton_y = newton_y |> listm'.box |> listm'.to_array'
00:21:33 v #25866 > > inl relativity_y = relativity_y |> listm'.box |> listm'.to_array'
00:21:33 v #25867 > >
00:21:33 v #25868 > > "response to a constant force",
00:21:33 v #25869 > > "time (years)",
00:21:33 v #25870 > > "velocity (multiples of c)",
00:21:33 v #25871 > > ;[[
00:21:33 v #25872 > >     "newtonian", newton_x, newton_y
00:21:33 v #25873 > >     "relativistic", newton_x, relativity_y
00:21:33 v #25874 > > ]]
00:21:33 v #25875 > >
00:21:33 v #25876 > > ── [ 427.54ms - return value ] ─────────────────────────────────────────────────
00:21:33 v #25877 > > │ <svg width="640" height="480" viewBox="0 0 640 480"
00:21:33 v #25878 > > xmlns="http://www.w3.org/2000/svg">
00:21:33 v #25879 > > │ <rect x="0" y="0" width="640" height="480" opacity="1"
00:21:33 v #25880 > > fill="#141414" stroke="none"/>
00:21:33 v #25881 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"
00:21:33 v #25882 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1"
00:21:33 v #25883 > > fill="#FFFFFF">
00:21:33 v #25884 > > │ response to a constant force
00:21:33 v #25885 > > │ </text>
00:21:33 v #25886 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="59"
00:21:33 v #25887 > > y1="424" x2="59" y2="75"/>
00:21:33 v #25888 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69"
00:21:33 v #25889 > > y1="424" x2="69" y2="75"/>
00:21:33 v #25890 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="79"
00:21:33 v #25891 > > y1="424" x2="79" y2="75"/>
00:21:33 v #25892 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="89"
00:21:33 v #25893 > > y1="424" x2="89" y2="75"/>
00:21:33 v #25894 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="99"
00:21:33 v #25895 > > y1="424" x2="99" y2="75"/>
00:21:33 v #25896 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="109"
00:21:33 v #25897 > > y1="424" x2="109" y2="75"/>
00:21:33 v #25898 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119"
00:21:33 v #25899 > > y1="424" x2="119" y2="75"/>
00:21:33 v #25900 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="129"
00:21:33 v #25901 > > y1="424" x2="129" y2="75"/>
00:21:33 v #25902 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="139"
00:21:33 v #25903 > > y1="424" x2="139" y2="75"/>
00:21:33 v #25904 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="149"
00:21:33 v #25905 > > y1="424" x2="149" y2="75"/>
00:21:33 v #25906 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="159"
00:21:33 v #25907 > > y1="424" x2="159" y2="75"/>
00:21:33 v #25908 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="169"
00:21:33 v #25909 > > y1="424" x2="169" y2="75"/>
00:21:33 v #25910 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="179"
00:21:33 v #25911 > > y1="424" x2="179" y2="75"/>
00:21:33 v #25912 > > │ <line... 393,238 394,238 396,237 397,237 399,236 401,235
00:21:33 v #25913 > > 402,235 404,234 405,234 407,233 409,233 410,232 412,231 413,231 415,230 416,230
00:21:33 v #25914 > > 418,229 420,229 421,228 423,228 424,227 426,227 428,226 429,225 431,225 432,224
00:21:33 v #25915 > > 434,224 435,223 437,223 439,222 440,222 442,221 443,221 445,220 447,220 448,219
00:21:33 v #25916 > > 450,219 451,218 453,218 454,217 456,217 458,216 459,216 461,215 462,215 464,214
00:21:33 v #25917 > > 466,214 467,213 469,213 470,213 472,212 473,212 475,211 477,211 478,210 480,210
00:21:33 v #25918 > > 481,209 483,209 485,208 486,208 488,208 489,207 491,207 492,206 494,206 496,205
00:21:33 v #25919 > > 497,205 499,204 500,204 502,204 504,203 505,203 507,202 508,202 510,202 511,201
00:21:33 v #25920 > > 513,201 515,200 516,200 518,200 519,199 521,199 523,198 524,198 526,198 527,197
00:21:33 v #25921 > > 529,197 531,196 532,196 534,196 535,195 537,195 538,194 540,194 542,194 543,193
00:21:33 v #25922 > > 545,193 546,193 548,192 550,192 551,192 553,191 554,191 556,190 557,190 559,190
00:21:33 v #25923 > > 561,189 562,189 564,189 565,188 567,188 569,188 "/>
00:21:33 v #25924 > > │ <rect x="464" y="227" width="116" height="45" opacity="1"
00:21:33 v #25925 > > fill="none" stroke="#FFFFFF"/>
00:21:33 v #25926 > > │ <text x="504" y="237" dy="0.76em" text-anchor="start"
00:21:33 v #25927 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1"
00:21:33 v #25928 > > fill="#FFFFFF">
00:21:33 v #25929 > > │ newtonian
00:21:33 v #25930 > > │ </text>
00:21:33 v #25931 > > │ <text x="504" y="252" dy="0.76em" text-anchor="start"
00:21:33 v #25932 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1"
00:21:33 v #25933 > > fill="#FFFFFF">
00:21:33 v #25934 > > │ relativistic
00:21:33 v #25935 > > │ </text>
00:21:33 v #25936 > > │ <polyline fill="none" opacity="1" stroke="#FF0000"
00:21:33 v #25937 > > stroke-width="1" points="474,242 494,242 "/>
00:21:33 v #25938 > > │ <polyline fill="none" opacity="1" stroke="#0000FF"
00:21:33 v #25939 > > stroke-width="1" points="474,257 494,257 "/>
00:21:33 v #25940 > > │ </svg>
00:21:33 v #25941 > > │
00:21:33 v #25942 > >
00:21:33 v #25943 > > ── [ 429.33ms - stdout ] ───────────────────────────────────────────────────────
00:21:33 v #25944 > > │ 00:00:18 d #34 runtime.execute_with_options_async / {
00:21:33 v #25945 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:33 v #25946 > > arguments = US5_1; options = { command =
00:21:33 v #25947 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:33 v #25948 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:33 v #25949 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:33 v #25950 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:33 v #25951 > > │ 00:00:18 v #35 > Creating
00:21:33 v #25952 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/5e278a736af1809d8dcdc13
00:21:33 v #25953 > > 453b35993d336214d079bbcd9b2cf063181d8e59d.svg
00:21:33 v #25954 > > │ 00:00:18 d #36 runtime.execute_with_options_async / {
00:21:33 v #25955 > > exit_code = 0; output_length = 134 }
00:21:33 v #25956 > > │
00:21:33 v #25957 > >
00:21:33 v #25958 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:33 v #25959 > > inl uniform_lorentz_force v_e v_b (st : particle_state) =
00:21:33 v #25960 > >     st.charge *^ (v_e ^+^ st.velocity >< v_b)
00:21:34 v #25961 > >
00:21:34 v #25962 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:34 v #25963 > > //// test
00:21:34 v #25964 > >
00:21:34 v #25965 > > inl c : f64 = 299792458
00:21:34 v #25966 > > inl ~method = runge_kutta_4 0.000000001
00:21:34 v #25967 > > inl forces = [[ uniform_lorentz_force (zero_vec ()) (k_hat ()) ]]
00:21:34 v #25968 > > inl (particle_state default_particle_state') = default_particle_state ()
00:21:34 v #25969 > > inl initial_state =
00:21:34 v #25970 > >     particle_state { default_particle_state' with
00:21:34 v #25971 > >         mass = 0.000000000000000000000000001672621898
00:21:34 v #25972 > >         charge = 0.0000000000000000001602176621
00:21:34 v #25973 > >         velocity = 0.8 *^ (c *^ j_hat ())
00:21:34 v #25974 > >     }
00:21:34 v #25975 > >
00:21:34 v #25976 > > inl newton_states = solver_ method (newton_second_ps forces) initial_state
00:21:34 v #25977 > > inl relativity_states = solver_ method (relativity_ps forces) initial_state
00:21:34 v #25978 > >
00:21:34 v #25979 > > inl newton_x, newton_y =
00:21:34 v #25980 > >     newton_states
00:21:34 v #25981 > >     >> Some
00:21:34 v #25982 > >     |> seq.take_while_ (fun (particle_state st) i => i < 100i32)
00:21:34 v #25983 > >     |> listm.map (fun (particle_state st) => st.pos_vec.x, st.pos_vec.y)
00:21:34 v #25984 > >     |> listm'.unzip
00:21:34 v #25985 > >
00:21:34 v #25986 > > inl relativity_x, relativity_y =
00:21:34 v #25987 > >     relativity_states
00:21:34 v #25988 > >     >> Some
00:21:34 v #25989 > >     |> seq.take_while_ (fun (particle_state st) i => i < 165i32)
00:21:34 v #25990 > >     |> listm.map (fun (particle_state st) => st.pos_vec.x, st.pos_vec.y)
00:21:34 v #25991 > >     |> listm'.unzip
00:21:34 v #25992 > >
00:21:34 v #25993 > > inl newton_x = newton_x |> listm'.box |> listm'.to_array'
00:21:34 v #25994 > > inl newton_y = newton_y |> listm'.box |> listm'.to_array'
00:21:34 v #25995 > >
00:21:34 v #25996 > > inl relativity_x = relativity_x |> listm'.box |> listm'.to_array'
00:21:34 v #25997 > > inl relativity_y = relativity_y |> listm'.box |> listm'.to_array'
00:21:34 v #25998 > >
00:21:34 v #25999 > > "proton in a 1-t magnetic field",
00:21:34 v #26000 > > "x (m)",
00:21:34 v #26001 > > "y (m)",
00:21:34 v #26002 > > ;[[
00:21:34 v #26003 > >     "newtonian", newton_x, newton_y
00:21:34 v #26004 > >     "relativistic", relativity_x, relativity_y
00:21:34 v #26005 > > ]]
00:21:34 v #26006 > >
00:21:34 v #26007 > > ── [ 336.78ms - return value ] ─────────────────────────────────────────────────
00:21:34 v #26008 > > │ <svg width="640" height="480" viewBox="0 0 640 480"
00:21:34 v #26009 > > xmlns="http://www.w3.org/2000/svg">
00:21:34 v #26010 > > │ <rect x="0" y="0" width="640" height="480" opacity="1"
00:21:34 v #26011 > > fill="#141414" stroke="none"/>
00:21:34 v #26012 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"
00:21:34 v #26013 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1"
00:21:34 v #26014 > > fill="#FFFFFF">
00:21:34 v #26015 > > │ proton in a 1-t magnetic field
00:21:34 v #26016 > > │ </text>
00:21:34 v #26017 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="58"
00:21:34 v #26018 > > y1="424" x2="58" y2="75"/>
00:21:34 v #26019 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69"
00:21:34 v #26020 > > y1="424" x2="69" y2="75"/>
00:21:34 v #26021 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="81"
00:21:34 v #26022 > > y1="424" x2="81" y2="75"/>
00:21:34 v #26023 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="93"
00:21:34 v #26024 > > y1="424" x2="93" y2="75"/>
00:21:34 v #26025 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="105"
00:21:34 v #26026 > > y1="424" x2="105" y2="75"/>
00:21:34 v #26027 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="117"
00:21:34 v #26028 > > y1="424" x2="117" y2="75"/>
00:21:34 v #26029 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="129"
00:21:34 v #26030 > > y1="424" x2="129" y2="75"/>
00:21:34 v #26031 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="141"
00:21:34 v #26032 > > y1="424" x2="141" y2="75"/>
00:21:34 v #26033 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="153"
00:21:34 v #26034 > > y1="424" x2="153" y2="75"/>
00:21:34 v #26035 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="165"
00:21:34 v #26036 > > y1="424" x2="165" y2="75"/>
00:21:34 v #26037 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="177"
00:21:34 v #26038 > > y1="424" x2="177" y2="75"/>
00:21:34 v #26039 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="189"
00:21:34 v #26040 > > y1="424" x2="189" y2="75"/>
00:21:34 v #26041 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="201"
00:21:34 v #26042 > > y1="424" x2="201" y2="75"/>
00:21:34 v #26043 > > │ <...555,197 560,206 563,216 566,225 567,234 568,244 568,253
00:21:34 v #26044 > > 568,263 566,272 564,281 561,291 557,300 552,309 547,317 540,326 533,334 526,342
00:21:34 v #26045 > > 517,350 508,357 499,364 488,371 478,377 466,383 455,388 442,393 430,398 417,402
00:21:34 v #26046 > > 403,405 390,408 376,410 362,412 348,414 333,414 319,415 305,414 290,414 276,412
00:21:34 v #26047 > > 262,410 248,408 235,405 221,401 208,397 196,393 183,388 171,383 160,377 149,371
00:21:34 v #26048 > > 139,364 129,357 120,350 112,342 104,334 97,326 91,317 86,309 81,300 77,290
00:21:34 v #26049 > > 74,281 72,272 70,263 70,253 70,244 71,234 72,225 75,215 78,206 83,197 88,188
00:21:34 v #26050 > > 93,180 100,171 107,163 115,155 124,148 133,140 143,133 153,127 164,121 176,115
00:21:34 v #26051 > > 188,110 200,105 213,101 226,97 239,94 253,91 267,89 281,87 295,86 310,85 324,85
00:21:34 v #26052 > > 338,86 353,87 367,88 381,90 394,93 408,96 421,100 434,104 447,109 459,114
00:21:34 v #26053 > > 470,119 482,125 492,131 502,138 512,145 520,153 529,161 536,169 543,177 549,186
00:21:34 v #26054 > > 554,194 558,203 562,213 565,222 567,231 568,241 569,250 "/>
00:21:34 v #26055 > > │ <rect x="464" y="227" width="116" height="45" opacity="1"
00:21:34 v #26056 > > fill="none" stroke="#FFFFFF"/>
00:21:34 v #26057 > > │ <text x="504" y="237" dy="0.76em" text-anchor="start"
00:21:34 v #26058 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1"
00:21:34 v #26059 > > fill="#FFFFFF">
00:21:34 v #26060 > > │ newtonian
00:21:34 v #26061 > > │ </text>
00:21:34 v #26062 > > │ <text x="504" y="252" dy="0.76em" text-anchor="start"
00:21:34 v #26063 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1"
00:21:34 v #26064 > > fill="#FFFFFF">
00:21:34 v #26065 > > │ relativistic
00:21:34 v #26066 > > │ </text>
00:21:34 v #26067 > > │ <polyline fill="none" opacity="1" stroke="#FF0000"
00:21:34 v #26068 > > stroke-width="1" points="474,242 494,242 "/>
00:21:34 v #26069 > > │ <polyline fill="none" opacity="1" stroke="#0000FF"
00:21:34 v #26070 > > stroke-width="1" points="474,257 494,257 "/>
00:21:34 v #26071 > > │ </svg>
00:21:34 v #26072 > > │
00:21:34 v #26073 > >
00:21:34 v #26074 > > ── [ 338.94ms - stdout ] ───────────────────────────────────────────────────────
00:21:34 v #26075 > > │ 00:00:18 d #37 runtime.execute_with_options_async / {
00:21:34 v #26076 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:34 v #26077 > > arguments = US5_1; options = { command =
00:21:34 v #26078 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:34 v #26079 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:34 v #26080 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:34 v #26081 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:34 v #26082 > > │ 00:00:18 v #38 > Creating
00:21:34 v #26083 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/bb8f45eff587eeea2eba0bc
00:21:34 v #26084 > > 2ee5a7127055bf92453772b584569d1b580f6f89c.svg
00:21:34 v #26085 > > │ 00:00:18 d #39 runtime.execute_with_options_async / {
00:21:34 v #26086 > > exit_code = 0; output_length = 134 }
00:21:34 v #26087 > > │
00:21:34 v #26088 > >
00:21:34 v #26089 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:34 v #26090 > > │ #### system kinetic energy versus time 1
00:21:34 v #26091 > >
00:21:34 v #26092 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:34 v #26093 > > //// test
00:21:34 v #26094 > >
00:21:34 v #26095 > > inl central_force f (particle_state st1) (particle_state st2) =
00:21:34 v #26096 > >     inl r1 = st1.pos_vec
00:21:34 v #26097 > >     inl r2 = st2.pos_vec
00:21:34 v #26098 > >     inl r21 = r2 ^-^ r1
00:21:34 v #26099 > >     inl r21mag = magnitude r21
00:21:34 v #26100 > >     f r21mag *^ r21 ^/ r21mag
00:21:34 v #26101 > >
00:21:34 v #26102 > > inl billiard_force k re =
00:21:34 v #26103 > >     inl f r =
00:21:34 v #26104 > >         if r >= re
00:21:34 v #26105 > >         then 0
00:21:34 v #26106 > >         else -k * (r - re)
00:21:34 v #26107 > >     central_force f
00:21:34 v #26108 > >
00:21:34 v #26109 > > type force_vector = vec
00:21:34 v #26110 > > type two_body_force = particle_state -> particle_state -> force_vector
00:21:34 v #26111 > >
00:21:34 v #26112 > > union force =
00:21:34 v #26113 > >     | ExternalForce : i32 * one_body_force
00:21:34 v #26114 > >     | InternalForce : i32 * i32 * two_body_force
00:21:34 v #26115 > >
00:21:34 v #26116 > > nominal multi_particle_state = list particle_state
00:21:34 v #26117 > >
00:21:34 v #26118 > > nominal d_multi_particle_state = list d_particle_state
00:21:34 v #26119 > >
00:21:34 v #26120 > > inl force_on n sts force =
00:21:34 v #26121 > >     match force with
00:21:34 v #26122 > >     | ExternalForce (n0, f_one_body) =>
00:21:34 v #26123 > >         if n = n0
00:21:34 v #26124 > >         then f_one_body
00:21:34 v #26125 > >         else fun _ => zero_vec ()
00:21:34 v #26126 > >     | InternalForce (n0, n1, f_two_body) =>
00:21:34 v #26127 > >         if n = n0
00:21:34 v #26128 > >         then f_two_body (sts |> listm'.item n1)
00:21:34 v #26129 > >         elif n = n1
00:21:34 v #26130 > >         then f_two_body (sts |> listm'.item n0)
00:21:34 v #26131 > >         else fun _ => zero_vec ()
00:21:34 v #26132 > >
00:21:34 v #26133 > > inl forces_on n (multi_particle_state sts) fs =
00:21:34 v #26134 > >     fs |> listm.map (force_on n sts)
00:21:34 v #26135 > >
00:21:34 v #26136 > > inl newton_second_mps fs (multi_particle_state sts) : d_multi_particle_state =
00:21:34 v #26137 > >     inl deriv (n, st) =
00:21:34 v #26138 > >         newton_second_ps (forces_on n (multi_particle_state sts) fs) st
00:21:34 v #26139 > >     sts |> listm'.indexed |> listm.map deriv |> d_multi_particle_state
00:21:34 v #26140 > >
00:21:34 v #26141 > > instance (+++) d_multi_particle_state = fun (d_multi_particle_state dsts1)
00:21:34 v #26142 > > (d_multi_particle_state dsts2) =>
00:21:34 v #26143 > >     d_multi_particle_state (listm'.zip_with_ (+++) dsts1 dsts2)
00:21:34 v #26144 > >
00:21:34 v #26145 > > instance scale d_multi_particle_state = fun w (d_multi_particle_state dsts) =>
00:21:34 v #26146 > >     d_multi_particle_state (dsts |> listm.map (scale w))
00:21:34 v #26147 > >
00:21:34 v #26148 > > instance shift multi_particle_state = fun dt dsts (multi_particle_state sts) =>
00:21:34 v #26149 > >     inl (d_multi_particle_state dsts) =
00:21:34 v #26150 > >         real
00:21:34 v #26151 > >             match dsts with
00:21:34 v #26152 > >             | d_multi_particle_state _ => dsts
00:21:34 v #26153 > >     listm'.zip_with_ (shift dt) dsts sts |> multi_particle_state
00:21:34 v #26154 > >
00:21:34 v #26155 > > inl euler_cromer_mps dt : numerical_method multi_particle_state
00:21:34 v #26156 > > d_multi_particle_state =
00:21:34 v #26157 > >     fun deriv mpst0 =>
00:21:34 v #26158 > >         inl mpst1 = euler dt deriv mpst0
00:21:34 v #26159 > >         inl (multi_particle_state sts0) = mpst0
00:21:34 v #26160 > >         inl (multi_particle_state sts1) = mpst1
00:21:34 v #26161 > >         sts1
00:21:34 v #26162 > >         |> listm'.zip_ sts0
00:21:34 v #26163 > >         |> listm.map (fun ((particle_state st0), (particle_state st1)) =>
00:21:34 v #26164 > >             particle_state {
00:21:34 v #26165 > >                 st1 with
00:21:34 v #26166 > >                     pos_vec = st0.pos_vec ^+^ st1.velocity ^* dt
00:21:34 v #26167 > >             }
00:21:34 v #26168 > >         )
00:21:34 v #26169 > >         |> multi_particle_state
00:21:34 v #26170 > >
00:21:34 v #26171 > > inl update_mps (method : numerical_method multi_particle_state
00:21:34 v #26172 > > d_multi_particle_state) =
00:21:34 v #26173 > >     newton_second_mps >> method
00:21:34 v #26174 > >
00:21:34 v #26175 > > inl states_mps (method : numerical_method multi_particle_state
00:21:34 v #26176 > > d_multi_particle_state) =
00:21:34 v #26177 > >     newton_second_mps >> method >> seq.iterate_
00:21:34 v #26178 > >
00:21:34 v #26179 > >
00:21:34 v #26180 > > inl kinetic_energy (particle_state st) =
00:21:34 v #26181 > >     inl m = st.mass
00:21:34 v #26182 > >     inl v = magnitude st.velocity
00:21:34 v #26183 > >     0.5 * m * v ** 2
00:21:34 v #26184 > >
00:21:34 v #26185 > > inl system_ke (multi_particle_state sts) =
00:21:34 v #26186 > >     sts |> listm.map kinetic_energy |> listm'.sum
00:21:34 v #26187 > >
00:21:34 v #26188 > > inl linear_spring_pe k re (particle_state st1) (particle_state st2) =
00:21:34 v #26189 > >     inl r1 = st1.pos_vec
00:21:34 v #26190 > >     inl r2 = st2.pos_vec
00:21:34 v #26191 > >     inl r21 = r2 ^-^ r1
00:21:34 v #26192 > >     inl r21mag = magnitude r21
00:21:34 v #26193 > >     k * (r21mag - re) ** 2 / 2
00:21:34 v #26194 > >
00:21:34 v #26195 > > inl earth_surface_gravity_pe (particle_state st) =
00:21:34 v #26196 > >     inl g = 9.80665
00:21:34 v #26197 > >     inl m = st.mass
00:21:34 v #26198 > >     inl z = st.pos_vec.z
00:21:34 v #26199 > >     m * g * z
00:21:34 v #26200 > >
00:21:34 v #26201 > > inl two_springs_pe (multi_particle_state sts) =
00:21:34 v #26202 > >     inl st0 = sts |> listm'.item 0i32
00:21:34 v #26203 > >     inl st1 = sts |> listm'.item 1i32
00:21:34 v #26204 > >     linear_spring_pe 100 0.5 (default_particle_state ()) st0
00:21:34 v #26205 > >     + linear_spring_pe 100 0.5 st0 st1
00:21:34 v #26206 > >     + earth_surface_gravity_pe st0
00:21:34 v #26207 > >     + earth_surface_gravity_pe st1
00:21:34 v #26208 > >
00:21:34 v #26209 > > inl two_springs_me mpst =
00:21:34 v #26210 > >     system_ke mpst + two_springs_pe mpst
00:21:34 v #26211 > >
00:21:34 v #26212 > > inl ball_radius () = 0.03
00:21:34 v #26213 > >
00:21:34 v #26214 > > inl billiard_forces k =
00:21:34 v #26215 > >     [[ InternalForce (0, 1, billiard_force k (2 * ball_radius ())) ]]
00:21:34 v #26216 > >
00:21:34 v #26217 > > inl billiard_update n_method k dt =
00:21:34 v #26218 > >     update_mps (n_method dt) (billiard_forces k)
00:21:34 v #26219 > >
00:21:34 v #26220 > > inl billiard_initial () =
00:21:34 v #26221 > >     inl ball_mass = 0.160
00:21:34 v #26222 > >     inl (particle_state default_particle_state') = default_particle_state ()
00:21:34 v #26223 > >     multi_particle_state [[
00:21:34 v #26224 > >         particle_state {
00:21:34 v #26225 > >             default_particle_state' with
00:21:34 v #26226 > >                 mass = ball_mass
00:21:34 v #26227 > >                 pos_vec = zero_vec ()
00:21:34 v #26228 > >                 velocity = 0.2 *^ i_hat ()
00:21:34 v #26229 > >         }
00:21:34 v #26230 > >         particle_state {
00:21:34 v #26231 > >             default_particle_state' with
00:21:34 v #26232 > >                 mass = ball_mass
00:21:34 v #26233 > >                 pos_vec = i_hat () ^+^ 0.02 *^ j_hat ()
00:21:34 v #26234 > >                 velocity = zero_vec ()
00:21:34 v #26235 > >         }
00:21:34 v #26236 > >     ]]
00:21:34 v #26237 > >
00:21:34 v #26238 > > inl billiard_states ~n_method k dt =
00:21:34 v #26239 > >     states_mps (n_method dt) (billiard_forces k) (billiard_initial ())
00:21:34 v #26240 > >
00:21:34 v #26241 > > inl billiard_states_finite n_method k dt =
00:21:34 v #26242 > >     billiard_states n_method k dt
00:21:34 v #26243 > >     >> Some
00:21:34 v #26244 > >     |> seq.take_while_ (fun (multi_particle_state mpst) (_ : i32) =>
00:21:34 v #26245 > >         (mpst |> listm'.item 0i32).time <= 10
00:21:34 v #26246 > >     )
00:21:34 v #26247 > >
00:21:34 v #26248 > > inl momentum (particle_state st) =
00:21:34 v #26249 > >     inl m = st.mass
00:21:34 v #26250 > >     inl v = st.velocity
00:21:34 v #26251 > >     m *^ v
00:21:34 v #26252 > >
00:21:34 v #26253 > > inl system_p (multi_particle_state sts) =
00:21:34 v #26254 > >     sts |> listm.map momentum |> sum_vec
00:21:34 v #26255 > >
00:21:34 v #26256 > >
00:21:34 v #26257 > > inl time_ke_ec_x, time_ke_ec_y =
00:21:34 v #26258 > >     billiard_states_finite euler_cromer_mps 30 0.03
00:21:34 v #26259 > >     |> listm.map (fun (multi_particle_state mpst) =>
00:21:34 v #26260 > >         (mpst |> listm'.item 0i32).time, system_ke (multi_particle_state mpst)
00:21:34 v #26261 > >     )
00:21:34 v #26262 > >     |> listm'.unzip
00:21:34 v #26263 > >
00:21:34 v #26264 > > inl time_ke_rk4_x, time_ke_rk4_y =
00:21:34 v #26265 > >     billiard_states_finite runge_kutta_4 30 0.03
00:21:34 v #26266 > >     |> listm.map (fun (multi_particle_state mpst) =>
00:21:34 v #26267 > >         (mpst |> listm'.item 0i32).time, system_ke (multi_particle_state mpst)
00:21:34 v #26268 > >     )
00:21:34 v #26269 > >     |> listm'.unzip
00:21:34 v #26270 > >
00:21:34 v #26271 > > inl time_ke_ec_x = time_ke_ec_x |> listm'.box |> listm'.to_array'
00:21:34 v #26272 > > inl time_ke_ec_y = time_ke_ec_y |> listm'.box |> listm'.to_array'
00:21:34 v #26273 > >
00:21:34 v #26274 > > inl time_ke_rk4_x = time_ke_rk4_x |> listm'.box |> listm'.to_array'
00:21:34 v #26275 > > inl time_ke_rk4_y = time_ke_rk4_y |> listm'.box |> listm'.to_array'
00:21:34 v #26276 > >
00:21:34 v #26277 > > "system kinetic energy versus time",
00:21:34 v #26278 > > "time (s)",
00:21:34 v #26279 > > "system kinetic energy (j)",
00:21:34 v #26280 > > ;[[
00:21:34 v #26281 > >     "euler-cromer", time_ke_ec_x, time_ke_ec_y
00:21:34 v #26282 > >     "runge-kutta 4", time_ke_rk4_x, time_ke_rk4_y
00:21:34 v #26283 > > ]]
00:21:35 v #26284 > >
00:21:35 v #26285 > > ── [ 1.11s - return value ] ────────────────────────────────────────────────────
00:21:35 v #26286 > > │ <svg width="640" height="480" viewBox="0 0 640 480"
00:21:35 v #26287 > > xmlns="http://www.w3.org/2000/svg">
00:21:35 v #26288 > > │ <rect x="0" y="0" width="640" height="480" opacity="1"
00:21:35 v #26289 > > fill="#141414" stroke="none"/>
00:21:35 v #26290 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"
00:21:35 v #26291 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1"
00:21:35 v #26292 > > fill="#FFFFFF">
00:21:35 v #26293 > > │ system kinetic energy versus time
00:21:35 v #26294 > > │ </text>
00:21:35 v #26295 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="59"
00:21:35 v #26296 > > y1="424" x2="59" y2="75"/>
00:21:35 v #26297 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69"
00:21:35 v #26298 > > y1="424" x2="69" y2="75"/>
00:21:35 v #26299 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="79"
00:21:35 v #26300 > > y1="424" x2="79" y2="75"/>
00:21:35 v #26301 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="89"
00:21:35 v #26302 > > y1="424" x2="89" y2="75"/>
00:21:35 v #26303 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="99"
00:21:35 v #26304 > > y1="424" x2="99" y2="75"/>
00:21:35 v #26305 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="109"
00:21:35 v #26306 > > y1="424" x2="109" y2="75"/>
00:21:35 v #26307 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119"
00:21:35 v #26308 > > y1="424" x2="119" y2="75"/>
00:21:35 v #26309 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="129"
00:21:35 v #26310 > > y1="424" x2="129" y2="75"/>
00:21:35 v #26311 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="139"
00:21:35 v #26312 > > y1="424" x2="139" y2="75"/>
00:21:35 v #26313 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="149"
00:21:35 v #26314 > > y1="424" x2="149" y2="75"/>
00:21:35 v #26315 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="159"
00:21:35 v #26316 > > y1="424" x2="159" y2="75"/>
00:21:35 v #26317 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="169"
00:21:35 v #26318 > > y1="424" x2="169" y2="75"/>
00:21:35 v #26319 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="179"
00:21:35 v #26320 > > y1="424" x2="179" y2="75"/>
00:21:35 v #26321 > > │ ...,104 404,104 405,104 407,104 408,104 410,104 411,104
00:21:35 v #26322 > > 413,104 414,104 416,104 417,104 419,104 420,104 422,104 423,104 425,104 426,104
00:21:35 v #26323 > > 428,104 429,104 431,104 432,104 434,104 435,104 437,104 438,104 440,104 441,104
00:21:35 v #26324 > > 443,104 444,104 446,104 447,104 449,104 450,104 452,104 453,104 455,104 456,104
00:21:35 v #26325 > > 458,104 459,104 461,104 462,104 464,104 465,104 467,104 468,104 470,104 471,104
00:21:35 v #26326 > > 473,104 474,104 476,104 477,104 479,104 480,104 482,104 483,104 485,104 486,104
00:21:35 v #26327 > > 488,104 489,104 491,104 492,104 494,104 495,104 497,104 498,104 500,104 501,104
00:21:35 v #26328 > > 503,104 504,104 506,104 507,104 509,104 510,104 512,104 513,104 515,104 516,104
00:21:35 v #26329 > > 518,104 519,104 521,104 522,104 524,104 525,104 527,104 528,104 530,104 531,104
00:21:35 v #26330 > > 533,104 534,104 536,104 537,104 539,104 540,104 542,104 543,104 545,104 546,104
00:21:35 v #26331 > > 548,104 549,104 551,104 552,104 554,104 555,104 557,104 558,104 560,104 561,104
00:21:35 v #26332 > > 563,104 564,104 566,104 567,104 569,104 "/>
00:21:35 v #26333 > > │ <rect x="459" y="227" width="121" height="45" opacity="1"
00:21:35 v #26334 > > fill="none" stroke="#FFFFFF"/>
00:21:35 v #26335 > > │ <text x="499" y="237" dy="0.76em" text-anchor="start"
00:21:35 v #26336 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1"
00:21:35 v #26337 > > fill="#FFFFFF">
00:21:35 v #26338 > > │ euler-cromer
00:21:35 v #26339 > > │ </text>
00:21:35 v #26340 > > │ <text x="499" y="252" dy="0.76em" text-anchor="start"
00:21:35 v #26341 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1"
00:21:35 v #26342 > > fill="#FFFFFF">
00:21:35 v #26343 > > │ runge-kutta 4
00:21:35 v #26344 > > │ </text>
00:21:35 v #26345 > > │ <polyline fill="none" opacity="1" stroke="#FF0000"
00:21:35 v #26346 > > stroke-width="1" points="469,242 489,242 "/>
00:21:35 v #26347 > > │ <polyline fill="none" opacity="1" stroke="#0000FF"
00:21:35 v #26348 > > stroke-width="1" points="469,257 489,257 "/>
00:21:35 v #26349 > > │ </svg>
00:21:35 v #26350 > > │
00:21:35 v #26351 > >
00:21:35 v #26352 > > ── [ 1.11s - stdout ] ──────────────────────────────────────────────────────────
00:21:35 v #26353 > > │ 00:00:19 d #40 runtime.execute_with_options_async / {
00:21:35 v #26354 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:35 v #26355 > > arguments = US5_1; options = { command =
00:21:35 v #26356 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:35 v #26357 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:35 v #26358 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:35 v #26359 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:35 v #26360 > > │ 00:00:19 v #41 > Creating
00:21:35 v #26361 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/6c2e10892d6afcf0c02bfe4
00:21:35 v #26362 > > 4bc49895c6de5037e535b9df0fb226e37177775eb.svg
00:21:35 v #26363 > > │ 00:00:19 d #42 runtime.execute_with_options_async / {
00:21:35 v #26364 > > exit_code = 0; output_length = 134 }
00:21:35 v #26365 > > │
00:21:35 v #26366 > >
00:21:35 v #26367 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:35 v #26368 > > │ #### wave 1
00:21:35 v #26369 > >
00:21:35 v #26370 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:35 v #26371 > > //// test
00:21:35 v #26372 > >
00:21:35 v #26373 > > inl linear_spring k re (particle_state st1) (particle_state st2) =
00:21:35 v #26374 > >     inl r1 = st1.pos_vec
00:21:35 v #26375 > >     inl r2 = st2.pos_vec
00:21:35 v #26376 > >     inl r21 = r2 ^-^ r1
00:21:35 v #26377 > >     inl r21mag = magnitude r21
00:21:35 v #26378 > >     -k * (r21mag - re) *^ r21 ^/ r21mag
00:21:35 v #26379 > >
00:21:35 v #26380 > > inl fixed_linear_spring k re r1 =
00:21:35 v #26381 > >     inl (particle_state default_particle_state') = default_particle_state ()
00:21:35 v #26382 > >     linear_spring k re (particle_state { default_particle_state' with pos_vec =
00:21:35 v #26383 > > r1 })
00:21:35 v #26384 > >
00:21:35 v #26385 > > inl forces_string () =
00:21:35 v #26386 > >     [[
00:21:35 v #26387 > >         ExternalForce (0, fixed_linear_spring 5384 0 (zero_vec ()))
00:21:35 v #26388 > >         ExternalForce (63, fixed_linear_spring 5384 0 (0.65 *^ i_hat ()))
00:21:35 v #26389 > >     ]] ++ (
00:21:35 v #26390 > >         listm'.init_series 0 59 1
00:21:35 v #26391 > >         |> listm.map (fun n => InternalForce (n, n + 1, linear_spring 5384 0))
00:21:35 v #26392 > >     )
00:21:35 v #26393 > >
00:21:35 v #26394 > > inl string_update dt =
00:21:35 v #26395 > >     update_mps (runge_kutta_4 dt) (forces_string ())
00:21:35 v #26396 > >
00:21:35 v #26397 > > inl string_initial_overtone n =
00:21:35 v #26398 > >     inl ball_mass = 0.0008293 * 0.65 / 64
00:21:35 v #26399 > >     inl (particle_state default_particle_state') = default_particle_state ()
00:21:35 v #26400 > >     listm'.init_series 0.01 0.64 0.01
00:21:35 v #26401 > >     |> listm.map (fun x =>
00:21:35 v #26402 > >         inl y = 0.005 * sin (conv n * pi * x / 0.65)
00:21:35 v #26403 > >         particle_state {
00:21:35 v #26404 > >             default_particle_state' with
00:21:35 v #26405 > >                 mass = ball_mass
00:21:35 v #26406 > >                 pos_vec = x *^ i_hat () ^+^ y *^ j_hat ()
00:21:35 v #26407 > >                 velocity = zero_vec ()
00:21:35 v #26408 > >         }
00:21:35 v #26409 > >     )
00:21:35 v #26410 > >     |> multi_particle_state
00:21:35 v #26411 > >
00:21:35 v #26412 > > inl string_initial_pluck () =
00:21:35 v #26413 > >     inl ball_mass = 0.0008293 * 0.65 / 64
00:21:35 v #26414 > >     inl (particle_state default_particle_state') = default_particle_state ()
00:21:35 v #26415 > >     listm'.init_series 0.01 0.64 0.01
00:21:35 v #26416 > >     |> listm.map (fun x =>
00:21:35 v #26417 > >         inl y =
00:21:35 v #26418 > >             inl n = if x <= 0.51 then 0 else 0.65
00:21:35 v #26419 > >             0.005 / (0.51 - n) * (x - n)
00:21:35 v #26420 > >         particle_state {
00:21:35 v #26421 > >             default_particle_state' with
00:21:35 v #26422 > >                 mass = ball_mass
00:21:35 v #26423 > >                 pos_vec = x *^ i_hat () ^+^ y *^ j_hat ()
00:21:35 v #26424 > >                 velocity = zero_vec ()
00:21:35 v #26425 > >         }
00:21:35 v #26426 > >     )
00:21:35 v #26427 > >     |> multi_particle_state
00:21:35 v #26428 > >
00:21:35 v #26429 > > let main () =
00:21:35 v #26430 > >     inl ~frames = listm'.init_series 0 9 1f64
00:21:35 v #26431 > >     inl initial_state = string_initial_overtone 3i32
00:21:35 v #26432 > >     inl frames =
00:21:35 v #26433 > >         frames
00:21:35 v #26434 > >         |> listm.map (fun n =>
00:21:35 v #26435 > >             inl (multi_particle_state sts) =
00:21:35 v #26436 > >                 seq.iterate' (string_update 0.000025) initial_state |> fun f =>
00:21:35 v #26437 > > f 0f64
00:21:35 v #26438 > >             inl rs =
00:21:35 v #26439 > >                 [[ zero_vec () ]]
00:21:35 v #26440 > >                 ++ (sts |> listm.map (fun (particle_state st) => st.pos_vec))
00:21:35 v #26441 > >                 ++ [[ 0.65 *^ i_hat () ]]
00:21:35 v #26442 > >             inl x, y =
00:21:35 v #26443 > >                 rs
00:21:35 v #26444 > >                 |> listm.map (fun r => r.x, r.y)
00:21:35 v #26445 > >                 |> listm'.unzip
00:21:35 v #26446 > >             inl x = x |> listm'.box |> listm'.to_array'
00:21:35 v #26447 > >             inl y = y |> listm'.box |> listm'.to_array'
00:21:35 v #26448 > >             x, y
00:21:35 v #26449 > >         )
00:21:35 v #26450 > >         |> listm'.box |> listm'.to_array'
00:21:35 v #26451 > >
00:21:35 v #26452 > >     inl n = 0i32
00:21:35 v #26453 > >
00:21:35 v #26454 > >     inl x, y = a frames |> am'.index n
00:21:35 v #26455 > >
00:21:35 v #26456 > >     "wave",
00:21:35 v #26457 > >     "position (m)",
00:21:35 v #26458 > >     "displacement (m)",
00:21:35 v #26459 > >     ;[[
00:21:35 v #26460 > >         ($'$"{!n}"' : string), x, y
00:21:35 v #26461 > >     ]]
00:21:35 v #26462 > >
00:21:35 v #26463 > > ── [ 360.52ms - return value ] ─────────────────────────────────────────────────
00:21:35 v #26464 > > │ <svg width="640" height="480" viewBox="0 0 640 480"
00:21:35 v #26465 > > xmlns="http://www.w3.org/2000/svg">
00:21:35 v #26466 > > │ <rect x="0" y="0" width="640" height="480" opacity="1"
00:21:35 v #26467 > > fill="#141414" stroke="none"/>
00:21:35 v #26468 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"
00:21:35 v #26469 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1"
00:21:35 v #26470 > > fill="#FFFFFF">
00:21:35 v #26471 > > │ wave
00:21:35 v #26472 > > │ </text>
00:21:35 v #26473 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="62"
00:21:35 v #26474 > > y1="424" x2="62" y2="75"/>
00:21:35 v #26475 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69"
00:21:35 v #26476 > > y1="424" x2="69" y2="75"/>
00:21:35 v #26477 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="77"
00:21:35 v #26478 > > y1="424" x2="77" y2="75"/>
00:21:35 v #26479 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="85"
00:21:35 v #26480 > > y1="424" x2="85" y2="75"/>
00:21:35 v #26481 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="93"
00:21:35 v #26482 > > y1="424" x2="93" y2="75"/>
00:21:35 v #26483 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="100"
00:21:35 v #26484 > > y1="424" x2="100" y2="75"/>
00:21:35 v #26485 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="108"
00:21:35 v #26486 > > y1="424" x2="108" y2="75"/>
00:21:35 v #26487 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="116"
00:21:35 v #26488 > > y1="424" x2="116" y2="75"/>
00:21:35 v #26489 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="123"
00:21:35 v #26490 > > y1="424" x2="123" y2="75"/>
00:21:35 v #26491 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="131"
00:21:35 v #26492 > > y1="424" x2="131" y2="75"/>
00:21:35 v #26493 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="139"
00:21:35 v #26494 > > y1="424" x2="139" y2="75"/>
00:21:35 v #26495 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="146"
00:21:35 v #26496 > > y1="424" x2="146" y2="75"/>
00:21:35 v #26497 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="154"
00:21:35 v #26498 > > y1="424" x2="154" y2="75"/>
00:21:35 v #26499 > > │ <line opacity="1" stroke="#32...ne fill="none" opacity="1"
00:21:35 v #26500 > > stroke="#FFFFFF" stroke-width="1" points="585,250 590,250 "/>
00:21:35 v #26501 > > │ <text x="617" y="184" dy="0.5ex" text-anchor="end"
00:21:35 v #26502 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1"
00:21:35 v #26503 > > fill="#FFFFFF">
00:21:35 v #26504 > > │ 0.0
00:21:35 v #26505 > > │ </text>
00:21:35 v #26506 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF"
00:21:35 v #26507 > > stroke-width="1" points="585,184 590,184 "/>
00:21:35 v #26508 > > │ <text x="617" y="118" dy="0.5ex" text-anchor="end"
00:21:35 v #26509 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1"
00:21:35 v #26510 > > fill="#FFFFFF">
00:21:35 v #26511 > > │ 0.0
00:21:35 v #26512 > > │ </text>
00:21:35 v #26513 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF"
00:21:35 v #26514 > > stroke-width="1" points="585,118 590,118 "/>
00:21:35 v #26515 > > │ <polyline fill="none" opacity="1" stroke="#FF0000"
00:21:35 v #26516 > > stroke-width="1" points="69,250 77,226 85,203 93,181 100,160 108,141 116,124
00:21:35 v #26517 > > 123,110 131,99 139,91 146,87 154,85 162,88 169,93 177,102 185,115 192,129
00:21:35 v #26518 > > 200,147 208,167 215,188 223,211 231,234 238,258 246,282 254,305 261,327 269,347
00:21:35 v #26519 > > 277,365 284,381 292,394 300,404 307,411 315,415 323,415 331,411 338,404 346,394
00:21:35 v #26520 > > 354,381 361,365 369,347 377,327 384,305 392,282 400,258 407,234 415,211 423,188
00:21:35 v #26521 > > 430,167 438,147 446,129 453,115 461,102 469,93 476,88 484,85 492,87 499,91
00:21:35 v #26522 > > 507,99 515,110 522,124 530,141 538,160 545,181 553,203 561,226 569,250 "/>
00:21:35 v #26523 > > │ <rect x="525" y="235" width="55" height="30" opacity="1"
00:21:35 v #26524 > > fill="none" stroke="#FFFFFF"/>
00:21:35 v #26525 > > │ <text x="565" y="245" dy="0.76em" text-anchor="start"
00:21:35 v #26526 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1"
00:21:35 v #26527 > > fill="#FFFFFF">
00:21:35 v #26528 > > │ 0
00:21:35 v #26529 > > │ </text>
00:21:35 v #26530 > > │ <polyline fill="none" opacity="1" stroke="#FF0000"
00:21:35 v #26531 > > stroke-width="1" points="535,250 555,250 "/>
00:21:35 v #26532 > > │ </svg>
00:21:35 v #26533 > > │
00:21:35 v #26534 > >
00:21:35 v #26535 > > ── [ 362.69ms - stdout ] ───────────────────────────────────────────────────────
00:21:35 v #26536 > > │ 00:00:20 d #43 runtime.execute_with_options_async / {
00:21:35 v #26537 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:35 v #26538 > > arguments = US5_1; options = { command =
00:21:35 v #26539 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:35 v #26540 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:35 v #26541 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:35 v #26542 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:35 v #26543 > > │ 00:00:20 v #44 > Creating
00:21:35 v #26544 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/c7418df0ce04ccaab7c4d85
00:21:35 v #26545 > > e07df47a9669ac0ab4f1d50ec3d2fa160947066c1.svg
00:21:35 v #26546 > > │ 00:00:20 d #45 runtime.execute_with_options_async / {
00:21:35 v #26547 > > exit_code = 0; output_length = 134 }
00:21:35 v #26548 > > │
00:21:35 v #26549 > >
00:21:35 v #26550 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:35 v #26551 > > │ #### system kinetic energy versus time 2
00:21:35 v #26552 > >
00:21:35 v #26553 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:35 v #26554 > > //// test
00:21:35 v #26555 > >
00:21:35 v #26556 > > inl central_force f (particle_state st1) (particle_state st2) =
00:21:35 v #26557 > >     inl r1 = st1.pos_vec
00:21:35 v #26558 > >     inl r2 = st2.pos_vec
00:21:35 v #26559 > >     inl r21 = r2 ^-^ r1
00:21:35 v #26560 > >     inl r21mag = magnitude r21
00:21:35 v #26561 > >     f r21mag *^ r21 ^/ r21mag
00:21:35 v #26562 > >
00:21:35 v #26563 > > inl billiard_force k re =
00:21:35 v #26564 > >     inl f r =
00:21:35 v #26565 > >         if r >= re
00:21:35 v #26566 > >         then 0
00:21:35 v #26567 > >         else -k * (r - re)
00:21:35 v #26568 > >     central_force f
00:21:35 v #26569 > >
00:21:35 v #26570 > > type force_vector = vec
00:21:35 v #26571 > > type two_body_force = particle_state -> particle_state -> force_vector
00:21:35 v #26572 > >
00:21:35 v #26573 > > union force t =
00:21:35 v #26574 > >     | ExternalForce : t * one_body_force
00:21:35 v #26575 > >     | InternalForce : t * t * two_body_force
00:21:35 v #26576 > >
00:21:35 v #26577 > > nominal multi_particle_state = stream.stream particle_state
00:21:35 v #26578 > >
00:21:35 v #26579 > > nominal d_multi_particle_state = stream.stream d_particle_state
00:21:35 v #26580 > >
00:21:35 v #26581 > > inl force_on n s force =
00:21:35 v #26582 > >     match force with
00:21:35 v #26583 > >     | ExternalForce (n0, f_one_body) =>
00:21:35 v #26584 > >         if n = n0
00:21:35 v #26585 > >         then f_one_body
00:21:35 v #26586 > >         else fun _ => zero_vec ()
00:21:35 v #26587 > >     | InternalForce (n0, n1, f_two_body) =>
00:21:35 v #26588 > >         if n = n0
00:21:35 v #26589 > >         then s |> stream.try_item n1 |> optionm.map f_two_body
00:21:35 v #26590 > >         elif n = n1
00:21:35 v #26591 > >         then s |> stream.try_item n0 |> optionm.map f_two_body
00:21:35 v #26592 > >         else None
00:21:35 v #26593 > >         |> optionm'.default_value (fun _ => zero_vec ())
00:21:35 v #26594 > >
00:21:35 v #26595 > > inl forces_on n (multi_particle_state sts) fs =
00:21:35 v #26596 > >     fs
00:21:35 v #26597 > >     |> listm.map (force_on n sts)
00:21:35 v #26598 > >
00:21:35 v #26599 > > inl newton_second_mps fs ((multi_particle_state sts) as mpst) =
00:21:35 v #26600 > >     inl deriv (n, st) =
00:21:35 v #26601 > >         newton_second_ps (forces_on n mpst fs) st
00:21:35 v #26602 > >     sts |> stream.indexed |> stream.map deriv |> d_multi_particle_state
00:21:35 v #26603 > >
00:21:35 v #26604 > > instance (+++) d_multi_particle_state =
00:21:35 v #26605 > >     fun (d_multi_particle_state dsts1) (d_multi_particle_state dsts2) =>
00:21:35 v #26606 > >         (dsts1, dsts2)
00:21:35 v #26607 > >         ||> stream.zip_with (+++)
00:21:35 v #26608 > >         |> d_multi_particle_state
00:21:35 v #26609 > >
00:21:35 v #26610 > > instance scale d_multi_particle_state = fun w (d_multi_particle_state dsts) =>
00:21:35 v #26611 > >     dsts
00:21:35 v #26612 > >     |> stream.map (scale w)
00:21:35 v #26613 > >     |> d_multi_particle_state
00:21:35 v #26614 > >
00:21:35 v #26615 > > instance shift multi_particle_state = fun dt dsts (multi_particle_state sts) =>
00:21:35 v #26616 > >     inl (d_multi_particle_state dsts) =
00:21:35 v #26617 > >         real
00:21:35 v #26618 > >             match dsts with
00:21:35 v #26619 > >             | d_multi_particle_state _ => dsts
00:21:35 v #26620 > >     (dsts, sts)
00:21:35 v #26621 > >     ||> stream.zip_with (shift dt)
00:21:35 v #26622 > >     |> stream.memoize
00:21:35 v #26623 > >     |> fun x => x ()
00:21:35 v #26624 > >     |> multi_particle_state
00:21:35 v #26625 > >
00:21:35 v #26626 > > inl euler_cromer_mps dt : numerical_method multi_particle_state
00:21:35 v #26627 > > d_multi_particle_state =
00:21:35 v #26628 > >     fun deriv ((multi_particle_state sts0) as mpst0) =>
00:21:35 v #26629 > >         inl (multi_particle_state sts1) = euler dt deriv mpst0
00:21:35 v #26630 > >         (sts0, sts1)
00:21:35 v #26631 > >         ||> stream.zip
00:21:35 v #26632 > >         |> stream.map (fun ((particle_state st0), (particle_state st1)) =>
00:21:35 v #26633 > >             particle_state {
00:21:35 v #26634 > >                 st1 with
00:21:35 v #26635 > >                     pos_vec = st0.pos_vec ^+^ st1.velocity ^* dt
00:21:35 v #26636 > >             }
00:21:35 v #26637 > >         )
00:21:35 v #26638 > >         |> multi_particle_state
00:21:35 v #26639 > >
00:21:35 v #26640 > > inl update_mps (method : numerical_method multi_particle_state
00:21:35 v #26641 > > d_multi_particle_state) =
00:21:35 v #26642 > >     newton_second_mps >> method
00:21:35 v #26643 > >
00:21:35 v #26644 > > inl states_mps (method : numerical_method multi_particle_state
00:21:35 v #26645 > > d_multi_particle_state) =
00:21:35 v #26646 > >     newton_second_mps
00:21:35 v #26647 > >     >> method
00:21:35 v #26648 > >     >> (fun x (multi_particle_state y) =>
00:21:35 v #26649 > >         y
00:21:35 v #26650 > >         |> stream.memoize
00:21:35 v #26651 > >         |> (fun x => x ())
00:21:35 v #26652 > >         |> multi_particle_state |> x
00:21:35 v #26653 > >     )
00:21:35 v #26654 > >     // >> stream.iterate
00:21:35 v #26655 > >     >> seq.iterate'
00:21:35 v #26656 > >
00:21:35 v #26657 > > inl kinetic_energy (particle_state st) =
00:21:35 v #26658 > >     inl m = st.mass
00:21:35 v #26659 > >     inl v = magnitude st.velocity
00:21:35 v #26660 > >     0.5 * m * v ** 2
00:21:35 v #26661 > >
00:21:35 v #26662 > > inl system_ke (multi_particle_state sts) =
00:21:35 v #26663 > >     sts
00:21:35 v #26664 > >     |> stream.map kinetic_energy
00:21:35 v #26665 > >     |> stream.sum
00:21:35 v #26666 > >
00:21:35 v #26667 > > inl linear_spring_pe k re (particle_state st1) (particle_state st2) =
00:21:35 v #26668 > >     inl r1 = st1.pos_vec
00:21:35 v #26669 > >     inl r2 = st2.pos_vec
00:21:35 v #26670 > >     inl r21 = r2 ^-^ r1
00:21:35 v #26671 > >     inl r21mag = magnitude r21
00:21:35 v #26672 > >     k * (r21mag - re) ** 2 / 2
00:21:35 v #26673 > >
00:21:35 v #26674 > > inl earth_surface_gravity_pe (particle_state st) =
00:21:35 v #26675 > >     inl g = 9.80665
00:21:35 v #26676 > >     inl m = st.mass
00:21:35 v #26677 > >     inl z = st.pos_vec.z
00:21:35 v #26678 > >     m * g * z
00:21:35 v #26679 > >
00:21:35 v #26680 > > inl ball_radius () = 0.03
00:21:35 v #26681 > >
00:21:35 v #26682 > > inl billiard_forces k =
00:21:35 v #26683 > >     [[ InternalForce (0i32, 1, billiard_force k (2 * ball_radius ())) ]]
00:21:35 v #26684 > >
00:21:35 v #26685 > > inl billiard_initial () =
00:21:35 v #26686 > >     inl ball_mass = 0.160
00:21:35 v #26687 > >     inl (particle_state default_particle_state') = default_particle_state ()
00:21:35 v #26688 > >     [[
00:21:35 v #26689 > >         particle_state {
00:21:35 v #26690 > >             default_particle_state' with
00:21:35 v #26691 > >                 mass = ball_mass
00:21:35 v #26692 > >                 pos_vec = zero_vec ()
00:21:35 v #26693 > >                 velocity = 0.2 *^ i_hat ()
00:21:35 v #26694 > >         }
00:21:35 v #26695 > >         particle_state {
00:21:35 v #26696 > >             default_particle_state' with
00:21:35 v #26697 > >                 mass = ball_mass
00:21:35 v #26698 > >                 pos_vec = i_hat () ^+^ 0.02 *^ j_hat ()
00:21:35 v #26699 > >                 velocity = zero_vec ()
00:21:35 v #26700 > >         }
00:21:35 v #26701 > >     ]]
00:21:35 v #26702 > >     |> stream.from_list
00:21:35 v #26703 > >     |> multi_particle_state
00:21:35 v #26704 > >
00:21:35 v #26705 > > inl billiard_states ~n_method k dt =
00:21:35 v #26706 > >     states_mps (n_method dt) (billiard_forces k) (billiard_initial ())
00:21:35 v #26707 > >
00:21:35 v #26708 > > inl billiard_states_finite n_method k dt =
00:21:35 v #26709 > >     billiard_states n_method k dt
00:21:35 v #26710 > >     >> Some
00:21:35 v #26711 > >     |> seq.take_while_ (fun (multi_particle_state mpst) (_ : i32) =>
00:21:35 v #26712 > >         match mpst |> stream.try_item 0i32 with
00:21:35 v #26713 > >         | Some st =>
00:21:35 v #26714 > >             st.time <= 10
00:21:35 v #26715 > >         | None => false
00:21:35 v #26716 > >     )
00:21:35 v #26717 > >
00:21:35 v #26718 > > inl momentum (particle_state st) =
00:21:35 v #26719 > >     inl m = st.mass
00:21:35 v #26720 > >     inl v = st.velocity
00:21:35 v #26721 > >     m *^ v
00:21:35 v #26722 > >
00:21:35 v #26723 > > inl system_p (multi_particle_state sts) =
00:21:35 v #26724 > >     sts
00:21:35 v #26725 > >     |> stream.map momentum
00:21:35 v #26726 > >     |> stream.fold (^+^) (zero_vec ())
00:21:35 v #26727 > >
00:21:35 v #26728 > > inl time_ke_ec_x, time_ke_ec_y =
00:21:35 v #26729 > >     billiard_states_finite euler_cromer_mps 30 0.03
00:21:35 v #26730 > >     |> listm.map (fun (multi_particle_state mpst) =>
00:21:35 v #26731 > >         mpst |> stream.try_item 0i32
00:21:35 v #26732 > >         |> optionm.map (fun st =>
00:21:35 v #26733 > >             st.time, system_ke (multi_particle_state mpst)
00:21:35 v #26734 > >         )
00:21:35 v #26735 > >     )
00:21:35 v #26736 > >     // |> stream.to_list
00:21:35 v #26737 > >     |> listm'.choose id
00:21:35 v #26738 > >     |> listm'.unzip
00:21:35 v #26739 > >
00:21:35 v #26740 > > inl time_ke_rk4_x, time_ke_rk4_y =
00:21:35 v #26741 > >     billiard_states_finite runge_kutta_4 30 0.03
00:21:35 v #26742 > >     |> listm.map (fun (multi_particle_state mpst) =>
00:21:35 v #26743 > >         mpst |> stream.try_item 0i32
00:21:35 v #26744 > >         |> optionm.map (fun st =>
00:21:35 v #26745 > >             st.time, system_ke (multi_particle_state mpst)
00:21:35 v #26746 > >         )
00:21:35 v #26747 > >     )
00:21:35 v #26748 > >     // |> stream.to_list
00:21:35 v #26749 > >     |> listm'.choose id
00:21:35 v #26750 > >     |> listm'.unzip
00:21:35 v #26751 > >
00:21:35 v #26752 > > inl time_ke_ec_x = time_ke_ec_x |> listm'.box |> listm'.to_array'
00:21:35 v #26753 > > inl time_ke_ec_y = time_ke_ec_y |> listm'.box |> listm'.to_array'
00:21:35 v #26754 > >
00:21:35 v #26755 > > inl time_ke_rk4_x = time_ke_rk4_x |> listm'.box |> listm'.to_array'
00:21:35 v #26756 > > inl time_ke_rk4_y = time_ke_rk4_y |> listm'.box |> listm'.to_array'
00:21:35 v #26757 > >
00:21:35 v #26758 > > "system kinetic energy versus time",
00:21:35 v #26759 > > "time (s)",
00:21:35 v #26760 > > "system kinetic energy (j)",
00:21:35 v #26761 > > ;[[
00:21:35 v #26762 > >     "euler-cromer", time_ke_ec_x, time_ke_ec_y
00:21:35 v #26763 > >     "runge-kutta 4", time_ke_rk4_x, time_ke_rk4_y
00:21:35 v #26764 > > ]]
00:21:37 v #26765 > >
00:21:37 v #26766 > > ── [ 1.40s - return value ] ────────────────────────────────────────────────────
00:21:37 v #26767 > > │ <svg width="640" height="480" viewBox="0 0 640 480"
00:21:37 v #26768 > > xmlns="http://www.w3.org/2000/svg">
00:21:37 v #26769 > > │ <rect x="0" y="0" width="640" height="480" opacity="1"
00:21:37 v #26770 > > fill="#141414" stroke="none"/>
00:21:37 v #26771 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"
00:21:37 v #26772 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1"
00:21:37 v #26773 > > fill="#FFFFFF">
00:21:37 v #26774 > > │ system kinetic energy versus time
00:21:37 v #26775 > > │ </text>
00:21:37 v #26776 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="59"
00:21:37 v #26777 > > y1="424" x2="59" y2="75"/>
00:21:37 v #26778 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69"
00:21:37 v #26779 > > y1="424" x2="69" y2="75"/>
00:21:37 v #26780 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="79"
00:21:37 v #26781 > > y1="424" x2="79" y2="75"/>
00:21:37 v #26782 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="89"
00:21:37 v #26783 > > y1="424" x2="89" y2="75"/>
00:21:37 v #26784 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="99"
00:21:37 v #26785 > > y1="424" x2="99" y2="75"/>
00:21:37 v #26786 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="109"
00:21:37 v #26787 > > y1="424" x2="109" y2="75"/>
00:21:37 v #26788 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119"
00:21:37 v #26789 > > y1="424" x2="119" y2="75"/>
00:21:37 v #26790 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="129"
00:21:37 v #26791 > > y1="424" x2="129" y2="75"/>
00:21:37 v #26792 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="139"
00:21:37 v #26793 > > y1="424" x2="139" y2="75"/>
00:21:37 v #26794 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="149"
00:21:37 v #26795 > > y1="424" x2="149" y2="75"/>
00:21:37 v #26796 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="159"
00:21:37 v #26797 > > y1="424" x2="159" y2="75"/>
00:21:37 v #26798 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="169"
00:21:37 v #26799 > > y1="424" x2="169" y2="75"/>
00:21:37 v #26800 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="179"
00:21:37 v #26801 > > y1="424" x2="179" y2="75"/>
00:21:37 v #26802 > > │ ...,104 404,104 405,104 407,104 408,104 410,104 411,104
00:21:37 v #26803 > > 413,104 414,104 416,104 417,104 419,104 420,104 422,104 423,104 425,104 426,104
00:21:37 v #26804 > > 428,104 429,104 431,104 432,104 434,104 435,104 437,104 438,104 440,104 441,104
00:21:37 v #26805 > > 443,104 444,104 446,104 447,104 449,104 450,104 452,104 453,104 455,104 456,104
00:21:37 v #26806 > > 458,104 459,104 461,104 462,104 464,104 465,104 467,104 468,104 470,104 471,104
00:21:37 v #26807 > > 473,104 474,104 476,104 477,104 479,104 480,104 482,104 483,104 485,104 486,104
00:21:37 v #26808 > > 488,104 489,104 491,104 492,104 494,104 495,104 497,104 498,104 500,104 501,104
00:21:37 v #26809 > > 503,104 504,104 506,104 507,104 509,104 510,104 512,104 513,104 515,104 516,104
00:21:37 v #26810 > > 518,104 519,104 521,104 522,104 524,104 525,104 527,104 528,104 530,104 531,104
00:21:37 v #26811 > > 533,104 534,104 536,104 537,104 539,104 540,104 542,104 543,104 545,104 546,104
00:21:37 v #26812 > > 548,104 549,104 551,104 552,104 554,104 555,104 557,104 558,104 560,104 561,104
00:21:37 v #26813 > > 563,104 564,104 566,104 567,104 569,104 "/>
00:21:37 v #26814 > > │ <rect x="459" y="227" width="121" height="45" opacity="1"
00:21:37 v #26815 > > fill="none" stroke="#FFFFFF"/>
00:21:37 v #26816 > > │ <text x="499" y="237" dy="0.76em" text-anchor="start"
00:21:37 v #26817 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1"
00:21:37 v #26818 > > fill="#FFFFFF">
00:21:37 v #26819 > > │ euler-cromer
00:21:37 v #26820 > > │ </text>
00:21:37 v #26821 > > │ <text x="499" y="252" dy="0.76em" text-anchor="start"
00:21:37 v #26822 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1"
00:21:37 v #26823 > > fill="#FFFFFF">
00:21:37 v #26824 > > │ runge-kutta 4
00:21:37 v #26825 > > │ </text>
00:21:37 v #26826 > > │ <polyline fill="none" opacity="1" stroke="#FF0000"
00:21:37 v #26827 > > stroke-width="1" points="469,242 489,242 "/>
00:21:37 v #26828 > > │ <polyline fill="none" opacity="1" stroke="#0000FF"
00:21:37 v #26829 > > stroke-width="1" points="469,257 489,257 "/>
00:21:37 v #26830 > > │ </svg>
00:21:37 v #26831 > > │
00:21:37 v #26832 > >
00:21:37 v #26833 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:37 v #26834 > > │ #### wave 2
00:21:37 v #26835 > >
00:21:37 v #26836 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:37 v #26837 > > //// test
00:21:37 v #26838 > >
00:21:37 v #26839 > > inl linear_spring k re (particle_state st1) (particle_state st2) =
00:21:37 v #26840 > >     inl r1 = st1.pos_vec
00:21:37 v #26841 > >     inl r2 = st2.pos_vec
00:21:37 v #26842 > >     inl r21 = r2 ^-^ r1
00:21:37 v #26843 > >     inl r21mag = magnitude r21
00:21:37 v #26844 > >     -k * (r21mag - re) *^ r21 ^/ r21mag
00:21:37 v #26845 > >
00:21:37 v #26846 > > inl fixed_linear_spring k re r1 =
00:21:37 v #26847 > >     inl (particle_state default_particle_state') = default_particle_state ()
00:21:37 v #26848 > >     linear_spring k re (particle_state { default_particle_state' with pos_vec =
00:21:37 v #26849 > > r1 })
00:21:37 v #26850 > >
00:21:37 v #26851 > > inl forces_string () =
00:21:37 v #26852 > >     [[
00:21:37 v #26853 > >         ExternalForce (0i32, fixed_linear_spring 5384 0 (zero_vec ()))
00:21:37 v #26854 > >         ExternalForce (63, fixed_linear_spring 5384 0 (0.65 *^ i_hat ()))
00:21:37 v #26855 > >     ]] ++ (
00:21:37 v #26856 > >         listm'.init_series 0 59 1
00:21:37 v #26857 > >         |> listm.map (fun n => InternalForce (n, n + 1, linear_spring 5384 0))
00:21:37 v #26858 > >     )
00:21:37 v #26859 > >
00:21:37 v #26860 > > inl string_update dt =
00:21:37 v #26861 > >     update_mps (join runge_kutta_4 dt) (join forces_string ())
00:21:37 v #26862 > >
00:21:37 v #26863 > > inl string_initial_overtone n =
00:21:37 v #26864 > >     inl ball_mass = 0.0008293 * 0.65 / 64
00:21:37 v #26865 > >     inl (particle_state default_particle_state') = default_particle_state ()
00:21:37 v #26866 > >     listm'.init_series 0.01 0.64 0.01
00:21:37 v #26867 > >     |> listm.map (fun x =>
00:21:37 v #26868 > >         inl y = 0.005 * sin (conv n * pi * x / 0.65)
00:21:37 v #26869 > >         particle_state {
00:21:37 v #26870 > >             default_particle_state' with
00:21:37 v #26871 > >                 mass = ball_mass
00:21:37 v #26872 > >                 pos_vec = x *^ i_hat () ^+^ y *^ j_hat ()
00:21:37 v #26873 > >                 velocity = zero_vec ()
00:21:37 v #26874 > >         }
00:21:37 v #26875 > >     )
00:21:37 v #26876 > >     |> stream.from_list
00:21:37 v #26877 > >     |> multi_particle_state
00:21:37 v #26878 > >
00:21:37 v #26879 > > let main () =
00:21:37 v #26880 > >     inl ~frames = listm'.init_series 0 65 1f64 |> stream.from_list
00:21:37 v #26881 > >     inl ~initial_state = string_initial_overtone 3i32
00:21:37 v #26882 > >     inl frames =
00:21:37 v #26883 > >         frames
00:21:37 v #26884 > >         |> stream.map (fun n =>
00:21:37 v #26885 > >             inl (multi_particle_state sts) =
00:21:37 v #26886 > >                 stream.iterate (string_update 0.000025) initial_state |>
00:21:37 v #26887 > > stream.item n
00:21:37 v #26888 > >             inl x, y =
00:21:37 v #26889 > >                 [[ zero_vec () ]]
00:21:37 v #26890 > >                 ++ (sts |> stream.map (fun (particle_state st) => st.pos_vec) |>
00:21:37 v #26891 > > stream.to_list)
00:21:37 v #26892 > >                 ++ [[ 0.65 *^ i_hat () ]]
00:21:37 v #26893 > >                 |> listm.map (fun r => r.x, r.y)
00:21:37 v #26894 > >                 |> stream.from_list
00:21:37 v #26895 > >                 |> stream.unzip
00:21:37 v #26896 > >             inl x = x |> stream.to_list |> listm'.box |> listm'.to_array'
00:21:37 v #26897 > >             inl y = y |> stream.to_list |> listm'.box |> listm'.to_array'
00:21:37 v #26898 > >             x, y
00:21:37 v #26899 > >         )
00:21:37 v #26900 > >
00:21:37 v #26901 > >     inl plots =
00:21:37 v #26902 > >         frames
00:21:37 v #26903 > >         |> stream.indexed
00:21:37 v #26904 > >         |> stream.map (fun ((n : i32), (x, y)) =>
00:21:37 v #26905 > >             "wave",
00:21:37 v #26906 > >             "position (m)",
00:21:37 v #26907 > >             "displacement (m)",
00:21:37 v #26908 > >             ;[[
00:21:37 v #26909 > >                 ($'$"{!n}"' : string), x, y
00:21:37 v #26910 > >             ]]
00:21:37 v #26911 > >         )
00:21:37 v #26912 > >
00:21:37 v #26913 > >     plots |> stream.to_list |> listm'.box |> listm'.to_array'
00:21:42 v #26914 > >
00:21:42 v #26915 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:42 v #26916 > > ── [ 5.01s - diagnostics ] ─────────────────────────────────────────────────────
00:21:42 v #26917 > > │ input.fsx (22,25)-(1084,1085) typecheck warning Incomplete
00:21:42 v #26918 > > pattern matches on this expression. For example, the value 'UH7_1 (_, _, _, _)'
00:21:42 v #26919 > > may indicate a case not covered by the pattern(s).
00:21:42 v #26920 > >
00:21:42 v #26921 > > ── [ 5.26s - return value ] ────────────────────────────────────────────────────
00:21:42 v #26922 > > │
00:21:42 v #26923 > > <table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td
00:21:42 v #26924 > > >0</td><td><svg width="640" height="480" viewBox="0 0 640 480"
00:21:42 v #26925 > > xmlns="http://www.w3.org/2000/svg">
00:21:42 v #26926 > > │ <rect x="0" y="0" width="640" height="480" opacity="1"
00:21:42 v #26927 > > fill="#141414" stroke="none"/>
00:21:42 v #26928 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"
00:21:42 v #26929 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1"
00:21:42 v #26930 > > fill="#FFFFFF">
00:21:42 v #26931 > > │ wave
00:21:42 v #26932 > > │ </text>
00:21:42 v #26933 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="62"
00:21:42 v #26934 > > y1="424" x2="62" y2="75"/>
00:21:42 v #26935 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69"
00:21:42 v #26936 > > y1="424" x2="69" y2="75"/>
00:21:42 v #26937 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="77"
00:21:42 v #26938 > > y1="424" x2="77" y2="75"/>
00:21:42 v #26939 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="85"
00:21:42 v #26940 > > y1="424" x2="85" y2="75"/>
00:21:42 v #26941 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="93"
00:21:42 v #26942 > > y1="424" x2="93" y2="75"/>
00:21:42 v #26943 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="100"
00:21:42 v #26944 > > y1="424" x2="100" y2="75"/>
00:21:42 v #26945 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="108"
00:21:42 v #26946 > > y1="424" x2="108" y2="75"/>
00:21:42 v #26947 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="116"
00:21:42 v #26948 > > y1="424" x2="116" y2="75"/>
00:21:42 v #26949 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="123"
00:21:42 v #26950 > > y1="424" x2="123" y2="75"/>
00:21:42 v #26951 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="131"
00:21:42 v #26952 > > y1="424" x2="131" y2="75"/>
00:21:42 v #26953 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="139"
00:21:42 v #26954 > > y1="424" x2="139" y2="75"/>
00:21:42 v #26955 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="146"
00:21:42 v #26956 > > y1="424" x2="146" y2="75"/>
00:21:42 v #26957 > > │ <line opacity="1" stroke="#... stroke-width="1"
00:21:42 v #26958 > > points="585,128 590,128 "/>
00:21:42 v #26959 > > │ <polyline fill="none" opacity="1" stroke="#FF0000"
00:21:42 v #26960 > > stroke-width="1" points="69,363 77,322 85,283 92,246 100,211 107,179 115,151
00:21:42 v #26961 > > 122,127 130,108 138,95 145,87 153,85 160,89 168,99 175,114 183,134 190,159
00:21:42 v #26962 > > 198,188 205,220 212,253 218,284 223,311 226,329 227,337 226,337 224,333 223,334
00:21:42 v #26963 > > 223,344 224,357 225,367 224,370 223,374 224,383 224,393 224,397 224,400 224,406
00:21:42 v #26964 > > 224,411 224,412 224,413 224,415 224,413 224,411 224,409 224,405 224,400 224,395
00:21:42 v #26965 > > 224,388 224,382 224,375 224,367 224,360 224,353 224,346 224,339 224,332 224,327
00:21:42 v #26966 > > 224,322 224,318 224,314 224,312 224,311 539,239 546,279 569,403 561,363 "/>
00:21:42 v #26967 > > │ <rect x="519" y="235" width="61" height="30" opacity="1"
00:21:42 v #26968 > > fill="none" stroke="#FFFFFF"/>
00:21:42 v #26969 > > │ <text x="559" y="245" dy="0.76em" text-anchor="start"
00:21:42 v #26970 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1"
00:21:42 v #26971 > > fill="#FFFFFF">
00:21:42 v #26972 > > │ 65
00:21:42 v #26973 > > │ </text>
00:21:42 v #26974 > > │ <polyline fill="none" opacity="1" stroke="#FF0000"
00:21:42 v #26975 > > stroke-width="1" points="529,250 549,250 "/>
00:21:42 v #26976 > > │ </svg>
00:21:42 v #26977 > > │ </td></tr></tbody></table><style>
00:21:42 v #26978 > > │ .dni-code-hint {
00:21:42 v #26979 > > │     font-style: italic;
00:21:42 v #26980 > > │     overflow: hidden;
00:21:42 v #26981 > > │     white-space: nowrap;
00:21:42 v #26982 > > │ }
00:21:42 v #26983 > > │ .dni-treeview {
00:21:42 v #26984 > > │     white-space: nowrap;
00:21:42 v #26985 > > │ }
00:21:42 v #26986 > > │ .dni-treeview td {
00:21:42 v #26987 > > │     vertical-align: top;
00:21:42 v #26988 > > │     text-align: start;
00:21:42 v #26989 > > │ }
00:21:42 v #26990 > > │ details.dni-treeview {
00:21:42 v #26991 > > │     padding-left: 1em;
00:21:42 v #26992 > > │ }
00:21:42 v #26993 > > │ table td {
00:21:42 v #26994 > > │     text-align: start;
00:21:42 v #26995 > > │ }
00:21:42 v #26996 > > │ table tr {
00:21:42 v #26997 > > │     vertical-align: top;
00:21:42 v #26998 > > │     margin: 0em 0px;
00:21:42 v #26999 > > │ }
00:21:42 v #27000 > > │ table tr td pre
00:21:42 v #27001 > > │ {
00:21:42 v #27002 > > │     vertical-align: top !important;
00:21:42 v #27003 > > │     margin: 0em 0px !important;
00:21:42 v #27004 > > │ }
00:21:42 v #27005 > > │ table th {
00:21:42 v #27006 > > │     text-align: start;
00:21:42 v #27007 > > │ }
00:21:42 v #27008 > > │ </style>
00:21:42 v #27009 > >
00:21:42 v #27010 > > ── [ 5.26s - stdout ] ──────────────────────────────────────────────────────────
00:21:42 v #27011 > > │ 00:00:26 d #46 runtime.execute_with_options_async / {
00:21:42 v #27012 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27013 > > arguments = US5_1; options = { command =
00:21:42 v #27014 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27015 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27016 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27017 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27018 > > │ 00:00:26 v #47 > Creating
00:21:42 v #27019 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/25b4386102d4e649cf36c31
00:21:42 v #27020 > > 5e80448a1fa116c091b0086111cf413562ef6255c.svg
00:21:42 v #27021 > > │ 00:00:26 d #48 runtime.execute_with_options_async / {
00:21:42 v #27022 > > exit_code = 0; output_length = 134 }
00:21:42 v #27023 > > │ 00:00:26 d #49 runtime.execute_with_options_async / {
00:21:42 v #27024 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27025 > > arguments = US5_1; options = { command =
00:21:42 v #27026 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27027 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27028 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27029 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27030 > > │ 00:00:26 v #50 > Creating
00:21:42 v #27031 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/82069ab3443b2210137c4a5
00:21:42 v #27032 > > 1290d83dc81229748eec3a972a381c54f97272db6.svg
00:21:42 v #27033 > > │ 00:00:26 d #51 runtime.execute_with_options_async / {
00:21:42 v #27034 > > exit_code = 0; output_length = 134 }
00:21:42 v #27035 > > │ 00:00:26 d #52 runtime.execute_with_options_async / {
00:21:42 v #27036 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27037 > > arguments = US5_1; options = { command =
00:21:42 v #27038 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27039 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27040 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27041 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27042 > > │ 00:00:26 v #53 > Creating
00:21:42 v #27043 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/51198f81dd6b9e00f356cd5
00:21:42 v #27044 > > 0edeac50e389911946af788d2df96b0c3969cc85f.svg
00:21:42 v #27045 > > │ 00:00:26 d #54 runtime.execute_with_options_async / {
00:21:42 v #27046 > > exit_code = 0; output_length = 134 }
00:21:42 v #27047 > > │ 00:00:26 d #55 runtime.execute_with_options_async / {
00:21:42 v #27048 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27049 > > arguments = US5_1; options = { command =
00:21:42 v #27050 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27051 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27052 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27053 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27054 > > │ 00:00:26 v #56 > Creating
00:21:42 v #27055 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/0da4df708113eca060892dd
00:21:42 v #27056 > > 4d18bc2025b1151e39abb4b96e26eff2fc4cd6891.svg
00:21:42 v #27057 > > │ 00:00:26 d #57 runtime.execute_with_options_async / {
00:21:42 v #27058 > > exit_code = 0; output_length = 134 }
00:21:42 v #27059 > > │ 00:00:26 d #58 runtime.execute_with_options_async / {
00:21:42 v #27060 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27061 > > arguments = US5_1; options = { command =
00:21:42 v #27062 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27063 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27064 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27065 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27066 > > │ 00:00:26 v #59 > Creating
00:21:42 v #27067 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/ec21fae8ff726079724d816
00:21:42 v #27068 > > 6ca53da39947780d93d63f740978db0416b399df1.svg
00:21:42 v #27069 > > │ 00:00:26 d #60 runtime.execute_with_options_async / {
00:21:42 v #27070 > > exit_code = 0; output_length = 134 }
00:21:42 v #27071 > > │ 00:00:26 d #61 runtime.execute_with_options_async / {
00:21:42 v #27072 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27073 > > arguments = US5_1; options = { command =
00:21:42 v #27074 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27075 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27076 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27077 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27078 > > │ 00:00:26 v #62 > Creating
00:21:42 v #27079 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/cc3a3d6115cdfd7ee2acca3
00:21:42 v #27080 > > 1ac52275c998d1e6f6aa7b2316b2c84bde8340094.svg
00:21:42 v #27081 > > │ 00:00:26 d #63 runtime.execute_with_options_async / {
00:21:42 v #27082 > > exit_code = 0; output_length = 134 }
00:21:42 v #27083 > > │ 00:00:26 d #64 runtime.execute_with_options_async / {
00:21:42 v #27084 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27085 > > arguments = US5_1; options = { command =
00:21:42 v #27086 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27087 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27088 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27089 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27090 > > │ 00:00:26 v #65 > Creating
00:21:42 v #27091 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/f4d4d6212bb5f26b01e223e
00:21:42 v #27092 > > 15a54b5cca667ecc4a41c7ac12166812c495d9437.svg
00:21:42 v #27093 > > │ 00:00:26 d #66 runtime.execute_with_options_async / {
00:21:42 v #27094 > > exit_code = 0; output_length = 134 }
00:21:42 v #27095 > > │ 00:00:26 d #67 runtime.execute_with_options_async / {
00:21:42 v #27096 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27097 > > arguments = US5_1; options = { command =
00:21:42 v #27098 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27099 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27100 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27101 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27102 > > │ 00:00:26 v #68 > Creating
00:21:42 v #27103 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/88e67acda384a3935bf09a0
00:21:42 v #27104 > > 94a0422796a2f36a7a20876fe7666cf276baba4ca.svg
00:21:42 v #27105 > > │ 00:00:26 d #69 runtime.execute_with_options_async / {
00:21:42 v #27106 > > exit_code = 0; output_length = 134 }
00:21:42 v #27107 > > │ 00:00:26 d #70 runtime.execute_with_options_async / {
00:21:42 v #27108 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27109 > > arguments = US5_1; options = { command =
00:21:42 v #27110 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27111 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27112 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27113 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27114 > > │ 00:00:26 v #71 > Creating
00:21:42 v #27115 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/0d6dfb91ef9a13fbdc033c5
00:21:42 v #27116 > > 17fa71d9824632e6a73651491210f9e9bb26fdefd.svg
00:21:42 v #27117 > > │ 00:00:26 d #72 runtime.execute_with_options_async / {
00:21:42 v #27118 > > exit_code = 0; output_length = 134 }
00:21:42 v #27119 > > │ 00:00:26 d #73 runtime.execute_with_options_async / {
00:21:42 v #27120 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27121 > > arguments = US5_1; options = { command =
00:21:42 v #27122 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27123 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27124 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27125 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27126 > > │ 00:00:26 v #74 > Creating
00:21:42 v #27127 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/269ae5518e06880956a5a03
00:21:42 v #27128 > > 1a71fc0d1003baec1faf97795021ff0849b29f158.svg
00:21:42 v #27129 > > │ 00:00:26 d #75 runtime.execute_with_options_async / {
00:21:42 v #27130 > > exit_code = 0; output_length = 134 }
00:21:42 v #27131 > > │ 00:00:26 d #76 runtime.execute_with_options_async / {
00:21:42 v #27132 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27133 > > arguments = US5_1; options = { command =
00:21:42 v #27134 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27135 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27136 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27137 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27138 > > │ 00:00:26 v #77 > Creating
00:21:42 v #27139 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/429b425800e5f58efea5a9d
00:21:42 v #27140 > > aea343d9a1aac009a6f9c4409f11383c3a86d4c6c.svg
00:21:42 v #27141 > > │ 00:00:26 d #78 runtime.execute_with_options_async / {
00:21:42 v #27142 > > exit_code = 0; output_length = 134 }
00:21:42 v #27143 > > │ 00:00:26 d #79 runtime.execute_with_options_async / {
00:21:42 v #27144 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27145 > > arguments = US5_1; options = { command =
00:21:42 v #27146 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27147 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27148 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27149 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27150 > > │ 00:00:26 v #80 > Creating
00:21:42 v #27151 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/e5beb9b5144700e5ac068ff
00:21:42 v #27152 > > 41f7799acb88cbe0b613258014323302a0a3d5a1c.svg
00:21:42 v #27153 > > │ 00:00:26 d #81 runtime.execute_with_options_async / {
00:21:42 v #27154 > > exit_code = 0; output_length = 134 }
00:21:42 v #27155 > > │ 00:00:26 d #82 runtime.execute_with_options_async / {
00:21:42 v #27156 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27157 > > arguments = US5_1; options = { command =
00:21:42 v #27158 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27159 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27160 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27161 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27162 > > │ 00:00:26 v #83 > Creating
00:21:42 v #27163 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/2543db981b2d7ba78e89050
00:21:42 v #27164 > > 23f1f76b58dd99d61f636fcdc47f85cc5998df0fa.svg
00:21:42 v #27165 > > │ 00:00:26 d #84 runtime.execute_with_options_async / {
00:21:42 v #27166 > > exit_code = 0; output_length = 134 }
00:21:42 v #27167 > > │ 00:00:26 d #85 runtime.execute_with_options_async / {
00:21:42 v #27168 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27169 > > arguments = US5_1; options = { command =
00:21:42 v #27170 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27171 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27172 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27173 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27174 > > │ 00:00:26 v #86 > Creating
00:21:42 v #27175 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/31bd174c459b1cf6d0e9609
00:21:42 v #27176 > > 489ea792da7fb84696f35c6d5e4fcfac01cdb2313.svg
00:21:42 v #27177 > > │ 00:00:26 d #87 runtime.execute_with_options_async / {
00:21:42 v #27178 > > exit_code = 0; output_length = 134 }
00:21:42 v #27179 > > │ 00:00:26 d #88 runtime.execute_with_options_async / {
00:21:42 v #27180 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27181 > > arguments = US5_1; options = { command =
00:21:42 v #27182 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27183 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27184 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27185 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27186 > > │ 00:00:26 v #89 > Creating
00:21:42 v #27187 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/2055256cd308846fd532595
00:21:42 v #27188 > > 8a010fd6753dabf3ec603ee633dda982c882cc35d.svg
00:21:42 v #27189 > > │ 00:00:26 d #90 runtime.execute_with_options_async / {
00:21:42 v #27190 > > exit_code = 0; output_length = 134 }
00:21:42 v #27191 > > │ 00:00:26 d #91 runtime.execute_with_options_async / {
00:21:42 v #27192 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27193 > > arguments = US5_1; options = { command =
00:21:42 v #27194 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27195 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27196 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27197 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27198 > > │ 00:00:26 v #92 > Creating
00:21:42 v #27199 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/e36a8f1675ee4d9378c2c14
00:21:42 v #27200 > > 9f0395e9585eb14793f79a5e1837d9943c8256622.svg
00:21:42 v #27201 > > │ 00:00:26 d #93 runtime.execute_with_options_async / {
00:21:42 v #27202 > > exit_code = 0; output_length = 134 }
00:21:42 v #27203 > > │ 00:00:26 d #94 runtime.execute_with_options_async / {
00:21:42 v #27204 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27205 > > arguments = US5_1; options = { command =
00:21:42 v #27206 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27207 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27208 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27209 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27210 > > │ 00:00:26 v #95 > Creating
00:21:42 v #27211 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/4e44702e3376bc59ceef1c5
00:21:42 v #27212 > > 463ef093898efe2659436cc48225aca64585a1eed.svg
00:21:42 v #27213 > > │ 00:00:26 d #96 runtime.execute_with_options_async / {
00:21:42 v #27214 > > exit_code = 0; output_length = 134 }
00:21:42 v #27215 > > │ 00:00:26 d #97 runtime.execute_with_options_async / {
00:21:42 v #27216 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27217 > > arguments = US5_1; options = { command =
00:21:42 v #27218 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27219 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27220 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27221 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27222 > > │ 00:00:26 v #98 > Creating
00:21:42 v #27223 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/da2dd1e5137917a0b5fbd32
00:21:42 v #27224 > > 0e18d559f3003adee29c16c8b3ddaa90861251def.svg
00:21:42 v #27225 > > │ 00:00:26 d #99 runtime.execute_with_options_async / {
00:21:42 v #27226 > > exit_code = 0; output_length = 134 }
00:21:42 v #27227 > > │ 00:00:26 d #100 runtime.execute_with_options_async / {
00:21:42 v #27228 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27229 > > arguments = US5_1; options = { command =
00:21:42 v #27230 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27231 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27232 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27233 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27234 > > │ 00:00:26 v #101 > Creating
00:21:42 v #27235 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/c8e034f0843c86c31cc3c64
00:21:42 v #27236 > > b5c2dbfc69aa176075142483c6070350a436ad974.svg
00:21:42 v #27237 > > │ 00:00:26 d #102 runtime.execute_with_options_async / {
00:21:42 v #27238 > > exit_code = 0; output_length = 134 }
00:21:42 v #27239 > > │ 00:00:26 d #103 runtime.execute_with_options_async / {
00:21:42 v #27240 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27241 > > arguments = US5_1; options = { command =
00:21:42 v #27242 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27243 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27244 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27245 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27246 > > │ 00:00:26 v #104 > Creating
00:21:42 v #27247 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/d015b6ee7829dec29660e9e
00:21:42 v #27248 > > 1a8e2c91527fecaf400660e01b1e8c8fc50d64557.svg
00:21:42 v #27249 > > │ 00:00:26 d #105 runtime.execute_with_options_async / {
00:21:42 v #27250 > > exit_code = 0; output_length = 134 }
00:21:42 v #27251 > > │ 00:00:26 d #106 runtime.execute_with_options_async / {
00:21:42 v #27252 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27253 > > arguments = US5_1; options = { command =
00:21:42 v #27254 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27255 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27256 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27257 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27258 > > │ 00:00:26 v #107 > Creating
00:21:42 v #27259 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/6f9e779b344f4181fd8010d
00:21:42 v #27260 > > 1fbddf41de20d850557acba391b3cc908fbe8bfd7.svg
00:21:42 v #27261 > > │ 00:00:26 d #108 runtime.execute_with_options_async / {
00:21:42 v #27262 > > exit_code = 0; output_length = 134 }
00:21:42 v #27263 > > │ 00:00:26 d #109 runtime.execute_with_options_async / {
00:21:42 v #27264 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27265 > > arguments = US5_1; options = { command =
00:21:42 v #27266 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27267 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27268 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27269 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27270 > > │ 00:00:26 v #110 > Creating
00:21:42 v #27271 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/e20cc83d71d3b2e4fb037ef
00:21:42 v #27272 > > fa299afb3ae5fbad79a76be4333412b0afad44247.svg
00:21:42 v #27273 > > │ 00:00:26 d #111 runtime.execute_with_options_async / {
00:21:42 v #27274 > > exit_code = 0; output_length = 134 }
00:21:42 v #27275 > > │ 00:00:26 d #112 runtime.execute_with_options_async / {
00:21:42 v #27276 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27277 > > arguments = US5_1; options = { command =
00:21:42 v #27278 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27279 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27280 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27281 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27282 > > │ 00:00:26 v #113 > Creating
00:21:42 v #27283 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/552767eafba3ce3097354bb
00:21:42 v #27284 > > 928d9dd9d0af565a8b70940a42e08f6ad067d70a7.svg
00:21:42 v #27285 > > │ 00:00:26 d #114 runtime.execute_with_options_async / {
00:21:42 v #27286 > > exit_code = 0; output_length = 134 }
00:21:42 v #27287 > > │ 00:00:26 d #115 runtime.execute_with_options_async / {
00:21:42 v #27288 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27289 > > arguments = US5_1; options = { command =
00:21:42 v #27290 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27291 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27292 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27293 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27294 > > │ 00:00:26 v #116 > Creating
00:21:42 v #27295 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/a27eac8f69f101def5fa6b4
00:21:42 v #27296 > > c8cebc059d503808937bc367d9d3608cec2712613.svg
00:21:42 v #27297 > > │ 00:00:26 d #117 runtime.execute_with_options_async / {
00:21:42 v #27298 > > exit_code = 0; output_length = 134 }
00:21:42 v #27299 > > │ 00:00:26 d #118 runtime.execute_with_options_async / {
00:21:42 v #27300 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27301 > > arguments = US5_1; options = { command =
00:21:42 v #27302 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27303 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27304 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27305 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27306 > > │ 00:00:26 v #119 > Creating
00:21:42 v #27307 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/f8d04b749068750046e5d0d
00:21:42 v #27308 > > 76166fc42fe00e40d9e14143a48b9f18612895d93.svg
00:21:42 v #27309 > > │ 00:00:26 d #120 runtime.execute_with_options_async / {
00:21:42 v #27310 > > exit_code = 0; output_length = 134 }
00:21:42 v #27311 > > │ 00:00:26 d #121 runtime.execute_with_options_async / {
00:21:42 v #27312 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27313 > > arguments = US5_1; options = { command =
00:21:42 v #27314 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27315 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27316 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27317 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27318 > > │ 00:00:26 v #122 > Creating
00:21:42 v #27319 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/e05df3b8d5b0fca42735e57
00:21:42 v #27320 > > 03316d5517e51dfac741018f80bcd59ecd3a56299.svg
00:21:42 v #27321 > > │ 00:00:26 d #123 runtime.execute_with_options_async / {
00:21:42 v #27322 > > exit_code = 0; output_length = 134 }
00:21:42 v #27323 > > │ 00:00:26 d #124 runtime.execute_with_options_async / {
00:21:42 v #27324 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27325 > > arguments = US5_1; options = { command =
00:21:42 v #27326 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27327 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27328 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27329 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27330 > > │ 00:00:26 v #125 > Creating
00:21:42 v #27331 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/b40e8a5b3c77f4513a629f1
00:21:42 v #27332 > > 18c91a77d5bdbde27147178a46ca1cfde97c15836.svg
00:21:42 v #27333 > > │ 00:00:26 d #126 runtime.execute_with_options_async / {
00:21:42 v #27334 > > exit_code = 0; output_length = 134 }
00:21:42 v #27335 > > │ 00:00:26 d #127 runtime.execute_with_options_async / {
00:21:42 v #27336 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27337 > > arguments = US5_1; options = { command =
00:21:42 v #27338 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27339 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27340 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27341 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27342 > > │ 00:00:26 v #128 > Creating
00:21:42 v #27343 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/1e50fc8bee6db0bae991559
00:21:42 v #27344 > > de569c542a977cc7f6ee8e358cc7e684dd7a2f7f2.svg
00:21:42 v #27345 > > │ 00:00:26 d #129 runtime.execute_with_options_async / {
00:21:42 v #27346 > > exit_code = 0; output_length = 134 }
00:21:42 v #27347 > > │ 00:00:26 d #130 runtime.execute_with_options_async / {
00:21:42 v #27348 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27349 > > arguments = US5_1; options = { command =
00:21:42 v #27350 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27351 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27352 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27353 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27354 > > │ 00:00:26 v #131 > Creating
00:21:42 v #27355 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/fbb3fc7d0cd000d1f3d5af2
00:21:42 v #27356 > > 5ecb9116851889fb7032aa024dd3767bf1dc9de2e.svg
00:21:42 v #27357 > > │ 00:00:26 d #132 runtime.execute_with_options_async / {
00:21:42 v #27358 > > exit_code = 0; output_length = 134 }
00:21:42 v #27359 > > │ 00:00:26 d #133 runtime.execute_with_options_async / {
00:21:42 v #27360 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27361 > > arguments = US5_1; options = { command =
00:21:42 v #27362 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27363 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27364 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27365 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27366 > > │ 00:00:26 v #134 > Creating
00:21:42 v #27367 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/a0ee0690d9ef0a1e1547f25
00:21:42 v #27368 > > 9ca0d88a4510ec89dc61a7ffe0147e09ea2eb165a.svg
00:21:42 v #27369 > > │ 00:00:26 d #135 runtime.execute_with_options_async / {
00:21:42 v #27370 > > exit_code = 0; output_length = 134 }
00:21:42 v #27371 > > │ 00:00:26 d #136 runtime.execute_with_options_async / {
00:21:42 v #27372 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27373 > > arguments = US5_1; options = { command =
00:21:42 v #27374 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27375 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27376 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27377 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27378 > > │ 00:00:26 v #137 > Creating
00:21:42 v #27379 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/8b62f10b9d3b97068239e49
00:21:42 v #27380 > > 6cb7c5aa68b000dc2f78c5eba0b7fa19a7ebdd50c.svg
00:21:42 v #27381 > > │ 00:00:26 d #138 runtime.execute_with_options_async / {
00:21:42 v #27382 > > exit_code = 0; output_length = 134 }
00:21:42 v #27383 > > │ 00:00:26 d #139 runtime.execute_with_options_async / {
00:21:42 v #27384 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27385 > > arguments = US5_1; options = { command =
00:21:42 v #27386 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27387 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27388 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27389 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27390 > > │ 00:00:26 v #140 > Creating
00:21:42 v #27391 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/6cc8f1c7e432d3649cb9fdf
00:21:42 v #27392 > > 9f9f7b7f384c65eacd3fb94e319272fe70dd633bf.svg
00:21:42 v #27393 > > │ 00:00:26 d #141 runtime.execute_with_options_async / {
00:21:42 v #27394 > > exit_code = 0; output_length = 134 }
00:21:42 v #27395 > > │ 00:00:26 d #142 runtime.execute_with_options_async / {
00:21:42 v #27396 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27397 > > arguments = US5_1; options = { command =
00:21:42 v #27398 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27399 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27400 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27401 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27402 > > │ 00:00:26 v #143 > Creating
00:21:42 v #27403 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/ab40690e836b63af01e2c82
00:21:42 v #27404 > > ea8febe670e52e11eb049e40c93bb8f8e5cf97c9e.svg
00:21:42 v #27405 > > │ 00:00:26 d #144 runtime.execute_with_options_async / {
00:21:42 v #27406 > > exit_code = 0; output_length = 134 }
00:21:42 v #27407 > > │ 00:00:26 d #145 runtime.execute_with_options_async / {
00:21:42 v #27408 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27409 > > arguments = US5_1; options = { command =
00:21:42 v #27410 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27411 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27412 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27413 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27414 > > │ 00:00:26 v #146 > Creating
00:21:42 v #27415 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/4eb829ca41667f43116d463
00:21:42 v #27416 > > 1600e2dd123ca25ee7aa279f194251ee36431ea91.svg
00:21:42 v #27417 > > │ 00:00:26 d #147 runtime.execute_with_options_async / {
00:21:42 v #27418 > > exit_code = 0; output_length = 134 }
00:21:42 v #27419 > > │ 00:00:26 d #148 runtime.execute_with_options_async / {
00:21:42 v #27420 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27421 > > arguments = US5_1; options = { command =
00:21:42 v #27422 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27423 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27424 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27425 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27426 > > │ 00:00:26 v #149 > Creating
00:21:42 v #27427 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/da621a77ae85752953b1719
00:21:42 v #27428 > > c771c787f3c3594be470ba4dfb5ad8f63ff882412.svg
00:21:42 v #27429 > > │ 00:00:26 d #150 runtime.execute_with_options_async / {
00:21:42 v #27430 > > exit_code = 0; output_length = 134 }
00:21:42 v #27431 > > │ 00:00:26 d #151 runtime.execute_with_options_async / {
00:21:42 v #27432 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27433 > > arguments = US5_1; options = { command =
00:21:42 v #27434 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27435 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27436 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27437 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27438 > > │ 00:00:26 v #152 > Creating
00:21:42 v #27439 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/4c133a696111e9637bd800e
00:21:42 v #27440 > > 10894b783253b1784f74a3e6562560f4f0d0e1de9.svg
00:21:42 v #27441 > > │ 00:00:26 d #153 runtime.execute_with_options_async / {
00:21:42 v #27442 > > exit_code = 0; output_length = 134 }
00:21:42 v #27443 > > │ 00:00:26 d #154 runtime.execute_with_options_async / {
00:21:42 v #27444 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27445 > > arguments = US5_1; options = { command =
00:21:42 v #27446 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27447 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27448 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27449 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27450 > > │ 00:00:26 v #155 > Creating
00:21:42 v #27451 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/b4cf46b7a1116f7ff2beea0
00:21:42 v #27452 > > f19067a0b69d8d2633074b74c7fa2e9419537bbe4.svg
00:21:42 v #27453 > > │ 00:00:26 d #156 runtime.execute_with_options_async / {
00:21:42 v #27454 > > exit_code = 0; output_length = 134 }
00:21:42 v #27455 > > │ 00:00:26 d #157 runtime.execute_with_options_async / {
00:21:42 v #27456 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27457 > > arguments = US5_1; options = { command =
00:21:42 v #27458 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27459 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27460 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27461 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27462 > > │ 00:00:26 v #158 > Creating
00:21:42 v #27463 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/8228a67a385c42598d65c8b
00:21:42 v #27464 > > 0e86e8a53b5c32d9a669f5161004e7021b2aad6e3.svg
00:21:42 v #27465 > > │ 00:00:26 d #159 runtime.execute_with_options_async / {
00:21:42 v #27466 > > exit_code = 0; output_length = 134 }
00:21:42 v #27467 > > │ 00:00:26 d #160 runtime.execute_with_options_async / {
00:21:42 v #27468 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27469 > > arguments = US5_1; options = { command =
00:21:42 v #27470 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27471 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27472 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27473 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27474 > > │ 00:00:26 v #161 > Creating
00:21:42 v #27475 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/2d27f0a40a52e488f836497
00:21:42 v #27476 > > 1acea754a0034827c30ac23090ccf8e8afe1d5208.svg
00:21:42 v #27477 > > │ 00:00:26 d #162 runtime.execute_with_options_async / {
00:21:42 v #27478 > > exit_code = 0; output_length = 134 }
00:21:42 v #27479 > > │ 00:00:26 d #163 runtime.execute_with_options_async / {
00:21:42 v #27480 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27481 > > arguments = US5_1; options = { command =
00:21:42 v #27482 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27483 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27484 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27485 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27486 > > │ 00:00:26 v #164 > Creating
00:21:42 v #27487 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/f398230047e42f5b9160ad9
00:21:42 v #27488 > > fa4a4a30d67def46763ac4e778955ca67702061d8.svg
00:21:42 v #27489 > > │ 00:00:26 d #165 runtime.execute_with_options_async / {
00:21:42 v #27490 > > exit_code = 0; output_length = 134 }
00:21:42 v #27491 > > │ 00:00:26 d #166 runtime.execute_with_options_async / {
00:21:42 v #27492 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27493 > > arguments = US5_1; options = { command =
00:21:42 v #27494 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27495 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27496 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27497 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27498 > > │ 00:00:26 v #167 > Creating
00:21:42 v #27499 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/ba31ccdfae8fca85790e973
00:21:42 v #27500 > > 9a135e4599266c38003ca58db428cf83acd3bb12e.svg
00:21:42 v #27501 > > │ 00:00:26 d #168 runtime.execute_with_options_async / {
00:21:42 v #27502 > > exit_code = 0; output_length = 134 }
00:21:42 v #27503 > > │ 00:00:26 d #169 runtime.execute_with_options_async / {
00:21:42 v #27504 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27505 > > arguments = US5_1; options = { command =
00:21:42 v #27506 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27507 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27508 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27509 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27510 > > │ 00:00:26 v #170 > Creating
00:21:42 v #27511 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/780ead643b98b8af35c6ffc
00:21:42 v #27512 > > 815ccde029abf9e61684b1372ede9e07e38c947fe.svg
00:21:42 v #27513 > > │ 00:00:26 d #171 runtime.execute_with_options_async / {
00:21:42 v #27514 > > exit_code = 0; output_length = 134 }
00:21:42 v #27515 > > │ 00:00:26 d #172 runtime.execute_with_options_async / {
00:21:42 v #27516 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27517 > > arguments = US5_1; options = { command =
00:21:42 v #27518 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27519 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27520 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27521 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27522 > > │ 00:00:26 v #173 > Creating
00:21:42 v #27523 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/10bf803f5dd7d69401fe1e3
00:21:42 v #27524 > > 81285b4d67bb5e2f3a1c11e154f395b0625aaa81a.svg
00:21:42 v #27525 > > │ 00:00:26 d #174 runtime.execute_with_options_async / {
00:21:42 v #27526 > > exit_code = 0; output_length = 134 }
00:21:42 v #27527 > > │ 00:00:26 d #175 runtime.execute_with_options_async / {
00:21:42 v #27528 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27529 > > arguments = US5_1; options = { command =
00:21:42 v #27530 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27531 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27532 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27533 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27534 > > │ 00:00:26 v #176 > Creating
00:21:42 v #27535 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/400b1e51fa7a142588257dd
00:21:42 v #27536 > > b414c0a31a2b251bceb6690a25e4dfbdb9b436d1c.svg
00:21:42 v #27537 > > │ 00:00:26 d #177 runtime.execute_with_options_async / {
00:21:42 v #27538 > > exit_code = 0; output_length = 134 }
00:21:42 v #27539 > > │ 00:00:26 d #178 runtime.execute_with_options_async / {
00:21:42 v #27540 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27541 > > arguments = US5_1; options = { command =
00:21:42 v #27542 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27543 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27544 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27545 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27546 > > │ 00:00:26 v #179 > Creating
00:21:42 v #27547 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/04074dcfa8c9444af4bcf09
00:21:42 v #27548 > > bf944b37caa36f05fb020fa972ae58171bba415e1.svg
00:21:42 v #27549 > > │ 00:00:26 d #180 runtime.execute_with_options_async / {
00:21:42 v #27550 > > exit_code = 0; output_length = 134 }
00:21:42 v #27551 > > │ 00:00:26 d #181 runtime.execute_with_options_async / {
00:21:42 v #27552 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27553 > > arguments = US5_1; options = { command =
00:21:42 v #27554 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27555 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27556 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27557 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27558 > > │ 00:00:26 v #182 > Creating
00:21:42 v #27559 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/988cea705b16ac29a2007ee
00:21:42 v #27560 > > 4aea8dea72c7adef2889dd956ad5487d25e12b369.svg
00:21:42 v #27561 > > │ 00:00:26 d #183 runtime.execute_with_options_async / {
00:21:42 v #27562 > > exit_code = 0; output_length = 134 }
00:21:42 v #27563 > > │ 00:00:26 d #184 runtime.execute_with_options_async / {
00:21:42 v #27564 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27565 > > arguments = US5_1; options = { command =
00:21:42 v #27566 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27567 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27568 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27569 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27570 > > │ 00:00:26 v #185 > Creating
00:21:42 v #27571 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/31ff79312dc9242531f49bd
00:21:42 v #27572 > > aac4b1ef4df454de8e801dcbaaea5a774015733e9.svg
00:21:42 v #27573 > > │ 00:00:26 d #186 runtime.execute_with_options_async / {
00:21:42 v #27574 > > exit_code = 0; output_length = 134 }
00:21:42 v #27575 > > │ 00:00:26 d #187 runtime.execute_with_options_async / {
00:21:42 v #27576 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27577 > > arguments = US5_1; options = { command =
00:21:42 v #27578 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27579 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27580 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27581 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27582 > > │ 00:00:26 v #188 > Creating
00:21:42 v #27583 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/8f27371f86a551c5ea30fe8
00:21:42 v #27584 > > 82e5b6cb3028d89ad84e6c71144dc12250a6f6848.svg
00:21:42 v #27585 > > │ 00:00:26 d #189 runtime.execute_with_options_async / {
00:21:42 v #27586 > > exit_code = 0; output_length = 134 }
00:21:42 v #27587 > > │ 00:00:26 d #190 runtime.execute_with_options_async / {
00:21:42 v #27588 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27589 > > arguments = US5_1; options = { command =
00:21:42 v #27590 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27591 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27592 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27593 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27594 > > │ 00:00:26 v #191 > Creating
00:21:42 v #27595 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/afc52222ff828d5c96013fd
00:21:42 v #27596 > > 771aff43b465546b50555499413d4f080e9026d87.svg
00:21:42 v #27597 > > │ 00:00:26 d #192 runtime.execute_with_options_async / {
00:21:42 v #27598 > > exit_code = 0; output_length = 134 }
00:21:42 v #27599 > > │ 00:00:26 d #193 runtime.execute_with_options_async / {
00:21:42 v #27600 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27601 > > arguments = US5_1; options = { command =
00:21:42 v #27602 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27603 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27604 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27605 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27606 > > │ 00:00:26 v #194 > Creating
00:21:42 v #27607 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/01e5051d655ef25e1c5e093
00:21:42 v #27608 > > 70fee684bfc2aa1f099acec9c46c60656266b3f8c.svg
00:21:42 v #27609 > > │ 00:00:26 d #195 runtime.execute_with_options_async / {
00:21:42 v #27610 > > exit_code = 0; output_length = 134 }
00:21:42 v #27611 > > │ 00:00:26 d #196 runtime.execute_with_options_async / {
00:21:42 v #27612 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27613 > > arguments = US5_1; options = { command =
00:21:42 v #27614 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27615 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27616 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27617 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27618 > > │ 00:00:26 v #197 > Creating
00:21:42 v #27619 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/5588421d5672a19d3d58374
00:21:42 v #27620 > > d08bff6cbc79cf882258d65127325dd80c4869f31.svg
00:21:42 v #27621 > > │ 00:00:26 d #198 runtime.execute_with_options_async / {
00:21:42 v #27622 > > exit_code = 0; output_length = 134 }
00:21:42 v #27623 > > │ 00:00:26 d #199 runtime.execute_with_options_async / {
00:21:42 v #27624 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27625 > > arguments = US5_1; options = { command =
00:21:42 v #27626 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27627 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27628 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27629 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27630 > > │ 00:00:26 v #200 > Creating
00:21:42 v #27631 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/719cf660228f57fd8847d69
00:21:42 v #27632 > > 6090075444289b6dd7fb5fd3d15959d463ff28dd4.svg
00:21:42 v #27633 > > │ 00:00:26 d #201 runtime.execute_with_options_async / {
00:21:42 v #27634 > > exit_code = 0; output_length = 134 }
00:21:42 v #27635 > > │ 00:00:26 d #202 runtime.execute_with_options_async / {
00:21:42 v #27636 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27637 > > arguments = US5_1; options = { command =
00:21:42 v #27638 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27639 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27640 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27641 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27642 > > │ 00:00:26 v #203 > Creating
00:21:42 v #27643 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/3937c309891869cde1782a6
00:21:42 v #27644 > > 76801b77a082e459f8541d1e05a7516c2d6a3a72b.svg
00:21:42 v #27645 > > │ 00:00:26 d #204 runtime.execute_with_options_async / {
00:21:42 v #27646 > > exit_code = 0; output_length = 134 }
00:21:42 v #27647 > > │ 00:00:26 d #205 runtime.execute_with_options_async / {
00:21:42 v #27648 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27649 > > arguments = US5_1; options = { command =
00:21:42 v #27650 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27651 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27652 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27653 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27654 > > │ 00:00:26 v #206 > Creating
00:21:42 v #27655 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/3d48c97a72e450bf34cb16f
00:21:42 v #27656 > > 39f9fa7a60c4f643c0f2eb8d8bc1832fda0e3cd54.svg
00:21:42 v #27657 > > │ 00:00:26 d #207 runtime.execute_with_options_async / {
00:21:42 v #27658 > > exit_code = 0; output_length = 134 }
00:21:42 v #27659 > > │ 00:00:26 d #208 runtime.execute_with_options_async / {
00:21:42 v #27660 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27661 > > arguments = US5_1; options = { command =
00:21:42 v #27662 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27663 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27664 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27665 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27666 > > │ 00:00:26 v #209 > Creating
00:21:42 v #27667 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/723726570af61bed1daa851
00:21:42 v #27668 > > 81582acdd1a38621d0127fb5bb285a52cbca9c55e.svg
00:21:42 v #27669 > > │ 00:00:26 d #210 runtime.execute_with_options_async / {
00:21:42 v #27670 > > exit_code = 0; output_length = 134 }
00:21:42 v #27671 > > │ 00:00:26 d #211 runtime.execute_with_options_async / {
00:21:42 v #27672 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27673 > > arguments = US5_1; options = { command =
00:21:42 v #27674 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27675 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27676 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27677 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27678 > > │ 00:00:26 v #212 > Creating
00:21:42 v #27679 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/41edb0d06298b6a2b77e6b0
00:21:42 v #27680 > > b0f8181d07eae00c470242422c86f2d3a9df20f2c.svg
00:21:42 v #27681 > > │ 00:00:26 d #213 runtime.execute_with_options_async / {
00:21:42 v #27682 > > exit_code = 0; output_length = 134 }
00:21:42 v #27683 > > │ 00:00:26 d #214 runtime.execute_with_options_async / {
00:21:42 v #27684 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27685 > > arguments = US5_1; options = { command =
00:21:42 v #27686 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27687 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27688 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27689 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27690 > > │ 00:00:26 v #215 > Creating
00:21:42 v #27691 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/ecdf43a5e27f3b426434ff6
00:21:42 v #27692 > > d5c263120f68db972ab74626ec1f04425e21353be.svg
00:21:42 v #27693 > > │ 00:00:26 d #216 runtime.execute_with_options_async / {
00:21:42 v #27694 > > exit_code = 0; output_length = 134 }
00:21:42 v #27695 > > │ 00:00:26 d #217 runtime.execute_with_options_async / {
00:21:42 v #27696 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27697 > > arguments = US5_1; options = { command =
00:21:42 v #27698 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27699 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27700 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27701 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27702 > > │ 00:00:26 v #218 > Creating
00:21:42 v #27703 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/f4e498f816d3ebaa61701bf
00:21:42 v #27704 > > b8382cad124f71ed3342c3db593fdc4baa294e95f.svg
00:21:42 v #27705 > > │ 00:00:26 d #219 runtime.execute_with_options_async / {
00:21:42 v #27706 > > exit_code = 0; output_length = 134 }
00:21:42 v #27707 > > │ 00:00:26 d #220 runtime.execute_with_options_async / {
00:21:42 v #27708 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27709 > > arguments = US5_1; options = { command =
00:21:42 v #27710 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27711 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27712 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27713 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27714 > > │ 00:00:26 v #221 > Creating
00:21:42 v #27715 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/d101f682dfddc088e757997
00:21:42 v #27716 > > 4ced37aa327a3bb1ae0ed5025b005fa24ea15a7dc.svg
00:21:42 v #27717 > > │ 00:00:26 d #222 runtime.execute_with_options_async / {
00:21:42 v #27718 > > exit_code = 0; output_length = 134 }
00:21:42 v #27719 > > │ 00:00:26 d #223 runtime.execute_with_options_async / {
00:21:42 v #27720 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27721 > > arguments = US5_1; options = { command =
00:21:42 v #27722 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27723 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27724 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27725 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27726 > > │ 00:00:26 v #224 > Creating
00:21:42 v #27727 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/bc8871e382c35fb284103c8
00:21:42 v #27728 > > eca5f2c1b7b3aabf0dfe7a88637d96bb558d749ab.svg
00:21:42 v #27729 > > │ 00:00:26 d #225 runtime.execute_with_options_async / {
00:21:42 v #27730 > > exit_code = 0; output_length = 134 }
00:21:42 v #27731 > > │ 00:00:26 d #226 runtime.execute_with_options_async / {
00:21:42 v #27732 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27733 > > arguments = US5_1; options = { command =
00:21:42 v #27734 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27735 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27736 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27737 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27738 > > │ 00:00:26 v #227 > Creating
00:21:42 v #27739 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/810be92ead3834fd2f9daf0
00:21:42 v #27740 > > 62ebd24ad35f15e24dce54aa82d69e13a2158a733.svg
00:21:42 v #27741 > > │ 00:00:26 d #228 runtime.execute_with_options_async / {
00:21:42 v #27742 > > exit_code = 0; output_length = 134 }
00:21:42 v #27743 > > │ 00:00:26 d #229 runtime.execute_with_options_async / {
00:21:42 v #27744 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27745 > > arguments = US5_1; options = { command =
00:21:42 v #27746 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27747 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27748 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27749 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27750 > > │ 00:00:26 v #230 > Creating
00:21:42 v #27751 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/8c23dcf0c85bba40477a6dc
00:21:42 v #27752 > > 081dfef35f4ea67e9ad5731e1b83eeb9ce13418e0.svg
00:21:42 v #27753 > > │ 00:00:26 d #231 runtime.execute_with_options_async / {
00:21:42 v #27754 > > exit_code = 0; output_length = 134 }
00:21:42 v #27755 > > │ 00:00:26 d #232 runtime.execute_with_options_async / {
00:21:42 v #27756 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27757 > > arguments = US5_1; options = { command =
00:21:42 v #27758 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27759 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27760 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27761 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27762 > > │ 00:00:26 v #233 > Creating
00:21:42 v #27763 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/00c79858fdfeff82c9976e8
00:21:42 v #27764 > > 339acf00f55b7911d85d3a5549512a823160750f1.svg
00:21:42 v #27765 > > │ 00:00:26 d #234 runtime.execute_with_options_async / {
00:21:42 v #27766 > > exit_code = 0; output_length = 134 }
00:21:42 v #27767 > > │ 00:00:26 d #235 runtime.execute_with_options_async / {
00:21:42 v #27768 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27769 > > arguments = US5_1; options = { command =
00:21:42 v #27770 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27771 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27772 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27773 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27774 > > │ 00:00:26 v #236 > Creating
00:21:42 v #27775 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/248aa1496994a15d405a052
00:21:42 v #27776 > > aab722597383eb415943b4e9a72c87961aad83430.svg
00:21:42 v #27777 > > │ 00:00:26 d #237 runtime.execute_with_options_async / {
00:21:42 v #27778 > > exit_code = 0; output_length = 134 }
00:21:42 v #27779 > > │ 00:00:26 d #238 runtime.execute_with_options_async / {
00:21:42 v #27780 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27781 > > arguments = US5_1; options = { command =
00:21:42 v #27782 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot;
00:21:42 v #27783 > > cancellation_token = Some System.Threading.CancellationToken;
00:21:42 v #27784 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:21:42 v #27785 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:21:42 v #27786 > > │ 00:00:26 v #239 > Creating
00:21:42 v #27787 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/bede6e595697b6a21a1b37c
00:21:42 v #27788 > > e58511f9e5adf6df47f0174d56d18df06b722c982.svg
00:21:42 v #27789 > > │ 00:00:26 d #240 runtime.execute_with_options_async / {
00:21:42 v #27790 > > exit_code = 0; output_length = 134 }
00:21:42 v #27791 > > │
00:21:42 v #27792 > >
00:21:42 v #27793 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:42 v #27794 > > │ ## end
00:21:42 v #27795 > 00:00:36 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 185493 }
00:21:42 v #27796 > 00:00:36 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/physics.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/physics.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:21:43 v #27797 > 00:00:37 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/physics.dib.ipynb to html
00:21:43 v #27798 > 00:00:37 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:21:43 v #27799 > 00:00:37 v #7 !   validate(nb)
00:21:43 v #27800 > 00:00:37 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:21:43 v #27801 > 00:00:37 v #9 !   return _pygments_highlight(
00:21:46 v #27802 > 00:00:40 v #10 ! [NbConvertApp] Writing 2577025 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/physics.dib.html
00:21:46 v #27803 > 00:00:40 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 899 }
00:21:46 v #27804 > 00:00:40 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 899 }
00:21:46 v #27805 > 00:00:40 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/physics.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/physics.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:21:46 v #27806 > 00:00:40 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:21:46 v #27807 > 00:00:40 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:21:46 v #27808 > 00:00:40 d #16 spiral.run / dib / { exit_code = 0; result_length = 186451 }
00:21:46 d #27809 runtime.execute_with_options_async / { exit_code = 0; output_length = 196765 }
00:21:46 d #34 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path physics.dib --retries 3
00:21:46 d #27810 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path seq.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path seq.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:21:46 v #27811 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "seq.dib", "--retries", "3"])) }
00:21:46 v #27812 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/seq.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/seq.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/seq.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/seq.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:21:48 v #27813 > >
00:21:48 v #27814 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:48 v #27815 > > │ # seq
00:21:50 v #27816 > >
00:21:50 v #27817 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:50 v #27818 > > //// test
00:21:50 v #27819 > >
00:21:50 v #27820 > > open testing
00:21:51 v #27821 > >
00:21:51 v #27822 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:51 v #27823 > > │ ## seq
00:21:51 v #27824 > >
00:21:51 v #27825 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:51 v #27826 > > │ ### seq
00:21:51 v #27827 > >
00:21:51 v #27828 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:51 v #27829 > > type seq dim el = dim -> option el
00:21:51 v #27830 > >
00:21:51 v #27831 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:51 v #27832 > > │ ### try_item
00:21:51 v #27833 > >
00:21:51 v #27834 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:51 v #27835 > > inl try_item n s =
00:21:51 v #27836 > >     n |> s
00:21:51 v #27837 > >
00:21:51 v #27838 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:51 v #27839 > > │ ### from_list
00:21:51 v #27840 > >
00:21:51 v #27841 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:51 v #27842 > > inl from_list list =
00:21:51 v #27843 > >     fun n =>
00:21:51 v #27844 > >         list
00:21:51 v #27845 > >         |> listm'.try_item n
00:21:51 v #27846 > >
00:21:51 v #27847 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:51 v #27848 > > //// test
00:21:51 v #27849 > >
00:21:51 v #27850 > > listm.init 10i32 print_and_return
00:21:51 v #27851 > > |> from_list
00:21:51 v #27852 > > |> try_item 5i32
00:21:51 v #27853 > > |> _assert_eq (Some 5i32)
00:21:52 v #27854 > >
00:21:52 v #27855 > > ── [ 839.17ms - stdout ] ───────────────────────────────────────────────────────
00:21:52 v #27856 > > │ print_and_return / x: 0
00:21:52 v #27857 > > │ print_and_return / x: 1
00:21:52 v #27858 > > │ print_and_return / x: 2
00:21:52 v #27859 > > │ print_and_return / x: 3
00:21:52 v #27860 > > │ print_and_return / x: 4
00:21:52 v #27861 > > │ print_and_return / x: 5
00:21:52 v #27862 > > │ print_and_return / x: 6
00:21:52 v #27863 > > │ print_and_return / x: 7
00:21:52 v #27864 > > │ print_and_return / x: 8
00:21:52 v #27865 > > │ print_and_return / x: 9
00:21:52 v #27866 > > │ __assert_eq / actual: US0_0 5 / expected: US0_0 5
00:21:52 v #27867 > > │
00:21:52 v #27868 > >
00:21:52 v #27869 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:52 v #27870 > > │ ### map
00:21:52 v #27871 > >
00:21:52 v #27872 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:52 v #27873 > > inl map fn s =
00:21:52 v #27874 > >     fun n =>
00:21:52 v #27875 > >         n
00:21:52 v #27876 > >         |> s
00:21:52 v #27877 > >         |> optionm.map fn
00:21:52 v #27878 > >
00:21:52 v #27879 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:52 v #27880 > > //// test
00:21:52 v #27881 > >
00:21:52 v #27882 > > listm.init 10i32 id
00:21:52 v #27883 > > |> from_list
00:21:52 v #27884 > > |> map ((*) 2)
00:21:52 v #27885 > > |> try_item 5i32
00:21:52 v #27886 > > |> _assert_eq (Some 10i32)
00:21:52 v #27887 > >
00:21:52 v #27888 > > ── [ 189.17ms - stdout ] ───────────────────────────────────────────────────────
00:21:52 v #27889 > > │ __assert_eq / actual: US0_0 10 / expected: US0_0 10
00:21:52 v #27890 > > │
00:21:52 v #27891 > >
00:21:52 v #27892 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:52 v #27893 > > │ ### mapi
00:21:52 v #27894 > >
00:21:52 v #27895 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:52 v #27896 > > inl mapi fn s =
00:21:52 v #27897 > >     fun n =>
00:21:52 v #27898 > >         n
00:21:52 v #27899 > >         |> s
00:21:52 v #27900 > >         |> optionm.map (fn n)
00:21:52 v #27901 > >
00:21:52 v #27902 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:52 v #27903 > > //// test
00:21:52 v #27904 > >
00:21:52 v #27905 > > listm.init 10i32 print_and_return
00:21:52 v #27906 > > |> from_list
00:21:52 v #27907 > > |> mapi fun i x => i + x
00:21:52 v #27908 > > |> try_item 5i32
00:21:52 v #27909 > > |> _assert_eq (Some 10i32)
00:21:53 v #27910 > >
00:21:53 v #27911 > > ── [ 209.48ms - stdout ] ───────────────────────────────────────────────────────
00:21:53 v #27912 > > │ print_and_return / x: 0
00:21:53 v #27913 > > │ print_and_return / x: 1
00:21:53 v #27914 > > │ print_and_return / x: 2
00:21:53 v #27915 > > │ print_and_return / x: 3
00:21:53 v #27916 > > │ print_and_return / x: 4
00:21:53 v #27917 > > │ print_and_return / x: 5
00:21:53 v #27918 > > │ print_and_return / x: 6
00:21:53 v #27919 > > │ print_and_return / x: 7
00:21:53 v #27920 > > │ print_and_return / x: 8
00:21:53 v #27921 > > │ print_and_return / x: 9
00:21:53 v #27922 > > │ __assert_eq / actual: US0_0 10 / expected: US0_0 10
00:21:53 v #27923 > > │
00:21:53 v #27924 > >
00:21:53 v #27925 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:53 v #27926 > > │ ### choose
00:21:53 v #27927 > >
00:21:53 v #27928 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:53 v #27929 > > inl choose forall dim {number} t u. (fn : t -> option u) (s : seq dim t) : seq
00:21:53 v #27930 > > dim u =
00:21:53 v #27931 > >     fun n =>
00:21:53 v #27932 > >         inl rec body fn s i i' =
00:21:53 v #27933 > >             match i |> s with
00:21:53 v #27934 > >             | None => None
00:21:53 v #27935 > >             | Some x =>
00:21:53 v #27936 > >                 match x |> fn with
00:21:53 v #27937 > >                 | Some x when n = i' => Some x
00:21:53 v #27938 > >                 | Some _ => loop (i + 1) (i' + 1)
00:21:53 v #27939 > >                 | _ => loop (i + 1) i'
00:21:53 v #27940 > >         and inl loop i i' =
00:21:53 v #27941 > >             if n |> var_is |> not
00:21:53 v #27942 > >             then body fn s i i'
00:21:53 v #27943 > >             else
00:21:53 v #27944 > >                 inl fn = join fn
00:21:53 v #27945 > >                 inl s = join s
00:21:53 v #27946 > >                 join body fn s i i'
00:21:53 v #27947 > >         loop 0 0
00:21:53 v #27948 > >
00:21:53 v #27949 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:53 v #27950 > > //// test
00:21:53 v #27951 > >
00:21:53 v #27952 > > listm.init 10i32 print_and_return
00:21:53 v #27953 > > |> from_list
00:21:53 v #27954 > > |> choose (fun x => if x % 2 = 0 then Some x else None)
00:21:53 v #27955 > > |> try_item 1i32
00:21:53 v #27956 > > |> _assert_eq (Some 2i32)
00:21:53 v #27957 > >
00:21:53 v #27958 > > ── [ 163.96ms - stdout ] ───────────────────────────────────────────────────────
00:21:53 v #27959 > > │ print_and_return / x: 0
00:21:53 v #27960 > > │ print_and_return / x: 1
00:21:53 v #27961 > > │ print_and_return / x: 2
00:21:53 v #27962 > > │ print_and_return / x: 3
00:21:53 v #27963 > > │ print_and_return / x: 4
00:21:53 v #27964 > > │ print_and_return / x: 5
00:21:53 v #27965 > > │ print_and_return / x: 6
00:21:53 v #27966 > > │ print_and_return / x: 7
00:21:53 v #27967 > > │ print_and_return / x: 8
00:21:53 v #27968 > > │ print_and_return / x: 9
00:21:53 v #27969 > > │ __assert_eq / actual: US0_0 2 / expected: US0_0 2
00:21:53 v #27970 > > │
00:21:53 v #27971 > >
00:21:53 v #27972 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:53 v #27973 > > │ ### indexed
00:21:53 v #27974 > >
00:21:53 v #27975 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:53 v #27976 > > inl indexed s =
00:21:53 v #27977 > >     s
00:21:53 v #27978 > >     |> mapi fun i x =>
00:21:53 v #27979 > >         i, x
00:21:53 v #27980 > >
00:21:53 v #27981 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:53 v #27982 > > //// test
00:21:53 v #27983 > >
00:21:53 v #27984 > > listm.init 10i32 ((*) 2)
00:21:53 v #27985 > > |> from_list
00:21:53 v #27986 > > |> indexed
00:21:53 v #27987 > > |> try_item 5i32
00:21:53 v #27988 > > |> _assert_eq (Some (5i32, 10i32))
00:21:53 v #27989 > >
00:21:53 v #27990 > > ── [ 185.13ms - stdout ] ───────────────────────────────────────────────────────
00:21:53 v #27991 > > │ __assert_eq / actual: US0_0 (5, 10) / expected: US0_0 (5, 10)
00:21:53 v #27992 > > │
00:21:53 v #27993 > >
00:21:53 v #27994 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:53 v #27995 > > │ ### zip
00:21:53 v #27996 > >
00:21:53 v #27997 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:53 v #27998 > > inl zip n seq1 seq2 =
00:21:53 v #27999 > >     seq1 n, seq2 n
00:21:53 v #28000 > >
00:21:53 v #28001 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:53 v #28002 > > //// test
00:21:53 v #28003 > >
00:21:53 v #28004 > > ((listm.init 10i32 id |> from_list), (listm.init 10i32 ((*) 2) |> from_list))
00:21:53 v #28005 > > ||> zip 5i32
00:21:53 v #28006 > > |> _assert_eq (Some 5, Some 10)
00:21:54 v #28007 > >
00:21:54 v #28008 > > ── [ 189.22ms - stdout ] ───────────────────────────────────────────────────────
00:21:54 v #28009 > > │ __assert_eq / actual: struct (US0_0 5, US0_0 10) / expected:
00:21:54 v #28010 > > struct (US0_0 5, US0_0 10)
00:21:54 v #28011 > > │
00:21:54 v #28012 > >
00:21:54 v #28013 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:54 v #28014 > > │ ### zip_with
00:21:54 v #28015 > >
00:21:54 v #28016 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:54 v #28017 > > inl zip_with fn seq1 seq2 =
00:21:54 v #28018 > >     fun n =>
00:21:54 v #28019 > >         fn (seq1 n) (seq2 n)
00:21:54 v #28020 > >
00:21:54 v #28021 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:54 v #28022 > > //// test
00:21:54 v #28023 > >
00:21:54 v #28024 > > ((listm.init 10i32 id |> from_list), (listm.init 10i32 ((*) 2) |> from_list))
00:21:54 v #28025 > > ||> zip_with (optionm'.choose (+))
00:21:54 v #28026 > > |> try_item 2i32
00:21:54 v #28027 > > |> _assert_eq (Some 6)
00:21:54 v #28028 > >
00:21:54 v #28029 > > ── [ 183.71ms - stdout ] ───────────────────────────────────────────────────────
00:21:54 v #28030 > > │ __assert_eq / actual: US0_0 6 / expected: US0_0 6
00:21:54 v #28031 > > │
00:21:54 v #28032 > >
00:21:54 v #28033 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:54 v #28034 > > │ ### fold
00:21:54 v #28035 > >
00:21:54 v #28036 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:54 v #28037 > > inl fold fn init seq =
00:21:54 v #28038 > >     inl rec loop acc n =
00:21:54 v #28039 > >         match seq n with
00:21:54 v #28040 > >         | Some x => loop (fn acc x) (n + 1)
00:21:54 v #28041 > >         | None => acc
00:21:54 v #28042 > >     loop init 0
00:21:54 v #28043 > >
00:21:54 v #28044 > > inl fold_ fn init seq =
00:21:54 v #28045 > >     let rec loop acc n =
00:21:54 v #28046 > >         match seq n with
00:21:54 v #28047 > >         | Some x => loop (fn acc x) (n + 1)
00:21:54 v #28048 > >         | None => acc
00:21:54 v #28049 > >     loop init 0
00:21:54 v #28050 > >
00:21:54 v #28051 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:54 v #28052 > > │ ### sum
00:21:54 v #28053 > >
00:21:54 v #28054 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:54 v #28055 > > inl sum seq =
00:21:54 v #28056 > >     seq |> fold (+) 0
00:21:54 v #28057 > >
00:21:54 v #28058 > > inl sum_ seq =
00:21:54 v #28059 > >     seq |> fold_ (+) 0
00:21:54 v #28060 > >
00:21:54 v #28061 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:54 v #28062 > > //// test
00:21:54 v #28063 > >
00:21:54 v #28064 > > listm.init 10i32 id
00:21:54 v #28065 > > |> from_list
00:21:54 v #28066 > > |> fun f (n : i32) => f n
00:21:54 v #28067 > > |> sum
00:21:54 v #28068 > > |> _assert_eq 45
00:21:54 v #28069 > >
00:21:54 v #28070 > > ── [ 168.78ms - stdout ] ───────────────────────────────────────────────────────
00:21:54 v #28071 > > │ __assert_eq / actual: 45 / expected: 45
00:21:54 v #28072 > > │
00:21:54 v #28073 > >
00:21:54 v #28074 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:54 v #28075 > > │ ### to_list
00:21:54 v #28076 > >
00:21:54 v #28077 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:54 v #28078 > > inl to_list seq =
00:21:54 v #28079 > >     seq
00:21:54 v #28080 > >     |> fold (fun acc x => x :: acc) [[]]
00:21:54 v #28081 > >     |> listm.rev
00:21:54 v #28082 > >
00:21:54 v #28083 > > inl to_list_ seq =
00:21:54 v #28084 > >     seq
00:21:54 v #28085 > >     |> fold_ (fun acc x => x :: acc) [[]]
00:21:54 v #28086 > >     |> listm.rev
00:21:55 v #28087 > >
00:21:55 v #28088 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:55 v #28089 > > //// test
00:21:55 v #28090 > >
00:21:55 v #28091 > > listm.init 10i32 id
00:21:55 v #28092 > > |> from_list
00:21:55 v #28093 > > |> fun f (n : i32) => f n
00:21:55 v #28094 > > |> to_list
00:21:55 v #28095 > > |> _assert_eq (listm.init 10i32 id)
00:21:55 v #28096 > >
00:21:55 v #28097 > > ── [ 210.96ms - stdout ] ───────────────────────────────────────────────────────
00:21:55 v #28098 > > │ __assert_eq / actual: UH0_1
00:21:55 v #28099 > > │   (0,
00:21:55 v #28100 > > │    UH0_1
00:21:55 v #28101 > > │      (1,
00:21:55 v #28102 > > │       UH0_1
00:21:55 v #28103 > > │         (2,
00:21:55 v #28104 > > │          UH0_1
00:21:55 v #28105 > > │            (3,
00:21:55 v #28106 > > │             UH0_1
00:21:55 v #28107 > > │               (4, UH0_1 (5, UH0_1 (6, UH0_1 (7, UH0_1 (8,
00:21:55 v #28108 > > UH0_1 (9, UH0_0)))))))))) / expected: UH0_1
00:21:55 v #28109 > > │   (0,
00:21:55 v #28110 > > │    UH0_1
00:21:55 v #28111 > > │      (1,
00:21:55 v #28112 > > │       UH0_1
00:21:55 v #28113 > > │         (2,
00:21:55 v #28114 > > │          UH0_1
00:21:55 v #28115 > > │            (3,
00:21:55 v #28116 > > │             UH0_1
00:21:55 v #28117 > > │               (4, UH0_1 (5, UH0_1 (6, UH0_1 (7, UH0_1 (8,
00:21:55 v #28118 > > UH0_1 (9, UH0_0))))))))))
00:21:55 v #28119 > > │
00:21:55 v #28120 > >
00:21:55 v #28121 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:55 v #28122 > > │ ### from_array
00:21:55 v #28123 > >
00:21:55 v #28124 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:55 v #28125 > > inl from_array forall dim {number; int} el. (array : a dim el) : seq dim el =
00:21:55 v #28126 > >     fun n =>
00:21:55 v #28127 > >         if n >= length array
00:21:55 v #28128 > >         then None
00:21:55 v #28129 > >         else index array n |> Some
00:21:55 v #28130 > >
00:21:55 v #28131 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:55 v #28132 > > //// test
00:21:55 v #28133 > >
00:21:55 v #28134 > > a ;[[ 1; 2; 3 ]]
00:21:55 v #28135 > > |> from_array
00:21:55 v #28136 > > |> try_item 1i32
00:21:55 v #28137 > > |> _assert_eq (Some 2i32)
00:21:55 v #28138 > >
00:21:55 v #28139 > > ── [ 271.79ms - stdout ] ───────────────────────────────────────────────────────
00:21:55 v #28140 > > │ __assert_eq / actual: US0_0 2 / expected: US0_0 2
00:21:55 v #28141 > > │
00:21:55 v #28142 > >
00:21:55 v #28143 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:55 v #28144 > > │ ### to_array
00:21:55 v #28145 > >
00:21:55 v #28146 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:55 v #28147 > > inl to_array seq =
00:21:55 v #28148 > >     inl ar = a ;[[]] |> mut
00:21:55 v #28149 > >     ((), seq)
00:21:55 v #28150 > >     ||> fold fun _ x =>
00:21:55 v #28151 > >         ar <- *ar ++ a ;[[x]]
00:21:55 v #28152 > >     *ar
00:21:55 v #28153 > >
00:21:55 v #28154 > > inl to_array_ seq =
00:21:55 v #28155 > >     inl ar = a ;[[]] |> mut
00:21:55 v #28156 > >     ((), seq)
00:21:55 v #28157 > >     ||> fold_ fun _ x =>
00:21:55 v #28158 > >         ar <- *ar ++ a ;[[x]]
00:21:55 v #28159 > >     *ar
00:21:55 v #28160 > >
00:21:55 v #28161 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:55 v #28162 > > //// test
00:21:55 v #28163 > >
00:21:55 v #28164 > > listm.init 10i32 id
00:21:55 v #28165 > > |> from_list
00:21:55 v #28166 > > |> fun (x : i32 -> _) => x
00:21:55 v #28167 > > |> to_array
00:21:55 v #28168 > > |> _assert_eq (a ;[[ 0; 1; 2; 3; 4; 5; 6; 7; 8; 9 ]] : _ i32 _)
00:21:56 v #28169 > >
00:21:56 v #28170 > > ── [ 360.20ms - stdout ] ───────────────────────────────────────────────────────
00:21:56 v #28171 > > │ __assert_eq / actual: [|0; 1; 2; 3; 4; 5; 6; 7; 8; 9|]
00:21:56 v #28172 > > expected: [|0; 1; 2; 3; 4; 5; 6; 7; 8; 9|]
00:21:56 v #28173 > > │
00:21:56 v #28174 > >
00:21:56 v #28175 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:56 v #28176 > > │ ### take_while
00:21:56 v #28177 > >
00:21:56 v #28178 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:56 v #28179 > > inl take_while cond seq =
00:21:56 v #28180 > >     inl rec loop acc i =
00:21:56 v #28181 > >         match seq i with
00:21:56 v #28182 > >         | Some st when cond st i => loop (st :: acc) (i + 1)
00:21:56 v #28183 > >         | _ => acc |> listm.rev
00:21:56 v #28184 > >     loop [[]] 0
00:21:56 v #28185 > >
00:21:56 v #28186 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:56 v #28187 > > //// test
00:21:56 v #28188 > >
00:21:56 v #28189 > > listm.init 10i32 id
00:21:56 v #28190 > > |> from_list
00:21:56 v #28191 > > |> take_while (fun n (_ : i32) => n < 5)
00:21:56 v #28192 > > |> listm'.sum
00:21:56 v #28193 > > |> _assert_eq 10
00:21:56 v #28194 > >
00:21:56 v #28195 > > ── [ 173.87ms - stdout ] ───────────────────────────────────────────────────────
00:21:56 v #28196 > > │ __assert_eq / actual: 10 / expected: 10
00:21:56 v #28197 > > │
00:21:56 v #28198 > >
00:21:56 v #28199 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:56 v #28200 > > //// test
00:21:56 v #28201 > >
00:21:56 v #28202 > > stream.new_finite_stream print_and_return 10i32
00:21:56 v #28203 > > |> flip stream.try_item
00:21:56 v #28204 > > |> take_while (fun n (_ : i32) => n < 5)
00:21:56 v #28205 > > |> listm'.sum
00:21:56 v #28206 > > |> _assert_eq 10
00:21:56 v #28207 > >
00:21:56 v #28208 > > ── [ 172.38ms - stdout ] ───────────────────────────────────────────────────────
00:21:56 v #28209 > > │ print_and_return / x: 0
00:21:56 v #28210 > > │ print_and_return / x: 1
00:21:56 v #28211 > > │ print_and_return / x: 1
00:21:56 v #28212 > > │ print_and_return / x: 2
00:21:56 v #28213 > > │ print_and_return / x: 1
00:21:56 v #28214 > > │ print_and_return / x: 2
00:21:56 v #28215 > > │ print_and_return / x: 3
00:21:56 v #28216 > > │ print_and_return / x: 1
00:21:56 v #28217 > > │ print_and_return / x: 2
00:21:56 v #28218 > > │ print_and_return / x: 3
00:21:56 v #28219 > > │ print_and_return / x: 4
00:21:56 v #28220 > > │ print_and_return / x: 1
00:21:56 v #28221 > > │ print_and_return / x: 2
00:21:56 v #28222 > > │ print_and_return / x: 3
00:21:56 v #28223 > > │ print_and_return / x: 4
00:21:56 v #28224 > > │ print_and_return / x: 5
00:21:56 v #28225 > > │ __assert_eq / actual: 10 / expected: 10
00:21:56 v #28226 > > │
00:21:56 v #28227 > >
00:21:56 v #28228 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:56 v #28229 > > │ ### take_while_
00:21:56 v #28230 > >
00:21:56 v #28231 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:56 v #28232 > > inl take_while_ cond seq =
00:21:56 v #28233 > >     let rec loop acc i =
00:21:56 v #28234 > >         match seq i with
00:21:56 v #28235 > >         | Some st when cond st i => loop (st :: acc) (i + 1)
00:21:56 v #28236 > >         | _ => acc |> listm.rev
00:21:56 v #28237 > >     loop [[]] 0
00:21:56 v #28238 > >
00:21:56 v #28239 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:56 v #28240 > > //// test
00:21:56 v #28241 > >
00:21:56 v #28242 > > stream.new_infinite_stream_ print_and_return
00:21:56 v #28243 > > |> flip stream.try_item
00:21:56 v #28244 > > |> take_while_ (fun n (_ : i32) => n < 5i32)
00:21:56 v #28245 > > |> listm'.sum
00:21:56 v #28246 > > |> _assert_eq 10
00:21:57 v #28247 > >
00:21:57 v #28248 > > ── [ 280.46ms - stdout ] ───────────────────────────────────────────────────────
00:21:57 v #28249 > > │ print_and_return / x: 0
00:21:57 v #28250 > > │ print_and_return / x: 1
00:21:57 v #28251 > > │ print_and_return / x: 1
00:21:57 v #28252 > > │ print_and_return / x: 2
00:21:57 v #28253 > > │ print_and_return / x: 1
00:21:57 v #28254 > > │ print_and_return / x: 2
00:21:57 v #28255 > > │ print_and_return / x: 3
00:21:57 v #28256 > > │ print_and_return / x: 1
00:21:57 v #28257 > > │ print_and_return / x: 2
00:21:57 v #28258 > > │ print_and_return / x: 3
00:21:57 v #28259 > > │ print_and_return / x: 4
00:21:57 v #28260 > > │ print_and_return / x: 1
00:21:57 v #28261 > > │ print_and_return / x: 2
00:21:57 v #28262 > > │ print_and_return / x: 3
00:21:57 v #28263 > > │ print_and_return / x: 4
00:21:57 v #28264 > > │ print_and_return / x: 5
00:21:57 v #28265 > > │ __assert_eq / actual: 10 / expected: 10
00:21:57 v #28266 > > │
00:21:57 v #28267 > >
00:21:57 v #28268 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:57 v #28269 > > //// test
00:21:57 v #28270 > >
00:21:57 v #28271 > > stream.new_infinite_stream_ print_and_return
00:21:57 v #28272 > > |> stream.memoize
00:21:57 v #28273 > > |> fun list =>
00:21:57 v #28274 > >     inl list = list ()
00:21:57 v #28275 > >     fun n =>
00:21:57 v #28276 > >         list |> stream.try_item n
00:21:57 v #28277 > > |> take_while_ (fun n (_ : i32) => n < 5i32)
00:21:57 v #28278 > > |> listm'.sum
00:21:57 v #28279 > > |> _assert_eq 10
00:21:57 v #28280 > >
00:21:57 v #28281 > > ── [ 263.66ms - stdout ] ───────────────────────────────────────────────────────
00:21:57 v #28282 > > │ print_and_return / x: 0
00:21:57 v #28283 > > │ print_and_return / x: 1
00:21:57 v #28284 > > │ print_and_return / x: 2
00:21:57 v #28285 > > │ print_and_return / x: 3
00:21:57 v #28286 > > │ print_and_return / x: 4
00:21:57 v #28287 > > │ print_and_return / x: 5
00:21:57 v #28288 > > │ __assert_eq / actual: 10 / expected: 10
00:21:57 v #28289 > > │
00:21:57 v #28290 > >
00:21:57 v #28291 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:57 v #28292 > > //// test
00:21:57 v #28293 > >
00:21:57 v #28294 > > stream.new_finite_stream print_and_return 10i32
00:21:57 v #28295 > > |> stream.memoize
00:21:57 v #28296 > > |> fun list =>
00:21:57 v #28297 > >     inl list = list ()
00:21:57 v #28298 > >     fun n =>
00:21:57 v #28299 > >         list |> stream.try_item n
00:21:57 v #28300 > > |> take_while_ (fun n (_ : i32) => n < 5)
00:21:57 v #28301 > > |> listm'.sum
00:21:57 v #28302 > > |> _assert_eq 10
00:21:57 v #28303 > >
00:21:57 v #28304 > > ── [ 262.29ms - stdout ] ───────────────────────────────────────────────────────
00:21:57 v #28305 > > │ print_and_return / x: 0
00:21:57 v #28306 > > │ print_and_return / x: 1
00:21:57 v #28307 > > │ print_and_return / x: 2
00:21:57 v #28308 > > │ print_and_return / x: 3
00:21:57 v #28309 > > │ print_and_return / x: 4
00:21:57 v #28310 > > │ print_and_return / x: 5
00:21:57 v #28311 > > │ __assert_eq / actual: 10 / expected: 10
00:21:57 v #28312 > > │
00:21:57 v #28313 > >
00:21:57 v #28314 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:57 v #28315 > > │ ### memoize
00:21:57 v #28316 > >
00:21:57 v #28317 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:57 v #28318 > > inl memoize seq =
00:21:57 v #28319 > >     inl state = mut [[]]
00:21:57 v #28320 > >     fun n =>
00:21:57 v #28321 > >         match *state |> listm'.try_find (fun (n', _) => n' = n) with
00:21:57 v #28322 > >         | Some (_, v) => v
00:21:57 v #28323 > >         | None =>
00:21:57 v #28324 > >             inl new_state = seq n
00:21:57 v #28325 > >             state <- (n, new_state) :: *state
00:21:57 v #28326 > >             new_state
00:21:57 v #28327 > >
00:21:57 v #28328 > > inl memoize_ seq =
00:21:57 v #28329 > >     inl state = mut [[]]
00:21:57 v #28330 > >     fun n =>
00:21:57 v #28331 > >         match *state |> listm'.try_find_ (fun (n', _) => n' = n) with
00:21:57 v #28332 > >         | Some (_, v) => v
00:21:57 v #28333 > >         | None =>
00:21:57 v #28334 > >             inl new_state = seq n
00:21:57 v #28335 > >             state <- (n, new_state) :: *state
00:21:57 v #28336 > >             new_state
00:21:57 v #28337 > >
00:21:57 v #28338 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:57 v #28339 > > //// test
00:21:57 v #28340 > >
00:21:57 v #28341 > > inl seq =
00:21:57 v #28342 > >     fun n =>
00:21:57 v #28343 > >         n |> print_and_return |> Some
00:21:57 v #28344 > >     |> memoize_
00:21:57 v #28345 > >
00:21:57 v #28346 > > seq
00:21:57 v #28347 > > |> take_while_ (fun n (_ : i32) => n < 5)
00:21:57 v #28348 > > |> listm'.sum
00:21:57 v #28349 > > |> _assert_eq 10
00:21:57 v #28350 > >
00:21:57 v #28351 > > seq
00:21:57 v #28352 > > |> take_while_ (fun n _ => n < 5)
00:21:57 v #28353 > > |> listm'.sum
00:21:57 v #28354 > > |> _assert_eq 10
00:21:58 v #28355 > >
00:21:58 v #28356 > > ── [ 277.70ms - stdout ] ───────────────────────────────────────────────────────
00:21:58 v #28357 > > │ print_and_return / x: 0
00:21:58 v #28358 > > │ print_and_return / x: 1
00:21:58 v #28359 > > │ print_and_return / x: 2
00:21:58 v #28360 > > │ print_and_return / x: 3
00:21:58 v #28361 > > │ print_and_return / x: 4
00:21:58 v #28362 > > │ print_and_return / x: 5
00:21:58 v #28363 > > │ __assert_eq / actual: 10 / expected: 10
00:21:58 v #28364 > > │ __assert_eq / actual: 10 / expected: 10
00:21:58 v #28365 > > │
00:21:58 v #28366 > >
00:21:58 v #28367 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:58 v #28368 > > │ ### iterate
00:21:58 v #28369 > >
00:21:58 v #28370 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:58 v #28371 > > inl iterate f x0 num_steps =
00:21:58 v #28372 > >     inl rec loop x n =
00:21:58 v #28373 > >         if n <= 0
00:21:58 v #28374 > >         then x
00:21:58 v #28375 > >         else loop (f x) (n - 1)
00:21:58 v #28376 > >     loop x0 num_steps
00:21:58 v #28377 > >
00:21:58 v #28378 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:58 v #28379 > > //// test
00:21:58 v #28380 > >
00:21:58 v #28381 > > 10i32 |> iterate ((*) 2) 1i32
00:21:58 v #28382 > > |> _assert_eq 1024
00:21:58 v #28383 > >
00:21:58 v #28384 > > ── [ 167.73ms - stdout ] ───────────────────────────────────────────────────────
00:21:58 v #28385 > > │ __assert_eq / actual: 1024 / expected: 1024
00:21:58 v #28386 > > │
00:21:58 v #28387 > >
00:21:58 v #28388 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:58 v #28389 > > inl iterate_ f x0 num_steps =
00:21:58 v #28390 > >     let rec loop x n =
00:21:58 v #28391 > >         if n <= 0
00:21:58 v #28392 > >         then x
00:21:58 v #28393 > >         else loop (f x) (n - 1)
00:21:58 v #28394 > >     loop x0 num_steps
00:21:58 v #28395 > >
00:21:58 v #28396 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:58 v #28397 > > //// test
00:21:58 v #28398 > >
00:21:58 v #28399 > > 10i32 |> iterate_ ((*) 2) 1i32
00:21:58 v #28400 > > |> _assert_eq 1024
00:21:58 v #28401 > >
00:21:58 v #28402 > > ── [ 163.80ms - stdout ] ───────────────────────────────────────────────────────
00:21:58 v #28403 > > │ __assert_eq / actual: 1024 / expected: 1024
00:21:58 v #28404 > > │
00:21:58 v #28405 > >
00:21:58 v #28406 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:58 v #28407 > > inl iterate' f x0 num_steps =
00:21:58 v #28408 > >     listm.init num_steps id
00:21:58 v #28409 > >     |> listm.fold (fun x _ => f x) x0
00:21:58 v #28410 > >
00:21:58 v #28411 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:58 v #28412 > > //// test
00:21:58 v #28413 > >
00:21:58 v #28414 > > 10i32 |> iterate' ((*) 2) 1i32
00:21:58 v #28415 > > |> _assert_eq 1024
00:21:59 v #28416 > >
00:21:59 v #28417 > > ── [ 160.41ms - stdout ] ───────────────────────────────────────────────────────
00:21:59 v #28418 > > │ __assert_eq / actual: 1024 / expected: 1024
00:21:59 v #28419 > > │
00:21:59 v #28420 > >
00:21:59 v #28421 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:59 v #28422 > > │ ### find_last
00:21:59 v #28423 > >
00:21:59 v #28424 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:59 v #28425 > > inl find_last forall item result. fold_fn fn target : option result =
00:21:59 v #28426 > >     fold_fn (fun (item : item) (result : option result) =>
00:21:59 v #28427 > >         match result with
00:21:59 v #28428 > >         | None => fn item
00:21:59 v #28429 > >         | result => result
00:21:59 v #28430 > >     ) target (None : option result)
00:21:59 v #28431 > >
00:21:59 v #28432 > > inl array_find_last forall item result. (fn : item -> option result) (target : a
00:21:59 v #28433 > > i32 item) : option result =
00:21:59 v #28434 > >     find_last am.foldBack fn target
00:21:59 v #28435 > >
00:21:59 v #28436 > > inl list_find_last forall item result. (fn : item -> option result) (target :
00:21:59 v #28437 > > list item) : option result =
00:21:59 v #28438 > >     find_last listm.foldBack fn target
00:21:59 v #28439 > >
00:21:59 v #28440 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:59 v #28441 > > │ ## fsharp
00:21:59 v #28442 > >
00:21:59 v #28443 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:59 v #28444 > > │ ### seq'
00:21:59 v #28445 > >
00:21:59 v #28446 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:59 v #28447 > > nominal seq' t = $"backend_switch `({ Fsharp : $'`t seq'; Python : $'list' })"
00:21:59 v #28448 > >
00:21:59 v #28449 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:59 v #28450 > > │ ### length'
00:21:59 v #28451 > >
00:21:59 v #28452 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:59 v #28453 > > inl length' forall t. (items : seq' t) : int =
00:21:59 v #28454 > >     backend_switch {
00:21:59 v #28455 > >         Fsharp = fun () => items |> $'Seq.length' : int
00:21:59 v #28456 > >         Python = fun () => $'len(!items)' : int
00:21:59 v #28457 > >     }
00:21:59 v #28458 > >
00:21:59 v #28459 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:59 v #28460 > > │ ### to_list'
00:21:59 v #28461 > >
00:21:59 v #28462 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:59 v #28463 > > inl to_list' forall t. (items : seq' t) : listm'.list' t =
00:21:59 v #28464 > >     backend_switch {
00:21:59 v #28465 > >         Fsharp = fun () => items |> $'Seq.toList' : listm'.list' t
00:21:59 v #28466 > >         Python = fun () => $'!items ' : listm'.list' t
00:21:59 v #28467 > >     }
00:21:59 v #28468 > >
00:21:59 v #28469 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:59 v #28470 > > │ ### new_seq
00:21:59 v #28471 > >
00:21:59 v #28472 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:59 v #28473 > > inl new_seq forall t. fn : seq' t =
00:21:59 v #28474 > >     backend_switch {
00:21:59 v #28475 > >         Fsharp = fun () =>
00:21:59 v #28476 > >             fun () =>
00:21:59 v #28477 > >                 $'seq {'
00:21:59 v #28478 > >                 fn |> indent
00:21:59 v #28479 > >                 $'}' : ()
00:21:59 v #28480 > >             |> let'
00:21:59 v #28481 > >             |> fun x => x : seq' t
00:21:59 v #28482 > >         Python = fun () =>
00:21:59 v #28483 > >             $'list(!fn())' : seq' t
00:21:59 v #28484 > >     }
00:21:59 v #28485 > >
00:21:59 v #28486 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:59 v #28487 > > //// test
00:21:59 v #28488 > > ///! fsharp
00:21:59 v #28489 > > ///! cuda
00:21:59 v #28490 > >
00:21:59 v #28491 > > fun () =>
00:21:59 v #28492 > >     "a" |> yield
00:21:59 v #28493 > >     "b" |> yield
00:21:59 v #28494 > > |> new_seq
00:21:59 v #28495 > > |> to_list'
00:21:59 v #28496 > > |> listm'.unbox
00:21:59 v #28497 > > |> _assert_eq [[ "a"; "b" ]]
00:22:00 v #28498 > >
00:22:00 v #28499 > > ── [ 720.97ms - return value ] ─────────────────────────────────────────────────
00:22:00 v #28500 > > │ .py output (Cuda):
00:22:00 v #28501 > > │ __assert_eq / actual: UH0_1(v0='a', v1=UH0_1(v0='b',
00:22:00 v #28502 > > v1=UH0_0())) / expected: UH0_1(v0='a', v1=UH0_1(v0='b', v1=UH0_0()))
00:22:00 v #28503 > > │
00:22:00 v #28504 > > │
00:22:00 v #28505 > >
00:22:00 v #28506 > > ── [ 721.52ms - stdout ] ───────────────────────────────────────────────────────
00:22:00 v #28507 > > │ .fsx output:
00:22:00 v #28508 > > │ __assert_eq / actual: UH0_1 ("a", UH0_1 ("b", UH0_0))
00:22:00 v #28509 > > expected: UH0_1 ("a", UH0_1 ("b", UH0_0))
00:22:00 v #28510 > > │
00:22:00 v #28511 > >
00:22:00 v #28512 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:00 v #28513 > > │ ### of_array'
00:22:00 v #28514 > >
00:22:00 v #28515 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:00 v #28516 > > inl of_array' forall dim t. (items : a dim t) : seq' t =
00:22:00 v #28517 > >     backend_switch {
00:22:00 v #28518 > >         Fsharp = fun () =>
00:22:00 v #28519 > >             fun () =>
00:22:00 v #28520 > >                 $'for i = 0 to !items.Length - 1 do yield !items.[[i]]'
00:22:00 v #28521 > >             |> new_seq
00:22:00 v #28522 > >             |> fun x => x : seq' t
00:22:00 v #28523 > >         Python = fun () => $'[[item for item in !items]]' : seq' t
00:22:00 v #28524 > >     }
00:22:00 v #28525 > >
00:22:00 v #28526 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:00 v #28527 > > //// test
00:22:00 v #28528 > > ///! fsharp
00:22:00 v #28529 > > ///! cuda
00:22:00 v #28530 > > ///! rust
00:22:00 v #28531 > > ///! typescript
00:22:00 v #28532 > > ///! python
00:22:00 v #28533 > >
00:22:00 v #28534 > > (a ;[[ "a"; "b" ]] : _ int _)
00:22:00 v #28535 > > |> of_array'
00:22:00 v #28536 > > |> to_list'
00:22:00 v #28537 > > |> listm'.unbox
00:22:00 v #28538 > > |> _assert_eq [[ "a"; "b" ]]
00:22:09 v #28539 > >
00:22:09 v #28540 > > ── [ 8.81s - return value ] ────────────────────────────────────────────────────
00:22:09 v #28541 > > │ .py output (Cuda):
00:22:09 v #28542 > > │ __assert_eq / actual: UH0_1(v0='a', v1=UH0_1(v0='b',
00:22:09 v #28543 > > v1=UH0_0())) / expected: UH0_1(v0='a', v1=UH0_1(v0='b', v1=UH0_0()))
00:22:09 v #28544 > > │
00:22:09 v #28545 > > │ .rs output:
00:22:09 v #28546 > > │ __assert_eq / actual: UH0_1("a", UH0_1("b", UH0_0))
00:22:09 v #28547 > > expected: UH0_1("a", UH0_1("b", UH0_0))
00:22:09 v #28548 > > │
00:22:09 v #28549 > > │ .ts output:
00:22:09 v #28550 > > │ __assert_eq / actual: UH0_1 (a, UH0_1 (b, UH0_0)) / expected:
00:22:09 v #28551 > > UH0_1 (a, UH0_1 (b, UH0_0))
00:22:09 v #28552 > > │
00:22:09 v #28553 > > │ .py output:
00:22:09 v #28554 > > │ __assert_eq / actual: UH0_1 ("a", UH0_1 ("b", UH0_0))
00:22:09 v #28555 > > expected: UH0_1 ("a", UH0_1 ("b", UH0_0))
00:22:09 v #28556 > > │
00:22:09 v #28557 > > │
00:22:09 v #28558 > >
00:22:09 v #28559 > > ── [ 8.81s - stdout ] ──────────────────────────────────────────────────────────
00:22:09 v #28560 > > │ .fsx output:
00:22:09 v #28561 > > │ __assert_eq / actual: UH0_1 ("a", UH0_1 ("b", UH0_0))
00:22:09 v #28562 > > expected: UH0_1 ("a", UH0_1 ("b", UH0_0))
00:22:09 v #28563 > > │
00:22:09 v #28564 > >
00:22:09 v #28565 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:09 v #28566 > > │ ### of_array
00:22:09 v #28567 > >
00:22:09 v #28568 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:09 v #28569 > > inl of_array forall dim t. (items : a dim t) : seq' t =
00:22:09 v #28570 > >     backend_switch {
00:22:09 v #28571 > >         Fsharp = fun () => $'!items |> Seq.ofArray' : seq' t
00:22:09 v #28572 > >         Python = fun () => $'list(iter(!items))' : seq' t
00:22:09 v #28573 > >     }
00:22:09 v #28574 > >
00:22:09 v #28575 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:09 v #28576 > > //// test
00:22:09 v #28577 > > ///! fsharp
00:22:09 v #28578 > > ///! cuda
00:22:09 v #28579 > > ///! rust
00:22:09 v #28580 > > ///! typescript
00:22:09 v #28581 > > ///! python
00:22:09 v #28582 > >
00:22:09 v #28583 > > (a ;[[ "a"; "b" ]] : _ int _)
00:22:09 v #28584 > > |> of_array
00:22:09 v #28585 > > |> to_list'
00:22:09 v #28586 > > |> listm'.unbox
00:22:09 v #28587 > > |> _assert_eq [[ "a"; "b" ]]
00:22:18 v #28588 > >
00:22:18 v #28589 > > ── [ 8.43s - return value ] ────────────────────────────────────────────────────
00:22:18 v #28590 > > │ .py output (Cuda):
00:22:18 v #28591 > > │ __assert_eq / actual: UH0_1(v0='a', v1=UH0_1(v0='b',
00:22:18 v #28592 > > v1=UH0_0())) / expected: UH0_1(v0='a', v1=UH0_1(v0='b', v1=UH0_0()))
00:22:18 v #28593 > > │
00:22:18 v #28594 > > │ .rs output:
00:22:18 v #28595 > > │ __assert_eq / actual: UH0_1("a", UH0_1("b", UH0_0))
00:22:18 v #28596 > > expected: UH0_1("a", UH0_1("b", UH0_0))
00:22:18 v #28597 > > │
00:22:18 v #28598 > > │ .ts output:
00:22:18 v #28599 > > │ __assert_eq / actual: UH0_1 (a, UH0_1 (b, UH0_0)) / expected:
00:22:18 v #28600 > > UH0_1 (a, UH0_1 (b, UH0_0))
00:22:18 v #28601 > > │
00:22:18 v #28602 > > │ .py output:
00:22:18 v #28603 > > │ __assert_eq / actual: UH0_1 ("a", UH0_1 ("b", UH0_0))
00:22:18 v #28604 > > expected: UH0_1 ("a", UH0_1 ("b", UH0_0))
00:22:18 v #28605 > > │
00:22:18 v #28606 > > │
00:22:18 v #28607 > >
00:22:18 v #28608 > > ── [ 8.43s - stdout ] ──────────────────────────────────────────────────────────
00:22:18 v #28609 > > │ .fsx output:
00:22:18 v #28610 > > │ __assert_eq / actual: UH0_1 ("a", UH0_1 ("b", UH0_0))
00:22:18 v #28611 > > expected: UH0_1 ("a", UH0_1 ("b", UH0_0))
00:22:18 v #28612 > > │
00:22:18 v #28613 > >
00:22:18 v #28614 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:18 v #28615 > > │ ### of_array_base
00:22:18 v #28616 > >
00:22:18 v #28617 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:18 v #28618 > > inl of_array_base forall t. (items : array_base t) : seq' t =
00:22:18 v #28619 > >     a items
00:22:18 v #28620 > >     |> fun x => x : _ int _
00:22:18 v #28621 > >     |> of_array
00:22:18 v #28622 > >
00:22:18 v #28623 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:18 v #28624 > > //// test
00:22:18 v #28625 > > ///! fsharp
00:22:18 v #28626 > > ///! cuda
00:22:18 v #28627 > > ///! rust
00:22:18 v #28628 > > ///! typescript
00:22:18 v #28629 > > ///! python
00:22:18 v #28630 > >
00:22:18 v #28631 > > ;[[ "a"; "b" ]]
00:22:18 v #28632 > > |> of_array_base
00:22:18 v #28633 > > |> to_list'
00:22:18 v #28634 > > |> listm'.unbox
00:22:18 v #28635 > > |> _assert_eq [[ "a"; "b" ]]
00:22:20 v #28636 > >
00:22:20 v #28637 > > ── [ 1.75s - return value ] ────────────────────────────────────────────────────
00:22:20 v #28638 > > │ .py output (Cuda):
00:22:20 v #28639 > > │ __assert_eq / actual: UH0_1(v0='a', v1=UH0_1(v0='b',
00:22:20 v #28640 > > v1=UH0_0())) / expected: UH0_1(v0='a', v1=UH0_1(v0='b', v1=UH0_0()))
00:22:20 v #28641 > > │
00:22:20 v #28642 > > │ .rs output:
00:22:20 v #28643 > > │ __assert_eq / actual: UH0_1("a", UH0_1("b", UH0_0))
00:22:20 v #28644 > > expected: UH0_1("a", UH0_1("b", UH0_0))
00:22:20 v #28645 > > │
00:22:20 v #28646 > > │ .ts output:
00:22:20 v #28647 > > │ __assert_eq / actual: UH0_1 (a, UH0_1 (b, UH0_0)) / expected:
00:22:20 v #28648 > > UH0_1 (a, UH0_1 (b, UH0_0))
00:22:20 v #28649 > > │
00:22:20 v #28650 > > │ .py output:
00:22:20 v #28651 > > │ __assert_eq / actual: UH0_1 ("a", UH0_1 ("b", UH0_0))
00:22:20 v #28652 > > expected: UH0_1 ("a", UH0_1 ("b", UH0_0))
00:22:20 v #28653 > > │
00:22:20 v #28654 > > │
00:22:20 v #28655 > >
00:22:20 v #28656 > > ── [ 1.75s - stdout ] ──────────────────────────────────────────────────────────
00:22:20 v #28657 > > │ .fsx output:
00:22:20 v #28658 > > │ __assert_eq / actual: UH0_1 ("a", UH0_1 ("b", UH0_0))
00:22:20 v #28659 > > expected: UH0_1 ("a", UH0_1 ("b", UH0_0))
00:22:20 v #28660 > > │
00:22:20 v #28661 > >
00:22:20 v #28662 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:20 v #28663 > > │ ### to_array'
00:22:20 v #28664 > >
00:22:20 v #28665 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:20 v #28666 > > inl to_array' forall dim t. (items : seq' t) : a dim t =
00:22:20 v #28667 > >     backend_switch {
00:22:20 v #28668 > >         Fsharp = fun () => items |> $'Seq.toArray' : a dim t
00:22:20 v #28669 > >         Python = fun () => $'(cp if cuda else np).array(!items)' : a dim t
00:22:20 v #28670 > >     }
00:22:20 v #28671 > >
00:22:20 v #28672 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:20 v #28673 > > //// test
00:22:20 v #28674 > > ///! fsharp
00:22:20 v #28675 > > ///! cuda
00:22:20 v #28676 > > ///! rust
00:22:20 v #28677 > > ///! typescript
00:22:20 v #28678 > > ///! python
00:22:20 v #28679 > >
00:22:20 v #28680 > > ;[[ "a"; "b" ]]
00:22:20 v #28681 > > |> of_array_base
00:22:20 v #28682 > > |> to_array'
00:22:20 v #28683 > > |> fun x => x : _ int _
00:22:20 v #28684 > > |> am'.to_list'
00:22:20 v #28685 > > |> listm'.unbox
00:22:20 v #28686 > > |> _assert_eq [[ "a"; "b" ]]
00:22:28 v #28687 > >
00:22:28 v #28688 > > ── [ 7.88s - return value ] ────────────────────────────────────────────────────
00:22:28 v #28689 > > │ .py output (Cuda):
00:22:28 v #28690 > > │ __assert_eq / actual: UH0_1(v0=np.str_('a'),
00:22:28 v #28691 > > v1=UH0_1(v0=np.str_('b'), v1=UH0_0())) / expected: UH0_1(v0='a',
00:22:28 v #28692 > > v1=UH0_1(v0='b', v1=UH0_0()))
00:22:28 v #28693 > > │
00:22:28 v #28694 > > │ .rs output:
00:22:28 v #28695 > > │ __assert_eq / actual: UH0_1("a", UH0_1("b", UH0_0))
00:22:28 v #28696 > > expected: UH0_1("a", UH0_1("b", UH0_0))
00:22:28 v #28697 > > │
00:22:28 v #28698 > > │ .ts output:
00:22:28 v #28699 > > │ __assert_eq / actual: UH0_1 (a, UH0_1 (b, UH0_0)) / expected:
00:22:28 v #28700 > > UH0_1 (a, UH0_1 (b, UH0_0))
00:22:28 v #28701 > > │
00:22:28 v #28702 > > │ .py output:
00:22:28 v #28703 > > │ __assert_eq / actual: UH0_1 ("a", UH0_1 ("b", UH0_0))
00:22:28 v #28704 > > expected: UH0_1 ("a", UH0_1 ("b", UH0_0))
00:22:28 v #28705 > > │
00:22:28 v #28706 > > │
00:22:28 v #28707 > >
00:22:28 v #28708 > > ── [ 7.88s - stdout ] ──────────────────────────────────────────────────────────
00:22:28 v #28709 > > │ .fsx output:
00:22:28 v #28710 > > │ __assert_eq / actual: UH0_1 ("a", UH0_1 ("b", UH0_0))
00:22:28 v #28711 > > expected: UH0_1 ("a", UH0_1 ("b", UH0_0))
00:22:28 v #28712 > > │
00:22:28 v #28713 > >
00:22:28 v #28714 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:28 v #28715 > > │ ### of_list'
00:22:28 v #28716 > >
00:22:28 v #28717 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:28 v #28718 > > inl of_list' forall t. (items : listm'.list' t) : seq' t =
00:22:28 v #28719 > >     backend_switch {
00:22:28 v #28720 > >         Fsharp = fun () =>
00:22:28 v #28721 > >             fun () =>
00:22:28 v #28722 > >                 items |> yield_from
00:22:28 v #28723 > >             |> new_seq
00:22:28 v #28724 > >             |> fun x => x : seq' t
00:22:28 v #28725 > >         Python = fun () => $'!items ' : seq' t
00:22:28 v #28726 > >     }
00:22:28 v #28727 > >
00:22:28 v #28728 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:28 v #28729 > > │ ### cast'
00:22:28 v #28730 > >
00:22:28 v #28731 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:28 v #28732 > > inl cast' forall t u. (items : u) : seq' t =
00:22:28 v #28733 > >     backend_switch {
00:22:28 v #28734 > >         Fsharp = fun () => items |> $'Seq.cast' : seq' t
00:22:28 v #28735 > >         Python = fun () => $'list(!items)' : seq' t
00:22:28 v #28736 > >     }
00:22:28 v #28737 > >
00:22:28 v #28738 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:28 v #28739 > > │ ### rev'
00:22:28 v #28740 > >
00:22:28 v #28741 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:28 v #28742 > > inl rev'' forall t. (items : seq' t) : seq' t =
00:22:28 v #28743 > >     backend_switch {
00:22:28 v #28744 > >         Fsharp = fun () => items |> $'Seq.rev' : seq' t
00:22:28 v #28745 > >         Python = fun () => $'list(reversed(!items))' : seq' t
00:22:28 v #28746 > >     }
00:22:28 v #28747 > >
00:22:28 v #28748 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:28 v #28749 > > //// test
00:22:28 v #28750 > > ///! fsharp
00:22:28 v #28751 > > ///! cuda
00:22:28 v #28752 > > ///! rust
00:22:28 v #28753 > > ///! typescript
00:22:28 v #28754 > > ///! python
00:22:28 v #28755 > >
00:22:28 v #28756 > > [[ "a"; "b" ]]
00:22:28 v #28757 > > |> listm'.box
00:22:28 v #28758 > > |> of_list'
00:22:28 v #28759 > > |> rev''
00:22:28 v #28760 > > |> to_list'
00:22:28 v #28761 > > |> listm'.unbox
00:22:28 v #28762 > > |> _assert_eq [[ "b"; "a" ]]
00:22:36 v #28763 > >
00:22:36 v #28764 > > ── [ 8.00s - return value ] ────────────────────────────────────────────────────
00:22:36 v #28765 > > │ .py output (Cuda):
00:22:36 v #28766 > > │ __assert_eq / actual: UH0_1(v0='b', v1=UH0_1(v0='a',
00:22:36 v #28767 > > v1=UH0_0())) / expected: UH0_1(v0='b', v1=UH0_1(v0='a', v1=UH0_0()))
00:22:36 v #28768 > > │
00:22:36 v #28769 > > │ .rs output:
00:22:36 v #28770 > > │ __assert_eq / actual: UH0_1("b", UH0_1("a", UH0_0))
00:22:36 v #28771 > > expected: UH0_1("b", UH0_1("a", UH0_0))
00:22:36 v #28772 > > │
00:22:36 v #28773 > > │ .ts output:
00:22:36 v #28774 > > │ __assert_eq / actual: UH0_1 (b, UH0_1 (a, UH0_0)) / expected:
00:22:36 v #28775 > > UH0_1 (b, UH0_1 (a, UH0_0))
00:22:36 v #28776 > > │
00:22:36 v #28777 > > │ .py output:
00:22:36 v #28778 > > │ __assert_eq / actual: UH0_1 ("b", UH0_1 ("a", UH0_0))
00:22:36 v #28779 > > expected: UH0_1 ("b", UH0_1 ("a", UH0_0))
00:22:36 v #28780 > > │
00:22:36 v #28781 > > │
00:22:36 v #28782 > >
00:22:36 v #28783 > > ── [ 8.00s - stdout ] ──────────────────────────────────────────────────────────
00:22:36 v #28784 > > │ .fsx output:
00:22:36 v #28785 > > │ __assert_eq / actual: UH0_1 ("b", UH0_1 ("a", UH0_0))
00:22:36 v #28786 > > expected: UH0_1 ("b", UH0_1 ("a", UH0_0))
00:22:36 v #28787 > > │
00:22:36 v #28788 > >
00:22:36 v #28789 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:36 v #28790 > > │ ## rust
00:22:36 v #28791 > >
00:22:36 v #28792 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:36 v #28793 > > │ ### fuse
00:22:36 v #28794 > >
00:22:36 v #28795 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:36 v #28796 > > nominal fuse t =
00:22:36 v #28797 > >     `(
00:22:36 v #28798 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:22:36 v #28799 > > Fable.Core.Emit(\"core::iter::Fuse<$0>\")>]]\n#endif\ntype core_iter_Fuse<'T> =
00:22:36 v #28800 > > class end"
00:22:36 v #28801 > >         $'' : $'core_iter_Fuse<`t>'
00:22:36 v #28802 > >     )
00:22:36 v #28803 > 00:00:50 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 35370 }
00:22:36 v #28804 > 00:00:50 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/seq.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/seq.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:22:37 v #28805 > 00:00:50 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/seq.dib.ipynb to html
00:22:37 v #28806 > 00:00:50 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:22:37 v #28807 > 00:00:50 v #7 !   validate(nb)
00:22:37 v #28808 > 00:00:51 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:22:37 v #28809 > 00:00:51 v #9 !   return _pygments_highlight(
00:22:38 v #28810 > 00:00:51 v #10 ! [NbConvertApp] Writing 398688 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/seq.dib.html
00:22:38 v #28811 > 00:00:51 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 890 }
00:22:38 v #28812 > 00:00:51 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 890 }
00:22:38 v #28813 > 00:00:51 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/seq.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/seq.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:22:38 v #28814 > 00:00:51 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:22:38 v #28815 > 00:00:51 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:22:38 v #28816 > 00:00:51 d #16 spiral.run / dib / { exit_code = 0; result_length = 36319 }
00:22:38 d #28817 runtime.execute_with_options_async / { exit_code = 0; output_length = 40927 }
00:22:38 d #35 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path seq.dib --retries 3
00:22:38 d #28818 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path env.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path env.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:22:38 v #28819 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "env.dib", "--retries", "3"])) }
00:22:38 v #28820 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/env.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/env.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/env.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/env.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:22:40 v #28821 > >
00:22:40 v #28822 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:40 v #28823 > > │ # env
00:22:42 v #28824 > >
00:22:42 v #28825 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:42 v #28826 > > //// test
00:22:42 v #28827 > >
00:22:42 v #28828 > > open testing
00:22:42 v #28829 > >
00:22:42 v #28830 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:42 v #28831 > > │ ## rust
00:22:42 v #28832 > >
00:22:42 v #28833 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:42 v #28834 > > │ ### var_error
00:22:42 v #28835 > >
00:22:42 v #28836 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:42 v #28837 > > nominal var_error =
00:22:42 v #28838 > >     `(
00:22:42 v #28839 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:22:42 v #28840 > > Fable.Core.Emit(\"std::env::VarError\")>]]\n#endif\ntype std_env_VarError =
00:22:42 v #28841 > > class end"
00:22:42 v #28842 > >         $'' : $'std_env_VarError'
00:22:42 v #28843 > >     )
00:22:43 v #28844 > >
00:22:43 v #28845 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:43 v #28846 > > │ ### get_environment_variable_comptime
00:22:43 v #28847 > >
00:22:43 v #28848 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:43 v #28849 > > inl get_environment_variable_comptime (var : string) : string =
00:22:43 v #28850 > >     run_target_args (fun () => var) function
00:22:43 v #28851 > >         | Rust _ => fun var =>
00:22:43 v #28852 > >             open rust.rust_operators
00:22:43 v #28853 > >             !\($'"option_env\!(\\\"" + !var + "\\\").unwrap_or(\\\"\\\")"')
00:22:43 v #28854 > >             |> sm'.ref_to_std_string
00:22:43 v #28855 > >             |> sm'.from_std_string
00:22:43 v #28856 > >         | target => fun _ => null ()
00:22:43 v #28857 > >
00:22:43 v #28858 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:43 v #28859 > > │ ## python
00:22:43 v #28860 > >
00:22:43 v #28861 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:43 v #28862 > > │ ### os_environ
00:22:43 v #28863 > >
00:22:43 v #28864 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:43 v #28865 > > nominal os_environ = any
00:22:43 v #28866 > >
00:22:43 v #28867 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:43 v #28868 > > inl os_environ () : os_environ =
00:22:43 v #28869 > >     backend_switch {
00:22:43 v #28870 > >         Fsharp = fun () =>
00:22:43 v #28871 > >             open python_operators
00:22:43 v #28872 > >             global "type IOsEnviron = abstract environ: x: unit -> obj"
00:22:43 v #28873 > >             inl os : $'IOsEnviron' = python.import_all "os"
00:22:43 v #28874 > >             !\($'"!os.environ"') : os_environ
00:22:43 v #28875 > >         Python = fun () =>
00:22:43 v #28876 > >             global "import os"
00:22:43 v #28877 > >             $'os.environ' : os_environ
00:22:43 v #28878 > >     }
00:22:43 v #28879 > >
00:22:43 v #28880 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:43 v #28881 > > inl environ_get (key : string) (os_environ : os_environ) : string =
00:22:43 v #28882 > >     backend_switch {
00:22:43 v #28883 > >         Fsharp = fun () =>
00:22:43 v #28884 > >             open python_operators
00:22:43 v #28885 > >             !\\(key, $'"!os_environ.get($0)"') : string
00:22:43 v #28886 > >         Python = fun () =>
00:22:43 v #28887 > >             $'!os_environ.get(!key)' : string
00:22:43 v #28888 > >     }
00:22:43 v #28889 > >
00:22:43 v #28890 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:43 v #28891 > > │ ## env
00:22:43 v #28892 > >
00:22:43 v #28893 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:43 v #28894 > > │ ### get_environment_variable
00:22:43 v #28895 > >
00:22:43 v #28896 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:43 v #28897 > > let get_environment_variable (var : string) : string =
00:22:43 v #28898 > >     run_target_args (fun () => var) function
00:22:43 v #28899 > >         | Rust (Native) => fun var =>
00:22:43 v #28900 > >             inl var = join var
00:22:43 v #28901 > >             open rust.rust_operators
00:22:43 v #28902 > >             !\\(var, $'"std::env::var(&*$0)"')
00:22:43 v #28903 > >             |> fun x => x : resultm.result' sm'.std_string var_error
00:22:43 v #28904 > >             |> resultm.map' sm'.from_std_string
00:22:43 v #28905 > >             |> resultm.unwrap_or' (join "")
00:22:43 v #28906 > >         | Fsharp (Native) => fun var =>
00:22:43 v #28907 > >             var
00:22:43 v #28908 > >             |> $'System.Environment.GetEnvironmentVariable'
00:22:43 v #28909 > >             |> optionm'.of_obj
00:22:43 v #28910 > >             |> optionm'.unbox
00:22:43 v #28911 > >             |> optionm'.default_value ""
00:22:43 v #28912 > >         | TypeScript _ => fun var =>
00:22:43 v #28913 > >             open typescript_operators
00:22:43 v #28914 > >             !\\(var, $'"process.env[[$0]] ?? \\\"\\\""')
00:22:43 v #28915 > >         | Python _ | Cuda _ => fun var =>
00:22:43 v #28916 > >             os_environ ()
00:22:43 v #28917 > >             |> environ_get var
00:22:43 v #28918 > >             |> optionm'.of_obj
00:22:43 v #28919 > >             |> optionm'.unbox
00:22:43 v #28920 > >             |> optionm'.default_value ""
00:22:43 v #28921 > >         | target => fun var => failwith $'$"env.get_environment_variable
00:22:43 v #28922 > > target: {!target} / var: {!var}"'
00:22:43 v #28923 > >
00:22:43 v #28924 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:43 v #28925 > > //// test
00:22:43 v #28926 > > ///! fsharp
00:22:43 v #28927 > > ///! cuda
00:22:43 v #28928 > > ///! rust
00:22:43 v #28929 > > ///! typescript
00:22:43 v #28930 > > ///! python
00:22:43 v #28931 > >
00:22:43 v #28932 > > "PATH"
00:22:43 v #28933 > > |> get_environment_variable
00:22:43 v #28934 > > |> sm'.length
00:22:43 v #28935 > > |> fun x =>
00:22:43 v #28936 > >     if x > 0i32
00:22:43 v #28937 > >     then 1
00:22:43 v #28938 > >     else 0
00:22:43 v #28939 > >     |> _assert_ne 0i32
00:22:53 v #28940 > >
00:22:53 v #28941 > > ── [ 9.22s - return value ] ────────────────────────────────────────────────────
00:22:53 v #28942 > > │ .py output (Cuda):
00:22:53 v #28943 > > │ __assert_ne / actual: 1 / expected: 0
00:22:53 v #28944 > > │
00:22:53 v #28945 > > │ .rs output:
00:22:53 v #28946 > > │ __assert_ne / actual: 1 / expected: 0
00:22:53 v #28947 > > │
00:22:53 v #28948 > > │ .ts output:
00:22:53 v #28949 > > │ __assert_ne / actual: 1 / expected: 0
00:22:53 v #28950 > > │
00:22:53 v #28951 > > │ .py output:
00:22:53 v #28952 > > │ __assert_ne / actual: 1 / expected: 0
00:22:53 v #28953 > > │
00:22:53 v #28954 > > │
00:22:53 v #28955 > >
00:22:53 v #28956 > > ── [ 9.23s - stdout ] ──────────────────────────────────────────────────────────
00:22:53 v #28957 > > │ .fsx output:
00:22:53 v #28958 > > │ __assert_ne / actual: 1 / expected: 0
00:22:53 v #28959 > > │
00:22:53 v #28960 > >
00:22:53 v #28961 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:53 v #28962 > > │ ### get_entry_assembly_name
00:22:53 v #28963 > >
00:22:53 v #28964 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:53 v #28965 > > let get_entry_assembly_name () : string =
00:22:53 v #28966 > >     run_target function
00:22:53 v #28967 > >         | Rust _ => fun () => (join "CARGO_PKG_NAME") |>
00:22:53 v #28968 > > get_environment_variable
00:22:53 v #28969 > >         | Fsharp _ => fun () =>
00:22:53 v #28970 > > $'System.Reflection.Assembly.GetEntryAssembly().GetName().Name'
00:22:53 v #28971 > >         | target => fun () => failwith $'$"env.get_entry_assembly_name / target:
00:22:53 v #28972 > > {!target}"'
00:22:53 v #28973 > >
00:22:53 v #28974 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:53 v #28975 > > │ ### append_path
00:22:53 v #28976 > >
00:22:53 v #28977 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:53 v #28978 > > inl append_path (path : string) : option string =
00:22:53 v #28979 > >     inl env_path = "PATH" |> get_environment_variable
00:22:53 v #28980 > >     if env_path = ""
00:22:53 v #28981 > >     then None
00:22:53 v #28982 > >     else
00:22:53 v #28983 > >         inl env_sep =
00:22:53 v #28984 > >             if platform.is_windows ()
00:22:53 v #28985 > >             then ";"
00:22:53 v #28986 > >             else ":"
00:22:53 v #28987 > >         Some $'$"{!path}{!env_sep}{!env_path}"'
00:22:53 v #28988 > 00:00:14 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 6392 }
00:22:53 v #28989 > 00:00:14 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/env.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/env.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:22:54 v #28990 > 00:00:15 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/env.dib.ipynb to html
00:22:54 v #28991 > 00:00:15 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:22:54 v #28992 > 00:00:15 v #7 !   validate(nb)
00:22:54 v #28993 > 00:00:15 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:22:54 v #28994 > 00:00:15 v #9 !   return _pygments_highlight(
00:22:54 v #28995 > 00:00:16 v #10 ! [NbConvertApp] Writing 294865 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/env.dib.html
00:22:54 v #28996 > 00:00:16 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 890 }
00:22:54 v #28997 > 00:00:16 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 890 }
00:22:54 v #28998 > 00:00:16 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/env.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/env.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:22:55 v #28999 > 00:00:16 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:22:55 v #29000 > 00:00:16 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:22:55 v #29001 > 00:00:16 d #16 spiral.run / dib / { exit_code = 0; result_length = 7341 }
00:22:55 d #29002 runtime.execute_with_options_async / { exit_code = 0; output_length = 10301 }
00:22:55 d #36 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path env.dib --retries 3
00:22:55 d #29003 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path python.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path python.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:22:55 v #29004 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "python.dib", "--retries", "3"])) }
00:22:55 v #29005 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/python.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/python.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/python.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/python.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:22:56 v #29006 > >
00:22:56 v #29007 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:56 v #29008 > > │ # python
00:22:56 v #29009 > >
00:22:56 v #29010 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:56 v #29011 > > │ ### emit_expr
00:22:58 v #29012 > >
00:22:58 v #29013 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:58 v #29014 > > inl emit_expr forall a t. (args : a) (code : string) : t =
00:22:58 v #29015 > >     real
00:22:58 v #29016 > >         $'Fable.Core.PyInterop.emitPyExpr !args !code ' : t
00:22:59 v #29017 > >
00:22:59 v #29018 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:59 v #29019 > > │ ###
00:22:59 v #29020 > >
00:22:59 v #29021 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:59 v #29022 > > inl (~!\) forall t. (code : string) : t =
00:22:59 v #29023 > >     emit_expr () code
00:22:59 v #29024 > >
00:22:59 v #29025 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:59 v #29026 > > │ ###
00:22:59 v #29027 > >
00:22:59 v #29028 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:59 v #29029 > > inl (~!\\) forall t u. ((args : t), (code : string)) : u =
00:22:59 v #29030 > >     emit_expr args code
00:22:59 v #29031 > >
00:22:59 v #29032 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:59 v #29033 > > │ ###
00:22:59 v #29034 > >
00:22:59 v #29035 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:59 v #29036 > > inl import_all forall t. (file : string) : t =
00:22:59 v #29037 > >     real
00:22:59 v #29038 > >         $'Fable.Core.PyInterop.importAll !file ' : t
00:22:59 v #29039 > >
00:22:59 v #29040 > > ── markdown ────────────────────────────────────────────────────────────────────
00:22:59 v #29041 > > │ ###
00:22:59 v #29042 > >
00:22:59 v #29043 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:22:59 v #29044 > > inl import forall t. (name : string) (file : string) : t =
00:22:59 v #29045 > >     real
00:22:59 v #29046 > >         $'Fable.Core.PyInterop.import !name !file ' : t
00:22:59 v #29047 > 00:00:04 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 1763 }
00:22:59 v #29048 > 00:00:04 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/python.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/python.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:23:00 v #29049 > 00:00:05 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/python.dib.ipynb to html
00:23:00 v #29050 > 00:00:05 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:23:00 v #29051 > 00:00:05 v #7 !   validate(nb)
00:23:01 v #29052 > 00:00:05 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:23:01 v #29053 > 00:00:05 v #9 !   return _pygments_highlight(
00:23:01 v #29054 > 00:00:06 v #10 ! [NbConvertApp] Writing 278675 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/python.dib.html
00:23:01 v #29055 > 00:00:06 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 896 }
00:23:01 v #29056 > 00:00:06 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 896 }
00:23:01 v #29057 > 00:00:06 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/python.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/python.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:23:01 v #29058 > 00:00:06 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:23:01 v #29059 > 00:00:06 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:23:01 v #29060 > 00:00:06 d #16 spiral.run / dib / { exit_code = 0; result_length = 2718 }
00:23:01 d #29061 runtime.execute_with_options_async / { exit_code = 0; output_length = 5453 }
00:23:01 d #37 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path python.dib --retries 3
00:23:01 d #29062 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path typescript.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path typescript.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:23:01 v #29063 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "typescript.dib", "--retries", "3"])) }
00:23:01 v #29064 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/typescript.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/typescript.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/typescript.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/typescript.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:23:02 v #29065 > >
00:23:02 v #29066 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:02 v #29067 > > │ # typescript
00:23:02 v #29068 > >
00:23:02 v #29069 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:02 v #29070 > > │ ### emit_expr
00:23:05 v #29071 > >
00:23:05 v #29072 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:05 v #29073 > > inl emit_expr forall a t. (args : a) (code : string) : t =
00:23:05 v #29074 > >     real
00:23:05 v #29075 > >         $'Fable.Core.JsInterop.emitJsExpr !args !code ' : t
00:23:05 v #29076 > >
00:23:05 v #29077 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:05 v #29078 > > │ ###
00:23:05 v #29079 > >
00:23:05 v #29080 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:05 v #29081 > > inl (~!\) forall t. (code : string) : t =
00:23:05 v #29082 > >     emit_expr () code
00:23:05 v #29083 > >
00:23:05 v #29084 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:05 v #29085 > > │ ###
00:23:05 v #29086 > >
00:23:05 v #29087 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:05 v #29088 > > inl (~!\\) forall t u. ((args : t), (code : string)) : u =
00:23:05 v #29089 > >     emit_expr args code
00:23:06 v #29090 > >
00:23:06 v #29091 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:06 v #29092 > > │ ###
00:23:06 v #29093 > >
00:23:06 v #29094 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:06 v #29095 > > inl import_all forall t. (file : string) : t =
00:23:06 v #29096 > >     real
00:23:06 v #29097 > >         $'Fable.Core.JsInterop.importAll !file ' : t
00:23:06 v #29098 > >
00:23:06 v #29099 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:06 v #29100 > > │ ###
00:23:06 v #29101 > >
00:23:06 v #29102 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:06 v #29103 > > inl import forall t. (name : string) (file : string) : t =
00:23:06 v #29104 > >     real
00:23:06 v #29105 > >         $'Fable.Core.JsInterop.import !name !file ' : t
00:23:06 v #29106 > 00:00:04 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 1767 }
00:23:06 v #29107 > 00:00:04 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/typescript.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/typescript.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:23:07 v #29108 > 00:00:05 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/typescript.dib.ipynb to html
00:23:07 v #29109 > 00:00:05 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:23:07 v #29110 > 00:00:05 v #7 !   validate(nb)
00:23:07 v #29111 > 00:00:06 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:23:07 v #29112 > 00:00:06 v #9 !   return _pygments_highlight(
00:23:07 v #29113 > 00:00:06 v #10 ! [NbConvertApp] Writing 278691 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/typescript.dib.html
00:23:07 v #29114 > 00:00:06 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 904 }
00:23:07 v #29115 > 00:00:06 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 904 }
00:23:07 v #29116 > 00:00:06 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/typescript.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/typescript.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:23:07 v #29117 > 00:00:06 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:23:07 v #29118 > 00:00:06 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:23:07 v #29119 > 00:00:06 d #16 spiral.run / dib / { exit_code = 0; result_length = 2730 }
00:23:07 d #29120 runtime.execute_with_options_async / { exit_code = 0; output_length = 5501 }
00:23:07 d #38 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path typescript.dib --retries 3
00:23:07 d #29121 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path file_system.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path file_system.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:23:07 v #29122 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "file_system.dib", "--retries", "3"])) }
00:23:07 v #29123 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/file_system.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/file_system.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/file_system.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/file_system.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:23:09 v #29124 > >
00:23:09 v #29125 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:09 v #29126 > > │ # file_system
00:23:11 v #29127 > >
00:23:11 v #29128 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:11 v #29129 > > open sm'_operators
00:23:11 v #29130 > > open rust
00:23:11 v #29131 > > open rust_operators
00:23:12 v #29132 > >
00:23:12 v #29133 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:12 v #29134 > > //// test
00:23:12 v #29135 > >
00:23:12 v #29136 > > open testing
00:23:12 v #29137 > >
00:23:12 v #29138 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:12 v #29139 > > │ ## fsharp
00:23:12 v #29140 > >
00:23:12 v #29141 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:12 v #29142 > > │ ### file_mode
00:23:12 v #29143 > >
00:23:12 v #29144 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:12 v #29145 > > nominal file_mode' = $'System.IO.FileMode'
00:23:12 v #29146 > >
00:23:12 v #29147 > > union file_mode =
00:23:12 v #29148 > >     | ModeCreateNew
00:23:12 v #29149 > >     | ModeCreate
00:23:12 v #29150 > >     | ModeOpen
00:23:12 v #29151 > >     | ModeOpenOrCreate
00:23:12 v #29152 > >     | Truncate
00:23:12 v #29153 > >     | Append
00:23:12 v #29154 > >
00:23:12 v #29155 > > inl file_mode = function
00:23:12 v #29156 > >     | ModeCreateNew => $'System.IO.FileMode.CreateNew' : file_mode'
00:23:12 v #29157 > >     | ModeCreate => $'System.IO.FileMode.Create' : file_mode'
00:23:12 v #29158 > >     | ModeOpen => $'System.IO.FileMode.Open' : file_mode'
00:23:12 v #29159 > >     | ModeOpenOrCreate => $'System.IO.FileMode.OpenOrCreate' : file_mode'
00:23:12 v #29160 > >     | Truncate => $'System.IO.FileMode.Truncate' : file_mode'
00:23:12 v #29161 > >     | Append => $'System.IO.FileMode.Append' : file_mode'
00:23:12 v #29162 > >
00:23:12 v #29163 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:12 v #29164 > > │ ### file_access
00:23:12 v #29165 > >
00:23:12 v #29166 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:12 v #29167 > > nominal file_access' = $'System.IO.FileAccess'
00:23:12 v #29168 > >
00:23:12 v #29169 > > union file_access =
00:23:12 v #29170 > >     | AccessRead
00:23:12 v #29171 > >     | AccessWrite
00:23:12 v #29172 > >     | AccessReadWrite
00:23:12 v #29173 > >
00:23:12 v #29174 > > inl file_access = function
00:23:12 v #29175 > >     | AccessRead => $'System.IO.FileAccess.Read' : file_access'
00:23:12 v #29176 > >     | AccessWrite => $'System.IO.FileAccess.ReadWrite' : file_access'
00:23:12 v #29177 > >     | AccessReadWrite => $'System.IO.FileAccess.ReadWrite' : file_access'
00:23:12 v #29178 > >
00:23:12 v #29179 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:12 v #29180 > > │ ### file_share
00:23:12 v #29181 > >
00:23:12 v #29182 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:12 v #29183 > > nominal file_share' = $'System.IO.FileShare'
00:23:12 v #29184 > >
00:23:12 v #29185 > > union file_share =
00:23:12 v #29186 > >     | ShareNone
00:23:12 v #29187 > >     | ShareRead
00:23:12 v #29188 > >     | ShareWrite
00:23:12 v #29189 > >     | ShareReadWrite
00:23:12 v #29190 > >     | ShareDelete
00:23:12 v #29191 > >
00:23:12 v #29192 > > inl file_share = function
00:23:12 v #29193 > >     | ShareNone => $'System.IO.FileShare.None' : file_share'
00:23:12 v #29194 > >     | ShareRead => $'System.IO.FileShare.Read' : file_share'
00:23:12 v #29195 > >     | ShareWrite => $'System.IO.FileShare.Write' : file_share'
00:23:12 v #29196 > >     | ShareReadWrite => $'System.IO.FileShare.ReadWrite' : file_share'
00:23:12 v #29197 > >     | ShareDelete => $'System.IO.FileShare.Delete' : file_share'
00:23:12 v #29198 > >
00:23:12 v #29199 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:12 v #29200 > > │ ### file_stream
00:23:12 v #29201 > >
00:23:12 v #29202 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:12 v #29203 > > nominal file_stream' = $'System.IO.FileStream'
00:23:12 v #29204 > >
00:23:12 v #29205 > > inl file_stream (path : string) mode access share : file_stream' =
00:23:12 v #29206 > >     run_target function
00:23:12 v #29207 > >         | Fsharp (Native) => fun () =>
00:23:12 v #29208 > >             inl mode = mode |> file_mode
00:23:12 v #29209 > >             inl access = access |> file_access
00:23:12 v #29210 > >             inl share = share |> file_share
00:23:12 v #29211 > >             $'new System.IO.FileStream (!path, !mode, !access, !share)'
00:23:12 v #29212 > >         | _ => fun () => null ()
00:23:12 v #29213 > >
00:23:12 v #29214 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:12 v #29215 > > │ ### file_info
00:23:12 v #29216 > >
00:23:12 v #29217 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:12 v #29218 > > nominal file_info =
00:23:12 v #29219 > >     `(
00:23:12 v #29220 > >         global "#if FABLE_COMPILER\ntype System_IO_FileInfo = bool\n#else\ntype
00:23:12 v #29221 > > System_IO_FileInfo = System.IO.FileInfo\n#endif\n"
00:23:12 v #29222 > >         $'' : $'System_IO_FileInfo'
00:23:12 v #29223 > >     )
00:23:12 v #29224 > >
00:23:12 v #29225 > > inl file_info (path : string) : file_info =
00:23:12 v #29226 > >     run_target function
00:23:12 v #29227 > >         | Fsharp (Native) => fun () => path |> convert
00:23:12 v #29228 > >         | _ => fun () => null ()
00:23:13 v #29229 > >
00:23:13 v #29230 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:13 v #29231 > > │ ### directory_info
00:23:13 v #29232 > >
00:23:13 v #29233 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:13 v #29234 > > nominal directory_info =
00:23:13 v #29235 > >     `(
00:23:13 v #29236 > >         global "#if FABLE_COMPILER\ntype System_IO_DirectoryInfo =
00:23:13 v #29237 > > bool\n#else\ntype System_IO_DirectoryInfo = System.IO.DirectoryInfo\n#endif\n"
00:23:13 v #29238 > >         $'' : $'System_IO_DirectoryInfo'
00:23:13 v #29239 > >     )
00:23:13 v #29240 > >
00:23:13 v #29241 > > inl directory_info (path : string) : directory_info =
00:23:13 v #29242 > >     run_target function
00:23:13 v #29243 > >         | Fsharp (Native) => fun () => path |> convert
00:23:13 v #29244 > >         | _ => fun () => null ()
00:23:13 v #29245 > >
00:23:13 v #29246 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:13 v #29247 > > │ ### directory_info_exists
00:23:13 v #29248 > >
00:23:13 v #29249 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:13 v #29250 > > inl directory_info_exists (info : directory_info) : bool =
00:23:13 v #29251 > >     run_target function
00:23:13 v #29252 > >         | Fsharp (Native) => fun () => info |> $'_.Exists'
00:23:13 v #29253 > >         | _ => fun () => null ()
00:23:13 v #29254 > >
00:23:13 v #29255 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:13 v #29256 > > │ ### directory_info_creation_time
00:23:13 v #29257 > >
00:23:13 v #29258 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:13 v #29259 > > inl directory_info_creation_time (info : directory_info) : date_time.date_time =
00:23:13 v #29260 > >     run_target function
00:23:13 v #29261 > >         | Fsharp (Native) => fun () => info |> $'_.CreationTime'
00:23:13 v #29262 > >         | _ => fun () => null ()
00:23:13 v #29263 > >
00:23:13 v #29264 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:13 v #29265 > > │ ### directory_info_name
00:23:13 v #29266 > >
00:23:13 v #29267 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:13 v #29268 > > inl directory_info_name (info : directory_info) : string =
00:23:13 v #29269 > >     run_target function
00:23:13 v #29270 > >         | Fsharp (Native) => fun () => info |> $'_.Name'
00:23:13 v #29271 > >         | _ => fun () => null ()
00:23:13 v #29272 > >
00:23:13 v #29273 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:13 v #29274 > > │ ### directory_info_full_name
00:23:13 v #29275 > >
00:23:13 v #29276 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:13 v #29277 > > inl directory_info_full_name (info : directory_info) : string =
00:23:13 v #29278 > >     run_target function
00:23:13 v #29279 > >         | Fsharp (Native) => fun () => info |> $'_.FullName'
00:23:13 v #29280 > >         | _ => fun () => null ()
00:23:13 v #29281 > >
00:23:13 v #29282 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:13 v #29283 > > │ ### file_attributes
00:23:13 v #29284 > >
00:23:13 v #29285 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:13 v #29286 > > nominal file_attributes = $'System.IO.FileAttributes'
00:23:13 v #29287 > >
00:23:13 v #29288 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:13 v #29289 > > │ ### directory_info_attributes
00:23:13 v #29290 > >
00:23:13 v #29291 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:13 v #29292 > > let directory_info_attributes (info : directory_info) : file_attributes =
00:23:13 v #29293 > >     run_target function
00:23:13 v #29294 > >         | Fsharp (Native) => fun () => info |> $'_.Attributes'
00:23:13 v #29295 > >         | _ => fun () => null ()
00:23:14 v #29296 > >
00:23:14 v #29297 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:14 v #29298 > > │ ### file_attributes_reparse_point
00:23:14 v #29299 > >
00:23:14 v #29300 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:14 v #29301 > > let file_attributes_reparse_point () : file_attributes =
00:23:14 v #29302 > >     run_target function
00:23:14 v #29303 > >         | Fsharp (Native) => fun () => $'`file_attributes.ReparsePoint'
00:23:14 v #29304 > >         | _ => fun () => null ()
00:23:14 v #29305 > >
00:23:14 v #29306 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:14 v #29307 > > │ ### file_attributes_has_flag
00:23:14 v #29308 > >
00:23:14 v #29309 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:14 v #29310 > > let file_attributes_has_flag (flag : file_attributes) (file_attributes :
00:23:14 v #29311 > > file_attributes) : bool =
00:23:14 v #29312 > >     run_target function
00:23:14 v #29313 > >         | Fsharp (Native) => fun () => $'!file_attributes.HasFlag !flag '
00:23:14 v #29314 > >         | _ => fun () => null ()
00:23:14 v #29315 > >
00:23:14 v #29316 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:14 v #29317 > > │ ### create_directory
00:23:14 v #29318 > >
00:23:14 v #29319 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:14 v #29320 > > let create_directory (path : string) : directory_info =
00:23:14 v #29321 > >     run_target function
00:23:14 v #29322 > >         | Fsharp (Native) => fun () => path |>
00:23:14 v #29323 > > $'System.IO.Directory.CreateDirectory'
00:23:14 v #29324 > >         | _ => fun () => null ()
00:23:14 v #29325 > >
00:23:14 v #29326 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:14 v #29327 > > │ ### directory_get_files
00:23:14 v #29328 > >
00:23:14 v #29329 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:14 v #29330 > > let directory_get_files (path : string) : array_base string =
00:23:14 v #29331 > >     run_target function
00:23:14 v #29332 > >         | Fsharp (Native) => fun () => path |> $'System.IO.Directory.GetFiles'
00:23:14 v #29333 > >         | _ => fun () => null ()
00:23:14 v #29334 > >
00:23:14 v #29335 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:14 v #29336 > > │ ### file_move
00:23:14 v #29337 > >
00:23:14 v #29338 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:14 v #29339 > > let file_move (new_path : string) (old_path : string) : () =
00:23:14 v #29340 > >     run_target function
00:23:14 v #29341 > >         | Fsharp (Native) => fun () => $'System.IO.File.Move (!old_path,
00:23:14 v #29342 > > !new_path)'
00:23:14 v #29343 > >         | _ => fun () => ()
00:23:14 v #29344 > >
00:23:14 v #29345 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:14 v #29346 > > │ ### read_all_text_async
00:23:14 v #29347 > >
00:23:14 v #29348 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:14 v #29349 > > let read_all_text_async (path : string) : _ string =
00:23:14 v #29350 > >     run_target function
00:23:14 v #29351 > >         | Fsharp (Native) => fun () => path |>
00:23:14 v #29352 > > $'System.IO.File.ReadAllTextAsync' |> async.await_task
00:23:14 v #29353 > >         | _ => fun () => null ()
00:23:15 v #29354 > >
00:23:15 v #29355 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:15 v #29356 > > │ ### write_all_text_async
00:23:15 v #29357 > >
00:23:15 v #29358 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:15 v #29359 > > let write_all_text_async (path : string) (text : string) : _ () =
00:23:15 v #29360 > >     run_target function
00:23:15 v #29361 > >         | Fsharp (Native) => fun () => $'System.IO.File.WriteAllTextAsync
00:23:15 v #29362 > > (!path, !text)' |> async.await_task
00:23:15 v #29363 > >         | _ => fun () => null ()
00:23:15 v #29364 > >
00:23:15 v #29365 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:15 v #29366 > > │ ### file_system_info
00:23:15 v #29367 > >
00:23:15 v #29368 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:15 v #29369 > > nominal file_system_info = $'System.IO.FileSystemInfo'
00:23:15 v #29370 > >
00:23:15 v #29371 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:15 v #29372 > > │ ### get_source_directory
00:23:15 v #29373 > >
00:23:15 v #29374 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:15 v #29375 > > inl get_source_directory () =
00:23:15 v #29376 > >     $'__SOURCE_DIRECTORY__' : string
00:23:15 v #29377 > >
00:23:15 v #29378 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:15 v #29379 > > //// test
00:23:15 v #29380 > >
00:23:15 v #29381 > > get_source_directory ()
00:23:15 v #29382 > > |> directory_info
00:23:15 v #29383 > > |> directory_info_name
00:23:15 v #29384 > > |> _assert_eq "spiral"
00:23:16 v #29385 > >
00:23:16 v #29386 > > ── [ 747.75ms - stdout ] ───────────────────────────────────────────────────────
00:23:16 v #29387 > > │ __assert_eq / actual: "spiral" / expected: "spiral"
00:23:16 v #29388 > > │
00:23:16 v #29389 > >
00:23:16 v #29390 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:16 v #29391 > > │ ## rust
00:23:16 v #29392 > >
00:23:16 v #29393 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:16 v #29394 > > │ ### display
00:23:16 v #29395 > >
00:23:16 v #29396 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:16 v #29397 > > nominal display =
00:23:16 v #29398 > >     `(
00:23:16 v #29399 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:23:16 v #29400 > > Fable.Core.Emit(\"std::path::Display\")>]]\ntype std_path_Display = class
00:23:16 v #29401 > > end\n#else\ntype std_path_Display = string\n#endif\n"
00:23:16 v #29402 > >         $'' : $'std_path_Display'
00:23:16 v #29403 > >     )
00:23:16 v #29404 > >
00:23:16 v #29405 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:16 v #29406 > > │ ### path
00:23:16 v #29407 > >
00:23:16 v #29408 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:16 v #29409 > > nominal path =
00:23:16 v #29410 > >     `(
00:23:16 v #29411 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:23:16 v #29412 > > Fable.Core.Emit(\"std::path::Path\")>]]\n#endif\ntype std_path_Path = class end"
00:23:16 v #29413 > >         $'' : $'std_path_Path'
00:23:16 v #29414 > >     )
00:23:16 v #29415 > >
00:23:16 v #29416 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:16 v #29417 > > │ ### path_buf
00:23:16 v #29418 > >
00:23:16 v #29419 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:16 v #29420 > > nominal path_buf =
00:23:16 v #29421 > >     `(
00:23:16 v #29422 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:23:16 v #29423 > > Fable.Core.Emit(\"std::path::PathBuf\")>]]\ntype std_path_PathBuf = class
00:23:16 v #29424 > > end\n#else\ntype std_path_PathBuf = string\n#endif\n"
00:23:16 v #29425 > >         $'' : $'std_path_PathBuf'
00:23:16 v #29426 > >     )
00:23:16 v #29427 > >
00:23:16 v #29428 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:16 v #29429 > > │ ### new_path_buf
00:23:16 v #29430 > >
00:23:16 v #29431 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:16 v #29432 > > inl new_path_buf (path : sm'.std_string) : path_buf =
00:23:16 v #29433 > >     run_target function
00:23:16 v #29434 > >         | Rust _ => fun () => !\\(path, $'"std::path::PathBuf::from($0)"')
00:23:16 v #29435 > >         | _ => fun () => path |> unbox
00:23:16 v #29436 > >
00:23:16 v #29437 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:16 v #29438 > > │ ### path_buf_from
00:23:16 v #29439 > >
00:23:16 v #29440 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:16 v #29441 > > inl path_buf_from (path : rust.box path) : path_buf =
00:23:16 v #29442 > >     !\\(path, $'"std::path::PathBuf::from($0)"')
00:23:17 v #29443 > >
00:23:17 v #29444 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:17 v #29445 > > │ ### path_buf_join
00:23:17 v #29446 > >
00:23:17 v #29447 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:17 v #29448 > > inl path_buf_join (s : string) (path_buf : path_buf) : path_buf =
00:23:17 v #29449 > >     !\\((path_buf, s |> sm'.to_std_string), $'"$0.join($1)"')
00:23:17 v #29450 > >
00:23:17 v #29451 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:17 v #29452 > > │ ### path_buf_strip_prefix
00:23:17 v #29453 > >
00:23:17 v #29454 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:17 v #29455 > > inl path_buf_strip_prefix (s : string) (path_buf : path_buf) : path_buf =
00:23:17 v #29456 > >     !\\((path_buf, s |> sm'.to_std_string),
00:23:17 v #29457 > > $'"$0.strip_prefix($1).unwrap().to_path_buf()"')
00:23:17 v #29458 > >
00:23:17 v #29459 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:17 v #29460 > > │ ### path_display
00:23:17 v #29461 > >
00:23:17 v #29462 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:17 v #29463 > > inl path_display (path : rust.ref path) : display =
00:23:17 v #29464 > >     !\\(path, $'"$0.display()"')
00:23:17 v #29465 > >
00:23:17 v #29466 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:17 v #29467 > > │ ### path_buf_display
00:23:17 v #29468 > >
00:23:17 v #29469 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:17 v #29470 > > inl path_buf_display (path_buf : path_buf) : display =
00:23:17 v #29471 > >     run_target_args (fun () => path_buf) function
00:23:17 v #29472 > >         | Rust _ => fun path_buf => !\\(path_buf, $'"$0.display()"')
00:23:17 v #29473 > >         | _ => fun path_buf => path_buf |> unbox
00:23:17 v #29474 > >
00:23:17 v #29475 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:17 v #29476 > > │ ### path_buf_file_name
00:23:17 v #29477 > >
00:23:17 v #29478 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:17 v #29479 > > inl path_buf_file_name (path : path_buf) : optionm'.option' (rust.ref
00:23:17 v #29480 > > sm'.os_str) =
00:23:17 v #29481 > >     !\\(path, $'"$0.file_name()"')
00:23:17 v #29482 > >
00:23:17 v #29483 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:17 v #29484 > > │ ### path_buf_exists
00:23:17 v #29485 > >
00:23:17 v #29486 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:17 v #29487 > > inl path_buf_exists (path_buf : path_buf) : bool =
00:23:17 v #29488 > >     !\\(path_buf, $'"$0.exists()"')
00:23:17 v #29489 > >
00:23:17 v #29490 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:17 v #29491 > > │ ### path_buf_is_dir
00:23:17 v #29492 > >
00:23:17 v #29493 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:17 v #29494 > > inl path_buf_is_dir (path_buf : path_buf) : bool =
00:23:17 v #29495 > >     !\\(path_buf, $'"$0.is_dir()"')
00:23:18 v #29496 > >
00:23:18 v #29497 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:18 v #29498 > > │ ### path_buf_is_file
00:23:18 v #29499 > >
00:23:18 v #29500 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:18 v #29501 > > inl path_buf_is_file (path_buf : path_buf) : bool =
00:23:18 v #29502 > >     !\\(path_buf, $'"$0.is_file()"')
00:23:18 v #29503 > >
00:23:18 v #29504 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:18 v #29505 > > │ ### path_buf_is_symlink
00:23:18 v #29506 > >
00:23:18 v #29507 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:18 v #29508 > > inl path_buf_is_symlink (path_buf : path_buf) : bool =
00:23:18 v #29509 > >     !\\(path_buf, $'"$0.is_symlink()"')
00:23:18 v #29510 > >
00:23:18 v #29511 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:18 v #29512 > > │ ### path_buf_parent
00:23:18 v #29513 > >
00:23:18 v #29514 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:18 v #29515 > > inl path_buf_parent (path_buf : path_buf) : optionm'.option' path_buf =
00:23:18 v #29516 > >     !\\(path_buf, $'"$0.parent().map(std::path::PathBuf::from)"')
00:23:18 v #29517 > >
00:23:18 v #29518 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:18 v #29519 > > │ ### dir_entry
00:23:18 v #29520 > >
00:23:18 v #29521 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:18 v #29522 > > nominal dir_entry =
00:23:18 v #29523 > >     `(
00:23:18 v #29524 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:23:18 v #29525 > > Fable.Core.Emit(\"async_walkdir::DirEntry\")>]]\n#endif\ntype
00:23:18 v #29526 > > async_walkdir_DirEntry = class end"
00:23:18 v #29527 > >         $'' : $'async_walkdir_DirEntry'
00:23:18 v #29528 > >     )
00:23:18 v #29529 > >
00:23:18 v #29530 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:18 v #29531 > > │ ### walk_dir
00:23:18 v #29532 > >
00:23:18 v #29533 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:18 v #29534 > > nominal walk_dir =
00:23:18 v #29535 > >     `(
00:23:18 v #29536 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:23:18 v #29537 > > Fable.Core.Emit(\"async_walkdir::WalkDir\")>]]\n#endif\ntype
00:23:18 v #29538 > > async_walkdir_WalkDir = class end"
00:23:18 v #29539 > >         $'' : $'async_walkdir_WalkDir'
00:23:18 v #29540 > >     )
00:23:18 v #29541 > >
00:23:18 v #29542 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:18 v #29543 > > │ ### async_walkdir_filtering
00:23:18 v #29544 > >
00:23:18 v #29545 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:18 v #29546 > > nominal async_walkdir_filtering =
00:23:18 v #29547 > >     `(
00:23:18 v #29548 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:23:18 v #29549 > > Fable.Core.Emit(\"async_walkdir::Filtering\")>]]\n#endif\ntype
00:23:18 v #29550 > > async_walkdir_Filtering = class end"
00:23:18 v #29551 > >         $'' : $'async_walkdir_Filtering'
00:23:18 v #29552 > >     )
00:23:19 v #29553 > >
00:23:19 v #29554 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:19 v #29555 > > │ ### filtering
00:23:19 v #29556 > >
00:23:19 v #29557 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:19 v #29558 > > union filtering =
00:23:19 v #29559 > >     | Ignore
00:23:19 v #29560 > >     | IgnoreDir
00:23:19 v #29561 > >     | Continue
00:23:19 v #29562 > >
00:23:19 v #29563 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:19 v #29564 > > │ ### async_walkdir_error
00:23:19 v #29565 > >
00:23:19 v #29566 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:19 v #29567 > > nominal async_walkdir_error =
00:23:19 v #29568 > >     `(
00:23:19 v #29569 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:23:19 v #29570 > > Fable.Core.Emit(\"async_walkdir::Error\")>]]\n#endif\ntype async_walkdir_Error =
00:23:19 v #29571 > > class end"
00:23:19 v #29572 > >         $'' : $'async_walkdir_Error'
00:23:19 v #29573 > >     )
00:23:19 v #29574 > >
00:23:19 v #29575 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:19 v #29576 > > │ ### new_walk_dir
00:23:19 v #29577 > >
00:23:19 v #29578 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:19 v #29579 > > inl new_walk_dir (dir : string) : walk_dir =
00:23:19 v #29580 > >     !\\(dir, $'"async_walkdir::WalkDir::new(&*$0)"')
00:23:19 v #29581 > >     // inl walk_dir : walk_dir = walk_dir |> rust.to_mut
00:23:19 v #29582 > >     // (!\($'"true; let mut !walk_dir = !walk_dir"') : bool) |> ignore
00:23:19 v #29583 > >
00:23:19 v #29584 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:19 v #29585 > > │ ### walk_dir_filter
00:23:19 v #29586 > >
00:23:19 v #29587 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:19 v #29588 > > inl walk_dir_filter (fn : dir_entry -> async.future_pin_send filtering)
00:23:19 v #29589 > > (walk_dir : walk_dir) : walk_dir =
00:23:19 v #29590 > >     inl fn entry = async.new_future_send fun () =>
00:23:19 v #29591 > >         inl result = fn entry |> async.await_send
00:23:19 v #29592 > >         inl filtering : async_walkdir_filtering =
00:23:19 v #29593 > >             match result with
00:23:19 v #29594 > >             | Ignore => !\($'"async_walkdir::Filtering::Ignore"')
00:23:19 v #29595 > >             | IgnoreDir => !\($'"async_walkdir::Filtering::IgnoreDir"')
00:23:19 v #29596 > >             | Continue => !\($'"async_walkdir::Filtering::Continue"')
00:23:19 v #29597 > >         filtering
00:23:19 v #29598 > >     !\\((walk_dir, fn), $'"async_walkdir::WalkDir::filter($0, move |x| $1(x))"')
00:23:19 v #29599 > >
00:23:19 v #29600 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:19 v #29601 > > │ ### file_type
00:23:19 v #29602 > >
00:23:19 v #29603 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:19 v #29604 > > nominal file_type =
00:23:19 v #29605 > >     `(
00:23:19 v #29606 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:23:19 v #29607 > > Fable.Core.Emit(\"std::fs::FileType\")>]]\n#endif\ntype std_fs_FileType = class
00:23:19 v #29608 > > end"
00:23:19 v #29609 > >         $'' : $'std_fs_FileType'
00:23:19 v #29610 > >     )
00:23:19 v #29611 > >
00:23:19 v #29612 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:19 v #29613 > > │ ### dir_entry_file_type
00:23:19 v #29614 > >
00:23:19 v #29615 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:19 v #29616 > > inl dir_entry_file_type (dir_entry : dir_entry) : async.future_pin_send
00:23:19 v #29617 > > (resultm.result' file_type stream.io_error) =
00:23:19 v #29618 > >     inl dir_entry = dir_entry |> rust.emit
00:23:19 v #29619 > >     !\($'"Box::pin(async_walkdir::DirEntry::file_type(&!dir_entry))"')
00:23:19 v #29620 > >
00:23:19 v #29621 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:19 v #29622 > > │ ### file_type_is_dir
00:23:19 v #29623 > >
00:23:19 v #29624 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:19 v #29625 > > inl file_type_is_dir (file_type : file_type) : bool =
00:23:19 v #29626 > >     !\\(file_type, $'"std::fs::FileType::is_dir(&$0)"')
00:23:20 v #29627 > >
00:23:20 v #29628 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:20 v #29629 > > │ ### file
00:23:20 v #29630 > >
00:23:20 v #29631 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:20 v #29632 > > nominal file =
00:23:20 v #29633 > >     `(
00:23:20 v #29634 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:23:20 v #29635 > > Fable.Core.Emit(\"std::fs::File\")>]]\n#endif\ntype std_fs_File = class end"
00:23:20 v #29636 > >         $'' : $'std_fs_File'
00:23:20 v #29637 > >     )
00:23:20 v #29638 > >
00:23:20 v #29639 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:20 v #29640 > > │ ### file_open
00:23:20 v #29641 > >
00:23:20 v #29642 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:20 v #29643 > > inl file_open (path : string) : resultm.result' file stream.io_error =
00:23:20 v #29644 > >     !\($'"std::fs::File::open(&*!path)"')
00:23:20 v #29645 > >
00:23:20 v #29646 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:20 v #29647 > > │ ### rename
00:23:20 v #29648 > >
00:23:20 v #29649 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:20 v #29650 > > inl rename (to : string) (path : string) : resultm.result' () stream.io_error =
00:23:20 v #29651 > >     !\($'"std::fs::rename(&*!path, &*!to)"')
00:23:20 v #29652 > >
00:23:20 v #29653 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:20 v #29654 > > │ ### dir_entry_path
00:23:20 v #29655 > >
00:23:20 v #29656 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:20 v #29657 > > inl dir_entry_path (dir_entry : dir_entry) : path_buf =
00:23:20 v #29658 > >     !\\(dir_entry, $'"async_walkdir::DirEntry::path(&$0)"')
00:23:20 v #29659 > >
00:23:20 v #29660 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:20 v #29661 > > │ ### create_dir_all
00:23:20 v #29662 > >
00:23:20 v #29663 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:20 v #29664 > > inl create_dir_all (path : string) : resultm.result' () stream.io_error =
00:23:20 v #29665 > >     !\\(path, $'"std::fs::create_dir_all(&*$0)"')
00:23:20 v #29666 > >
00:23:20 v #29667 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:20 v #29668 > > │ ### file_info_link_target
00:23:20 v #29669 > >
00:23:20 v #29670 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:20 v #29671 > > inl file_info_link_target (file_info : file_info) : string =
00:23:20 v #29672 > >     run_target function
00:23:20 v #29673 > >         | Fsharp (Native) => fun () =>
00:23:20 v #29674 > >             file_info |> $'_.LinkTarget'
00:23:20 v #29675 > >         | _ => fun () => null ()
00:23:21 v #29676 > >
00:23:21 v #29677 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:21 v #29678 > > │ ### read
00:23:21 v #29679 > >
00:23:21 v #29680 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:21 v #29681 > > inl read (path : string) : resultm.result' (am'.vec u8) stream.io_error =
00:23:21 v #29682 > >     !\\(path, $'"std::fs::read(&*$0)"')
00:23:21 v #29683 > >
00:23:21 v #29684 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:21 v #29685 > > │ ## typescript
00:23:21 v #29686 > >
00:23:21 v #29687 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:21 v #29688 > > │ ### ts_path_join
00:23:21 v #29689 > >
00:23:21 v #29690 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:21 v #29691 > > inl ts_path_join (b : string) (a : string) : string =
00:23:21 v #29692 > >     open typescript_operators
00:23:21 v #29693 > >     global "type IPathJoin = abstract join: [[<System.ParamArray>]] paths:
00:23:21 v #29694 > > string[[]] -> string"
00:23:21 v #29695 > >     inl path : $'IPathJoin' = typescript.import_all "path"
00:23:21 v #29696 > >     !\\((a, b), $'"!path.join($0, $1)"')
00:23:21 v #29697 > >
00:23:21 v #29698 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:21 v #29699 > > │ ## file_system
00:23:21 v #29700 > >
00:23:21 v #29701 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:21 v #29702 > > │ ### (< />)
00:23:21 v #29703 > >
00:23:21 v #29704 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:21 v #29705 > > let (</>) (a : string) (b : string) : string =
00:23:21 v #29706 > >     run_target_args (fun () => a, b) function
00:23:21 v #29707 > >         | Rust (Contract) => fun _ => null ()
00:23:21 v #29708 > >         | Rust (Native) => fun a, b =>
00:23:21 v #29709 > >             a
00:23:21 v #29710 > >             |> sm'.to_std_string
00:23:21 v #29711 > >             |> new_path_buf
00:23:21 v #29712 > >             |> path_buf_join b
00:23:21 v #29713 > >             |> path_buf_display
00:23:21 v #29714 > >             |> sm'.format'
00:23:21 v #29715 > >             |> sm'.from_std_string
00:23:21 v #29716 > >         | TypeScript (Native) => fun a, b =>
00:23:21 v #29717 > >             a |> ts_path_join b
00:23:21 v #29718 > >         | Fsharp (Native) => fun a, b =>
00:23:21 v #29719 > >             $'System.IO.Path.Combine (!a, !b)'
00:23:21 v #29720 > >         | target => fun a, b => failwith $'$"file_system.(</>) / target:
00:23:21 v #29721 > > {!target} / a: {!a} / b: {!b}"'
00:23:21 v #29722 > >
00:23:21 v #29723 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:21 v #29724 > > │ ### get_temp_path
00:23:21 v #29725 > >
00:23:21 v #29726 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:21 v #29727 > > let get_temp_path () : string =
00:23:21 v #29728 > >     run_target function
00:23:21 v #29729 > >         | Rust (Contract) => fun () => null ()
00:23:21 v #29730 > >         | Rust (Native) => fun () =>
00:23:21 v #29731 > >             !\($'"std::env::temp_dir()"')
00:23:21 v #29732 > >             |> path_buf_display
00:23:21 v #29733 > >             |> sm'.format'
00:23:21 v #29734 > >             |> sm'.from_std_string
00:23:21 v #29735 > >         | Fsharp (Native) => fun () =>
00:23:21 v #29736 > >             $'System.IO.Path.GetTempPath' ()
00:23:21 v #29737 > >         | target => fun () => failwith $'$"file_system.get_temp_path / target:
00:23:21 v #29738 > > {!target}"'
00:23:21 v #29739 > >
00:23:21 v #29740 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:21 v #29741 > > │ ### get_file_name
00:23:21 v #29742 > >
00:23:21 v #29743 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:21 v #29744 > > let get_file_name (path : string) : string =
00:23:21 v #29745 > >     run_target_args' path function
00:23:21 v #29746 > >         | Fsharp (Native) => fun path =>
00:23:21 v #29747 > >             path |> $'System.IO.Path.GetFileName'
00:23:21 v #29748 > >         | Rust (Native) => fun path =>
00:23:21 v #29749 > >             path
00:23:21 v #29750 > >             |> sm'.to_std_string
00:23:21 v #29751 > >             |> new_path_buf
00:23:21 v #29752 > >             |> path_buf_file_name
00:23:21 v #29753 > >             |> optionm'.map' sm'.from_os_str_ref
00:23:21 v #29754 > >             |> optionm'.unbox
00:23:21 v #29755 > >             |> optionm'.default_value ""
00:23:21 v #29756 > >         | Rust (Contract) => fun _ => null ()
00:23:21 v #29757 > >         | target => fun path => failwith $'$"file_system.get_file_name / target:
00:23:21 v #29758 > > {!target} / path: {!path}"'
00:23:21 v #29759 > >
00:23:21 v #29760 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:21 v #29761 > > │ ### get_file_name_without_extension
00:23:21 v #29762 > >
00:23:21 v #29763 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:21 v #29764 > > let get_file_name_without_extension (path : string) : string =
00:23:21 v #29765 > >     run_target_args' path function
00:23:21 v #29766 > >         | Rust (Contract) => fun _ => null ()
00:23:21 v #29767 > >         | Rust (Native) => fun path =>
00:23:21 v #29768 > >             inl path_buf = path |> sm'.to_std_string |> new_path_buf
00:23:21 v #29769 > >             inl file_stem = !\\(path_buf, $'"$0.file_stem()"')
00:23:21 v #29770 > >             match file_stem |> optionm'.map' sm'.from_os_str_ref |>
00:23:21 v #29771 > > optionm'.unbox with
00:23:21 v #29772 > >             | Some file_stem => file_stem
00:23:21 v #29773 > >             | None => ""
00:23:21 v #29774 > >         | _ => fun path =>
00:23:21 v #29775 > >             path |> $'System.IO.Path.GetFileNameWithoutExtension'
00:23:22 v #29776 > >
00:23:22 v #29777 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:22 v #29778 > > │ ### get_directory_name
00:23:22 v #29779 > >
00:23:22 v #29780 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:22 v #29781 > > let get_directory_name (path : string) : string =
00:23:22 v #29782 > >     run_target_args' path function
00:23:22 v #29783 > >         | Fsharp _ => fun path =>
00:23:22 v #29784 > >             path |> $'System.IO.Path.GetDirectoryName'
00:23:22 v #29785 > >         | Rust (Native) => fun path =>
00:23:22 v #29786 > >             path
00:23:22 v #29787 > >             |> sm'.to_std_string
00:23:22 v #29788 > >             |> new_path_buf
00:23:22 v #29789 > >             |> path_buf_file_name
00:23:22 v #29790 > >             |> optionm'.map' sm'.from_os_str_ref
00:23:22 v #29791 > >             |> optionm'.unbox
00:23:22 v #29792 > >             |> optionm'.default_value ""
00:23:22 v #29793 > >         | _ => fun _ => null ()
00:23:22 v #29794 > >
00:23:22 v #29795 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:22 v #29796 > > │ ### get_extension
00:23:22 v #29797 > >
00:23:22 v #29798 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:22 v #29799 > > let get_extension (path : string) : string =
00:23:22 v #29800 > >     run_target_args' path function
00:23:22 v #29801 > >         | Rust (Contract) => fun _ => null ()
00:23:22 v #29802 > >         | Rust (Native) => fun path =>
00:23:22 v #29803 > >             inl path_buf = path |> sm'.to_std_string |> new_path_buf
00:23:22 v #29804 > >             !\\(path_buf, $'"$0.extension()"')
00:23:22 v #29805 > >             |> optionm'.unwrap
00:23:22 v #29806 > >             |> sm'.from_os_str_ref
00:23:22 v #29807 > >         | _ => fun path =>
00:23:22 v #29808 > >             path |> $'System.IO.Path.GetExtension'
00:23:22 v #29809 > >
00:23:22 v #29810 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:22 v #29811 > > │ ### directory_separator_char
00:23:22 v #29812 > >
00:23:22 v #29813 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:22 v #29814 > > let directory_separator_char () : char =
00:23:22 v #29815 > >     run_target function
00:23:22 v #29816 > >         | Rust (Native) => fun () => !\($'"std::path::MAIN_SEPARATOR"')
00:23:22 v #29817 > >         | _ => fun () => $'System.IO.Path.DirectorySeparatorChar'
00:23:22 v #29818 > >
00:23:22 v #29819 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:22 v #29820 > > │ ### get_current_directory
00:23:22 v #29821 > >
00:23:22 v #29822 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:22 v #29823 > > let get_current_directory () : string =
00:23:22 v #29824 > >     run_target function
00:23:22 v #29825 > >         | Rust (Contract | Wasm) => fun () => null ()
00:23:22 v #29826 > >         | Rust (Native) => fun () =>
00:23:22 v #29827 > >             inl current_dir = !\($'"std::env::current_dir()"') : resultm.result'
00:23:22 v #29828 > > path_buf stream.io_error
00:23:22 v #29829 > >             current_dir
00:23:22 v #29830 > >             |> resultm.unwrap'
00:23:22 v #29831 > >             |> path_buf_display
00:23:22 v #29832 > >             |> sm'.format'
00:23:22 v #29833 > >             |> sm'.from_std_string
00:23:22 v #29834 > >         | Fsharp (Native) => fun () =>
00:23:22 v #29835 > >             $'System.IO.Directory.GetCurrentDirectory' ()
00:23:22 v #29836 > >         | _ => fun () => null ()
00:23:22 v #29837 > >
00:23:22 v #29838 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:22 v #29839 > > //// test
00:23:22 v #29840 > >
00:23:22 v #29841 > > get_current_directory ()
00:23:22 v #29842 > > |> _assert_contains (directory_separator_char ())
00:23:23 v #29843 > >
00:23:23 v #29844 > > ── [ 438.08ms - stdout ] ───────────────────────────────────────────────────────
00:23:23 v #29845 > > │ __assert_contains / actual:
00:23:23 v #29846 > > "/home/runner/work/polyglot/polyglot/lib/spiral" / expected: '/'
00:23:23 v #29847 > > │
00:23:23 v #29848 > >
00:23:23 v #29849 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:23 v #29850 > > │ ### directory_exists
00:23:23 v #29851 > >
00:23:23 v #29852 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:23 v #29853 > > let directory_exists (path : string) : bool =
00:23:23 v #29854 > >     run_target_args' path function
00:23:23 v #29855 > >         | Fsharp (Native) => fun path =>
00:23:23 v #29856 > >             path |> $'System.IO.Directory.Exists'
00:23:23 v #29857 > >         | Rust (Native) => fun path =>
00:23:23 v #29858 > >             inl path = path |> sm'.to_std_string |> new_path_buf
00:23:23 v #29859 > >             path_buf_exists path && path_buf_is_dir path
00:23:23 v #29860 > >         | TypeScript (Native) => fun path =>
00:23:23 v #29861 > >             global "type IFsExistsSync = abstract existsSync: path: string ->
00:23:23 v #29862 > > bool"
00:23:23 v #29863 > >             open typescript_operators
00:23:23 v #29864 > >             inl fs : $'IFsExistsSync' = typescript.import_all "fs"
00:23:23 v #29865 > >             !\\((fs, path), $'"$0.existsSync($1)"')
00:23:23 v #29866 > >         | _ => fun _ => null ()
00:23:23 v #29867 > >
00:23:23 v #29868 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:23 v #29869 > > │ ### directory_get_parent
00:23:23 v #29870 > >
00:23:23 v #29871 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:23 v #29872 > > let directory_get_parent (path : string) : optionm'.option' string =
00:23:23 v #29873 > >     run_target_args' path function
00:23:23 v #29874 > >         | Fsharp (Native) => fun path =>
00:23:23 v #29875 > >             inl parent : directory_info = path |>
00:23:23 v #29876 > > $'System.IO.Directory.GetParent'
00:23:23 v #29877 > >             if parent =. null ()
00:23:23 v #29878 > >             then None
00:23:23 v #29879 > >             else parent |> directory_info_full_name |> Some
00:23:23 v #29880 > >             |> optionm'.box
00:23:23 v #29881 > >         | Rust (Native) => fun path =>
00:23:23 v #29882 > >             inl path_buf = path |> sm'.to_std_string |> new_path_buf
00:23:23 v #29883 > >             inl parent = path_buf |> path_buf_parent
00:23:23 v #29884 > >             parent
00:23:23 v #29885 > >             |> optionm'.map' (path_buf_display >> sm'.format' >>
00:23:23 v #29886 > > sm'.from_std_string)
00:23:23 v #29887 > >         | TypeScript _ => fun path =>
00:23:23 v #29888 > >             open typescript_operators
00:23:23 v #29889 > >             global "type IPathDirname = abstract dirname: path: string ->
00:23:23 v #29890 > > string"
00:23:23 v #29891 > >             inl fs : $'IPathDirname' = typescript.import_all "path"
00:23:23 v #29892 > >             !\\(path, $'"!fs.dirname($0)"') |> Some |> optionm'.box
00:23:23 v #29893 > >         | _ => fun _ => null ()
00:23:23 v #29894 > >
00:23:23 v #29895 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:23 v #29896 > > │ ### create_temp_path'
00:23:23 v #29897 > >
00:23:23 v #29898 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:23 v #29899 > > let create_temp_path' (guid : guid.guid) =
00:23:23 v #29900 > >     run_target_args' guid function
00:23:23 v #29901 > >         | Rust (Contract) => fun _ => null ()
00:23:23 v #29902 > >         | _ => fun guid =>
00:23:23 v #29903 > >             get_temp_path ()
00:23:23 v #29904 > >             </> join "!create_temp_path_"
00:23:23 v #29905 > >             </> (env.get_entry_assembly_name ())
00:23:23 v #29906 > >             </> (guid |> sm'.obj_to_string)
00:23:23 v #29907 > >
00:23:23 v #29908 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:23 v #29909 > > //// test
00:23:23 v #29910 > > ///! fsharp
00:23:23 v #29911 > > ///! rust -d chrono
00:23:23 v #29912 > >
00:23:23 v #29913 > > guid.hash_guid ""
00:23:23 v #29914 > > |> create_temp_path'
00:23:23 v #29915 > > |> _assert_contains (directory_separator_char ())
00:23:30 v #29916 > >
00:23:30 v #29917 > > ── [ 6.59s - return value ] ────────────────────────────────────────────────────
00:23:30 v #29918 > > │ .rs output (rust -d chrono):
00:23:30 v #29919 > > │ __assert_contains / actual:
00:23:30 v #29920 > > "/tmp/!create_temp_path_/spiral_de7d670c7f8a5918c3a4286d22cac5a3be9b49598231decb
00:23:30 v #29921 > > 3284da5c79b217c0/00000000-0000-0000-0000-000000000000" / expected: '/'
00:23:30 v #29922 > > │
00:23:30 v #29923 > > │
00:23:30 v #29924 > >
00:23:30 v #29925 > > ── [ 6.59s - stdout ] ──────────────────────────────────────────────────────────
00:23:30 v #29926 > > │ .fsx output:
00:23:30 v #29927 > > │ __assert_contains / actual:
00:23:30 v #29928 > > "/tmp/!create_temp_path_/dotnet-repl/00000000-0000-0000-0000-000000000000"
00:23:30 v #29929 > > expected: '/'
00:23:30 v #29930 > > │
00:23:30 v #29931 > >
00:23:30 v #29932 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:30 v #29933 > > │ ### create_temp_path
00:23:30 v #29934 > >
00:23:30 v #29935 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:30 v #29936 > > let create_temp_path () =
00:23:30 v #29937 > >     run_target function
00:23:30 v #29938 > >         | Rust (Contract) => fun () => null ()
00:23:30 v #29939 > >         | _ => fun () =>
00:23:30 v #29940 > >             date_time.now ()
00:23:30 v #29941 > >             |> date_time.new_guid_from_date_time
00:23:30 v #29942 > >             |> create_temp_path'
00:23:30 v #29943 > >
00:23:30 v #29944 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:30 v #29945 > > │ ### file_copy
00:23:30 v #29946 > >
00:23:30 v #29947 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:30 v #29948 > > let file_copy (new_path : string) (old_path : string) : () =
00:23:30 v #29949 > >     run_target_args' (old_path, new_path) function
00:23:30 v #29950 > >         | Fsharp (Native) => fun old_path, new_path =>
00:23:30 v #29951 > >             $'System.IO.File.Copy (!old_path, !new_path, true)'
00:23:30 v #29952 > >         | Rust (Native) => fun old_path, new_path =>
00:23:30 v #29953 > >             inl result : _ _ stream.io_error = !\\((old_path, new_path),
00:23:30 v #29954 > > $'"std::fs::copy(&*$0, &*$1)"')
00:23:30 v #29955 > >             match result |> resultm.map_error' sm'.format' |> resultm.unbox with
00:23:30 v #29956 > >             | Ok (result : u64) =>
00:23:30 v #29957 > >                 trace Debug
00:23:30 v #29958 > >                     fun () => "file_system.file_copy"
00:23:30 v #29959 > >                     fun () => { old_path new_path result }
00:23:30 v #29960 > >             | Error error =>
00:23:30 v #29961 > >                 trace Warning
00:23:30 v #29962 > >                     fun () => "file_system.file_copy"
00:23:30 v #29963 > >                     fun () => { old_path new_path error }
00:23:30 v #29964 > >         | _ => fun _ => ()
00:23:30 v #29965 > >
00:23:30 v #29966 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:30 v #29967 > > │ ### file_exists
00:23:30 v #29968 > >
00:23:30 v #29969 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:30 v #29970 > > let file_exists (path : string) : bool =
00:23:30 v #29971 > >     run_target_args' path function
00:23:30 v #29972 > >         | Fsharp (Native) => fun path =>
00:23:30 v #29973 > >             path |> $'System.IO.File.Exists'
00:23:30 v #29974 > >         | Rust (Native) => fun path =>
00:23:30 v #29975 > >             inl path_buf = path |> sm'.to_std_string |> new_path_buf
00:23:30 v #29976 > >             path_buf_exists path_buf && path_buf_is_file path_buf
00:23:30 v #29977 > >         | TypeScript (Native) => fun path =>
00:23:30 v #29978 > >             open typescript_operators
00:23:30 v #29979 > >             global "type IFsExistsSync = abstract existsSync: path: string ->
00:23:30 v #29980 > > bool"
00:23:30 v #29981 > >             inl fs : $'IFsExistsSync' = typescript.import_all "fs"
00:23:30 v #29982 > >             !\\((fs, path), $'"$0.existsSync($1)"')
00:23:30 v #29983 > >         | _ => fun _ => null ()
00:23:30 v #29984 > >
00:23:30 v #29985 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:30 v #29986 > > │ ### directory_delete
00:23:30 v #29987 > >
00:23:30 v #29988 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:30 v #29989 > > let directory_delete recursive (path : string) : () =
00:23:30 v #29990 > >     run_target_args' (path, recursive) function
00:23:30 v #29991 > >         | Fsharp (Native) => fun path, recursive =>
00:23:30 v #29992 > >             $'System.IO.Directory.Delete (!path, !recursive)'
00:23:30 v #29993 > >         | Rust (Native) => fun path, recursive =>
00:23:30 v #29994 > >             if path |> directory_exists then
00:23:30 v #29995 > >                 if recursive
00:23:30 v #29996 > >                 then !\\(path, $'"std::fs::remove_dir_all(&*$0).unwrap()"')
00:23:30 v #29997 > >                 else !\\(path, $'"std::fs::remove_dir(&*$0).unwrap()"')
00:23:30 v #29998 > >         | _ => fun _ => ()
00:23:30 v #29999 > >
00:23:30 v #30000 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:30 v #30001 > > │ ### write_all_text
00:23:30 v #30002 > >
00:23:30 v #30003 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:30 v #30004 > > inl write_all_text (path : string) (text : string) : () =
00:23:30 v #30005 > >     run_target_args' (path, text) function
00:23:30 v #30006 > >         | Fsharp (Native) => fun path, text =>
00:23:30 v #30007 > >             $'System.IO.File.WriteAllText (!path, !text)'
00:23:30 v #30008 > >         | Rust (Native) => fun path, text =>
00:23:30 v #30009 > >             !\\((path, text), $'"std::fs::write(&*$0, &*$1).unwrap()"')
00:23:30 v #30010 > >         | _ => fun _ => ()
00:23:30 v #30011 > >
00:23:30 v #30012 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:30 v #30013 > > │ ### read_all_bytes
00:23:30 v #30014 > >
00:23:30 v #30015 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:30 v #30016 > > inl read_all_bytes (path : string) : am'.vec u8 =
00:23:30 v #30017 > >     run_target function
00:23:30 v #30018 > >         | Fsharp (Native) => fun () =>
00:23:30 v #30019 > >             $'!path |> System.IO.File.ReadAllBytes'
00:23:30 v #30020 > >             |> am'.to_vec
00:23:30 v #30021 > >         | Rust (Native) => fun () =>
00:23:30 v #30022 > >             path |> read |> resultm.unwrap'
00:23:30 v #30023 > >         | _ => fun () => null ()
00:23:31 v #30024 > >
00:23:31 v #30025 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:31 v #30026 > > │ ### read_all_text
00:23:31 v #30027 > >
00:23:31 v #30028 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:31 v #30029 > > inl read_all_text (path : string) : string =
00:23:31 v #30030 > >     run_target function
00:23:31 v #30031 > >         | Fsharp (Native) => fun () =>
00:23:31 v #30032 > >             $'!path |> System.IO.File.ReadAllText'
00:23:31 v #30033 > >         | Rust (Native) => fun () =>
00:23:31 v #30034 > >             path
00:23:31 v #30035 > >             |> read_all_bytes
00:23:31 v #30036 > >             |> sm'.string_from_utf8
00:23:31 v #30037 > >             |> resultm.unwrap'
00:23:31 v #30038 > >             |> sm'.from_std_string
00:23:31 v #30039 > >         | _ => fun () => null ()
00:23:31 v #30040 > >
00:23:31 v #30041 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:31 v #30042 > > │ ### directory_create_symbolic_link
00:23:31 v #30043 > >
00:23:31 v #30044 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:31 v #30045 > > inl directory_create_symbolic_link (target : string) (path : string) : () =
00:23:31 v #30046 > >     run_target function
00:23:31 v #30047 > >         | Fsharp (Native) => fun () =>
00:23:31 v #30048 > >             ($'System.IO.Directory.CreateSymbolicLink (!path, !target)' :
00:23:31 v #30049 > > file_system_info)
00:23:31 v #30050 > >             |> ignore
00:23:31 v #30051 > >         | Rust (Native) => fun () =>
00:23:31 v #30052 > >             (!\\((target, path), $'"true; #[[cfg(windows)]]
00:23:31 v #30053 > > std::os::windows::fs::symlink_dir(&*$0, &*$1).unwrap()"') : bool) |> ignore
00:23:31 v #30054 > >             (!\\((target, path), $'"true; #[[cfg(unix)]]
00:23:31 v #30055 > > std::os::unix::fs::symlink(&*$0, &*$1).unwrap()"') : bool) |> ignore
00:23:31 v #30056 > >         | _ => fun () => ()
00:23:31 v #30057 > >
00:23:31 v #30058 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:31 v #30059 > > │ ### file_create_symbolic_link
00:23:31 v #30060 > >
00:23:31 v #30061 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:31 v #30062 > > inl file_create_symbolic_link (target : string) (path : string) : () =
00:23:31 v #30063 > >     run_target function
00:23:31 v #30064 > >         | Fsharp (Native) => fun () =>
00:23:31 v #30065 > >             ($'System.IO.File.CreateSymbolicLink (!path, !target)' :
00:23:31 v #30066 > > file_system_info)
00:23:31 v #30067 > >             |> ignore
00:23:31 v #30068 > >         | Rust (Native) => fun () =>
00:23:31 v #30069 > >             (!\\((target, path), $'"true; #[[cfg(windows)]]
00:23:31 v #30070 > > std::os::windows::fs::symlink_file(&*$0, &*$1).unwrap()"') : bool) |> ignore
00:23:31 v #30071 > >             (!\\((target, path), $'"true; #[[cfg(unix)]]
00:23:31 v #30072 > > std::os::unix::fs::symlink(&*$0, &*$1).unwrap()"') : bool) |> ignore
00:23:31 v #30073 > >         | _ => fun () => ()
00:23:31 v #30074 > >
00:23:31 v #30075 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:31 v #30076 > > │ ### file_type
00:23:31 v #30077 > >
00:23:31 v #30078 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:31 v #30079 > > union file_type =
00:23:31 v #30080 > >     | File
00:23:31 v #30081 > >     | Directory
00:23:31 v #30082 > >
00:23:31 v #30083 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:31 v #30084 > > │ ### find_parent
00:23:31 v #30085 > >
00:23:31 v #30086 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:31 v #30087 > > inl find_parent file_type name root_dir =
00:23:31 v #30088 > >     inl is_file = file_type = File
00:23:31 v #30089 > >     let rec loop dir =
00:23:31 v #30090 > >         if dir </> name |> (if is_file then file_exists else directory_exists)
00:23:31 v #30091 > >         then dir |> Ok
00:23:31 v #30092 > >         else
00:23:31 v #30093 > >             inl result = dir |> directory_get_parent
00:23:31 v #30094 > >             match result |> optionm'.unbox with
00:23:31 v #30095 > >             | Some parent => parent |> loop
00:23:31 v #30096 > >             | None => ($'$"""No parent for {if !is_file then "file" else "dir"}
00:23:31 v #30097 > > \'{!name}\' at \'{!root_dir}\' (until \'{!dir}\')"""' : string) |> Error
00:23:31 v #30098 > >     loop root_dir
00:23:31 v #30099 > >
00:23:31 v #30100 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:31 v #30101 > > //// test
00:23:31 v #30102 > >
00:23:31 v #30103 > > a ;[[ Directory, ".paket"; File, "paket.dependencies" ]]
00:23:31 v #30104 > > |> am.map fun file_type, file =>
00:23:31 v #30105 > >     get_source_directory ()
00:23:31 v #30106 > >     |> find_parent file_type file
00:23:31 v #30107 > >     |> resultm.get
00:23:31 v #30108 > >     |> directory_info
00:23:31 v #30109 > >     |> directory_info_name
00:23:31 v #30110 > > |> am'.distinct
00:23:31 v #30111 > > |> fun (a x : _ int _) => x
00:23:31 v #30112 > > |> _assert_eq' ;[[ "polyglot" ]]
00:23:32 v #30113 > >
00:23:32 v #30114 > > ── [ 420.78ms - stdout ] ───────────────────────────────────────────────────────
00:23:32 v #30115 > > │ __assert_eq' / actual: [|"polyglot"|] / expected:
00:23:32 v #30116 > > [|"polyglot"|]
00:23:32 v #30117 > > │
00:23:32 v #30118 > >
00:23:32 v #30119 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:32 v #30120 > > //// test
00:23:32 v #30121 > > ///! rust
00:23:32 v #30122 > >
00:23:32 v #30123 > > a ;[[ Directory, ".paket"; File, "paket.dependencies" ]]
00:23:32 v #30124 > > |> am.map fun file_type, file =>
00:23:32 v #30125 > >     fun () =>
00:23:32 v #30126 > >         join
00:23:32 v #30127 > >             get_source_directory ()
00:23:32 v #30128 > >             |> find_parent file_type file
00:23:32 v #30129 > >             |> resultm.get
00:23:32 v #30130 > >             |> sm'.to_std_string
00:23:32 v #30131 > >             |> new_path_buf
00:23:32 v #30132 > >             |> path_buf_file_name
00:23:32 v #30133 > >             |> optionm'.try'
00:23:32 v #30134 > >             |> sm'.from_os_str_ref
00:23:32 v #30135 > >             |> Some
00:23:32 v #30136 > >             |> optionm'.box
00:23:32 v #30137 > >     |> fun x => x () |> optionm'.unbox
00:23:32 v #30138 > >     |> optionm'.default_value ""
00:23:32 v #30139 > > |> am'.distinct
00:23:32 v #30140 > > |> fun result =>
00:23:32 v #30141 > >     result |> am'.length |> _assert_eq 1i32
00:23:32 v #30142 > >     index result 0i32 |> _assert_eq "polyglot"
00:23:38 v #30143 > >
00:23:38 v #30144 > > ── [ 6.12s - return value ] ────────────────────────────────────────────────────
00:23:38 v #30145 > > │ __assert_eq / actual: 1 / expected: 1
00:23:38 v #30146 > > │ __assert_eq / actual: "polyglot" / expected: "polyglot"
00:23:38 v #30147 > > │
00:23:38 v #30148 > >
00:23:38 v #30149 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:38 v #30150 > > │ ### get_workspace_root
00:23:38 v #30151 > >
00:23:38 v #30152 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:38 v #30153 > > inl get_workspace_root () =
00:23:38 v #30154 > >     (None, [[ get_source_directory; get_current_directory ]])
00:23:38 v #30155 > >     ||> listm.fold fun acc path =>
00:23:38 v #30156 > >         match acc with
00:23:38 v #30157 > >         | Some path => Some path
00:23:38 v #30158 > >         | None =>
00:23:38 v #30159 > >             path ()
00:23:38 v #30160 > >             |> find_parent Directory ("polyglot" </> "workspace")
00:23:38 v #30161 > >             |> function
00:23:38 v #30162 > >                 | Ok path => Some path
00:23:38 v #30163 > >                 | Error error =>
00:23:38 v #30164 > >                     trace Warning
00:23:38 v #30165 > >                         fun () => "file_system.get_workspace_root"
00:23:38 v #30166 > >                         fun () => { error }
00:23:38 v #30167 > >                     None
00:23:38 v #30168 > >     |> optionm.value
00:23:38 v #30169 > >     |> fun root => root </> "polyglot"
00:23:38 v #30170 > >
00:23:38 v #30171 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:38 v #30172 > > │ ### get_workspace_root_external
00:23:38 v #30173 > >
00:23:38 v #30174 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:38 v #30175 > > inl get_workspace_root_external () =
00:23:38 v #30176 > >     inl workspace_root = get_workspace_root ()
00:23:38 v #30177 > >     inl current_dir = get_current_directory () |> sm'.to_lower
00:23:38 v #30178 > >     inl workspace_root = workspace_root |> sm'.to_lower
00:23:38 v #30179 > >     if current_dir |> sm'.starts_with workspace_root
00:23:38 v #30180 > >     then Error workspace_root
00:23:38 v #30181 > >     else Ok workspace_root
00:23:38 v #30182 > >
00:23:38 v #30183 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:38 v #30184 > > //// test
00:23:38 v #30185 > >
00:23:38 v #30186 > > get_workspace_root_external ()
00:23:38 v #30187 > > |> resultm.unwrap_err
00:23:38 v #30188 > > |> get_file_name
00:23:38 v #30189 > > |> _assert_eq "polyglot"
00:23:39 v #30190 > >
00:23:39 v #30191 > > ── [ 597.00ms - stdout ] ───────────────────────────────────────────────────────
00:23:39 v #30192 > > │ __assert_eq / actual: "polyglot" / expected: "polyglot"
00:23:39 v #30193 > > │
00:23:39 v #30194 > >
00:23:39 v #30195 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:39 v #30196 > > │ ### file_delete
00:23:39 v #30197 > >
00:23:39 v #30198 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:39 v #30199 > > inl file_delete (path : string) : () =
00:23:39 v #30200 > >     run_target function
00:23:39 v #30201 > >         | Fsharp (Native) => fun () =>
00:23:39 v #30202 > >             path |> $'System.IO.File.Delete'
00:23:39 v #30203 > >         | Rust (Native) => fun () =>
00:23:39 v #30204 > >             inl result : resultm.result' () stream.io_error =
00:23:39 v #30205 > >                 !\\(path, $'"std::fs::remove_file(&*$0)"')
00:23:39 v #30206 > >             match result |> resultm.map_error' sm'.format |> resultm.unbox with
00:23:39 v #30207 > >             | Ok () => ()
00:23:39 v #30208 > >             | Error error' => trace Critical (fun () =>
00:23:39 v #30209 > > "file_system.file_delete") fun () => { error' }
00:23:39 v #30210 > >         | _ => fun () => ()
00:23:39 v #30211 > >
00:23:39 v #30212 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:39 v #30213 > > │ ### read_link
00:23:39 v #30214 > >
00:23:39 v #30215 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:39 v #30216 > > let read_link (path : string) : resultm.result' path_buf stream.io_error =
00:23:39 v #30217 > >     let run loop n error path' =
00:23:39 v #30218 > >         inl name = path' |> get_file_name
00:23:39 v #30219 > >         inl parent = path' |> directory_get_parent |> optionm'.unbox
00:23:39 v #30220 > >         inl error'' = error |> sm'.format
00:23:39 v #30221 > >         match parent with
00:23:39 v #30222 > >         | _ when n >= 11 =>
00:23:39 v #30223 > >             ($'$"file_system.read_link / "' : string)
00:23:39 v #30224 > >             +. $'$"path: {!path} / n: {!n} / path\': {!path'} / name: {!name}"'
00:23:39 v #30225 > >             |> stream.new_io_error
00:23:39 v #30226 > >             |> resultm.err
00:23:39 v #30227 > >         | Some parent when path' <>. "" =>
00:23:39 v #30228 > >             match loop (n + 1) parent |> resultm.map_error' sm'.format |>
00:23:39 v #30229 > > resultm.unbox with
00:23:39 v #30230 > >             | Ok parent' =>
00:23:39 v #30231 > >                 (parent' |> path_buf_display |> convert) </> name
00:23:39 v #30232 > >                 |> sm'.to_std_string
00:23:39 v #30233 > >                 |> new_path_buf
00:23:39 v #30234 > >                 |> resultm.ok''
00:23:39 v #30235 > >             | Error error' =>
00:23:39 v #30236 > >                 ($'$"file_system.read_link / "' : string)
00:23:39 v #30237 > >                 +. $'$"error\': {!error'} / error: {!error''} / name: {!name}"'
00:23:39 v #30238 > >                 |> stream.new_io_error
00:23:39 v #30239 > >                 |> resultm.err
00:23:39 v #30240 > >         | _ =>
00:23:39 v #30241 > >             ($'$"file_system.read_link / run / The file or directory is not a
00:23:39 v #30242 > > reparse point. / "' : string)
00:23:39 v #30243 > >             +. $'$"path: {!path} / error: {!error''} / path\': {!path'} / name:
00:23:39 v #30244 > > {!name}"'
00:23:39 v #30245 > >             |> stream.new_io_error
00:23:39 v #30246 > >             |> resultm.err
00:23:39 v #30247 > >
00:23:39 v #30248 > >     run_target function
00:23:39 v #30249 > >         | Rust _ => fun () =>
00:23:39 v #30250 > >             if path |> directory_exists
00:23:39 v #30251 > >             then !\\(path, $'"std::fs::read_link(&*$0)"')
00:23:39 v #30252 > >             else
00:23:39 v #30253 > >                 let rec loop n path' =
00:23:39 v #30254 > >                     run_target function
00:23:39 v #30255 > >                         | Rust _ => fun () =>
00:23:39 v #30256 > >                             inl result : _ _ stream.io_error = !\\(path',
00:23:39 v #30257 > > $'"std::fs::read_link(&*$0)"')
00:23:39 v #30258 > >                             inl result = result |> resultm.map_error' sm'.format
00:23:39 v #30259 > > |> resultm.unbox
00:23:39 v #30260 > >                             match result with
00:23:39 v #30261 > >                             | Ok x => x |> resultm.ok''
00:23:39 v #30262 > >                             | Error error => path' |> run loop n error
00:23:39 v #30263 > >                         | _ => fun () => null ()
00:23:39 v #30264 > >                 path |> loop 0u8
00:23:39 v #30265 > >         | TypeScript _ => fun () => null ()
00:23:39 v #30266 > >         | Fsharp _ => fun () =>
00:23:39 v #30267 > >             let rec loop n path' =
00:23:39 v #30268 > >                 inl result =
00:23:39 v #30269 > >                     path'
00:23:39 v #30270 > >                     |> directory_info
00:23:39 v #30271 > >                     |> directory_info_attributes
00:23:39 v #30272 > >                     |> file_attributes_has_flag (file_attributes_reparse_point
00:23:39 v #30273 > > ())
00:23:39 v #30274 > >                 if result then
00:23:39 v #30275 > >                     path'
00:23:39 v #30276 > >                     |> file_info
00:23:39 v #30277 > >                     |> file_info_link_target
00:23:39 v #30278 > >                     |> unbox
00:23:39 v #30279 > >                     |> resultm.ok''
00:23:39 v #30280 > >                 else
00:23:39 v #30281 > >                     inl error =
00:23:39 v #30282 > >                         ($'$"file_system.read_link / Fsharp / "' : string)
00:23:39 v #30283 > >                         +. $'$"The file or directory is not a reparse point.
00:23:39 v #30284 > > "'
00:23:39 v #30285 > >                         +. $'$"path: {!path} / result: {!result} / path\':
00:23:39 v #30286 > > {!path'} / n: {!n}"'
00:23:39 v #30287 > >                         |> stream.new_io_error
00:23:39 v #30288 > >                     path' |> run loop n error
00:23:39 v #30289 > >             path |> loop 0u8
00:23:39 v #30290 > >         | _ => fun () => $'Unchecked.defaultof<_>'
00:23:39 v #30291 > >
00:23:39 v #30292 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:39 v #30293 > > │ ### normalize_path
00:23:39 v #30294 > >
00:23:39 v #30295 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:39 v #30296 > > let normalize_path (path : string) : string =
00:23:39 v #30297 > >     if path = ""
00:23:39 v #30298 > >     then ""
00:23:39 v #30299 > >     else
00:23:39 v #30300 > >         inl path =
00:23:39 v #30301 > >             match path |> read_link |> resultm.ok' |> optionm'.unbox with
00:23:39 v #30302 > >             | Some path_buf =>
00:23:39 v #30303 > >                 inl result =
00:23:39 v #30304 > >                     path_buf
00:23:39 v #30305 > >                     |> path_buf_display
00:23:39 v #30306 > >                     |> convert
00:23:39 v #30307 > >                 if result = ""
00:23:39 v #30308 > >                 then path
00:23:39 v #30309 > >                 else result
00:23:39 v #30310 > >             | None => path
00:23:39 v #30311 > >         if path = ""
00:23:39 v #30312 > >         then ""
00:23:39 v #30313 > >         else
00:23:39 v #30314 > >             inl path = path |> sm'.replace_regex @"^\\\\\?\\" ""
00:23:39 v #30315 > >             $'$"{!path.[[0]] |> string |> _.ToLower()}{!path.[[1..]]}"' |>
00:23:39 v #30316 > > sm'.replace "\\" "/"
00:23:39 v #30317 > >
00:23:39 v #30318 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:39 v #30319 > > │ ### get_full_path
00:23:39 v #30320 > >
00:23:39 v #30321 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:39 v #30322 > > let get_full_path (path : string) : string =
00:23:39 v #30323 > >     run_target_args (fun () => path) function
00:23:39 v #30324 > >         | Fsharp (Native) => fun path =>
00:23:39 v #30325 > >             path |> $'System.IO.Path.GetFullPath'
00:23:39 v #30326 > >         | Rust (Native) => fun path =>
00:23:39 v #30327 > >             inl path_buf = path |> sm'.to_std_string |> new_path_buf
00:23:39 v #30328 > >             if path_buf |> path_buf_exists |> not then
00:23:39 v #30329 > >                 inl current_dir = get_current_directory ()
00:23:39 v #30330 > >                 current_dir </> path
00:23:39 v #30331 > >                 |> normalize_path
00:23:39 v #30332 > >                 |> sm'.split "/"
00:23:39 v #30333 > >                 |> fun x =>
00:23:39 v #30334 > >                     ((a x : _ i32 _), (0i32, (a ;[[]] : _ i32 _)))
00:23:39 v #30335 > >                     ||> am.foldBack fun x level, acc =>
00:23:39 v #30336 > >                         match x, level with
00:23:39 v #30337 > >                         | "..", _ => level + 1, acc
00:23:39 v #30338 > >                         | ".", _ => level, acc
00:23:39 v #30339 > >                         | _, 0 when x |> sm'.ends_with ":" => 0, a ;[[
00:23:39 v #30340 > > $'$"{!current_dir.[[0]]}:"' ]] ++ acc
00:23:39 v #30341 > >                         | _, 0 => 0, a ;[[ x ]] ++ acc
00:23:39 v #30342 > >                         | _ => level - 1, acc
00:23:39 v #30343 > >                 |> snd
00:23:39 v #30344 > >                 |> seq.of_array'
00:23:39 v #30345 > >                 |> sm'.concat (directory_separator_char () |> sm'.obj_to_string)
00:23:39 v #30346 > >             else
00:23:39 v #30347 > >                 inl path = !\\(path, $'"std::fs::canonicalize(&*$0)"') :
00:23:39 v #30348 > > resultm.result' path_buf stream.io_error
00:23:39 v #30349 > >                 path
00:23:39 v #30350 > >                 |> resultm.unwrap'
00:23:39 v #30351 > >                 |> path_buf_display
00:23:39 v #30352 > >                 |> sm'.format'
00:23:39 v #30353 > >                 |> sm'.from_std_string
00:23:39 v #30354 > >         | _ => fun _ => null ()
00:23:40 v #30355 > >
00:23:40 v #30356 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:40 v #30357 > > //// test
00:23:40 v #30358 > >
00:23:40 v #30359 > > "."
00:23:40 v #30360 > > |> get_full_path
00:23:40 v #30361 > > |> directory_info
00:23:40 v #30362 > > |> directory_info_name
00:23:40 v #30363 > > |> _assert_eq "spiral"
00:23:40 v #30364 > >
00:23:40 v #30365 > > ── [ 674.87ms - stdout ] ───────────────────────────────────────────────────────
00:23:40 v #30366 > > │ __assert_eq / actual: "spiral" / expected: "spiral"
00:23:40 v #30367 > > │
00:23:40 v #30368 > >
00:23:40 v #30369 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:40 v #30370 > > //// test
00:23:40 v #30371 > >
00:23:40 v #30372 > > "dir/.././._file"
00:23:40 v #30373 > > |> get_full_path
00:23:40 v #30374 > > |> _assert_eq (get_current_directory () </> "._file")
00:23:41 v #30375 > >
00:23:41 v #30376 > > ── [ 599.18ms - stdout ] ───────────────────────────────────────────────────────
00:23:41 v #30377 > > │ __assert_eq / actual:
00:23:41 v #30378 > > "/home/runner/work/polyglot/polyglot/lib/spiral/._file" / expected:
00:23:41 v #30379 > > "/home/runner/work/polyglot/polyglot/lib/spiral/._file"
00:23:41 v #30380 > > │
00:23:41 v #30381 > >
00:23:41 v #30382 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:41 v #30383 > > //// test
00:23:41 v #30384 > > ///! rust -d regex
00:23:41 v #30385 > >
00:23:41 v #30386 > > "."
00:23:41 v #30387 > > |> get_full_path
00:23:41 v #30388 > > |> sm'.to_std_string
00:23:41 v #30389 > > |> new_path_buf
00:23:41 v #30390 > > |> path_buf_file_name
00:23:41 v #30391 > > |> optionm'.unwrap
00:23:41 v #30392 > > |> sm'.from_os_str_ref
00:23:41 v #30393 > > |> _assert_eq "spiral"
00:23:48 v #30394 > >
00:23:48 v #30395 > > ── [ 7.10s - return value ] ────────────────────────────────────────────────────
00:23:48 v #30396 > > │ __assert_eq / actual: "spiral" / expected: "spiral"
00:23:48 v #30397 > > │
00:23:48 v #30398 > >
00:23:48 v #30399 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:48 v #30400 > > //// test
00:23:48 v #30401 > > ///! rust -d regex
00:23:48 v #30402 > >
00:23:48 v #30403 > > "dir/.././._file"
00:23:48 v #30404 > > |> get_full_path
00:23:48 v #30405 > > |> _assert_eq (get_current_directory () </> "._file")
00:23:55 v #30406 > >
00:23:55 v #30407 > > ── [ 7.00s - return value ] ────────────────────────────────────────────────────
00:23:55 v #30408 > > │ __assert_eq / actual:
00:23:55 v #30409 > > "/home/runner/work/polyglot/polyglot/lib/spiral/._file" / expected:
00:23:55 v #30410 > > "/home/runner/work/polyglot/polyglot/lib/spiral/._file"
00:23:55 v #30411 > > │
00:23:55 v #30412 > >
00:23:55 v #30413 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:55 v #30414 > > │ ### standardize_path
00:23:55 v #30415 > >
00:23:55 v #30416 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:55 v #30417 > > let standardize_path path =
00:23:55 v #30418 > >     path |> get_full_path |> normalize_path
00:23:55 v #30419 > >
00:23:55 v #30420 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:55 v #30421 > > │ ### absolute_path
00:23:55 v #30422 > >
00:23:55 v #30423 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:55 v #30424 > > let absolute_path path =
00:23:55 v #30425 > >     inl current_dir = get_current_directory ()
00:23:55 v #30426 > >     current_dir </> path |> standardize_path
00:23:55 v #30427 > >
00:23:55 v #30428 > > ── markdown ────────────────────────────────────────────────────────────────────
00:23:55 v #30429 > > │ ### new_file_uri
00:23:55 v #30430 > >
00:23:55 v #30431 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:55 v #30432 > > inl new_file_uri (path : string) : string =
00:23:55 v #30433 > >     inl path = path |> sm'.trim_start [[ '/' ]]
00:23:55 v #30434 > >     $'$"file:///{!path}"'
00:23:56 v #30435 > >
00:23:56 v #30436 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:56 v #30437 > > //// test
00:23:56 v #30438 > >
00:23:56 v #30439 > > @"\\?\C:\test"
00:23:56 v #30440 > > |> normalize_path
00:23:56 v #30441 > > |> new_file_uri
00:23:56 v #30442 > > |> _assert_eq "file:///c:/test"
00:23:56 v #30443 > >
00:23:56 v #30444 > > ── [ 613.37ms - stdout ] ───────────────────────────────────────────────────────
00:23:56 v #30445 > > │ __assert_eq / actual: "file:///c:/test" / expected:
00:23:56 v #30446 > > "file:///c:/test"
00:23:56 v #30447 > > │
00:23:56 v #30448 > >
00:23:56 v #30449 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:23:56 v #30450 > > //// test
00:23:56 v #30451 > > ///! rust -d regex
00:23:56 v #30452 > >
00:23:56 v #30453 > > @"\\?\C:\test"
00:23:56 v #30454 > > |> normalize_path
00:23:56 v #30455 > > |> new_file_uri
00:23:56 v #30456 > > |> _assert_eq "file:///c:/test"
00:24:03 v #30457 > >
00:24:03 v #30458 > > ── [ 6.79s - return value ] ────────────────────────────────────────────────────
00:24:03 v #30459 > > │ __assert_eq / actual: "file:///c:/test" / expected:
00:24:03 v #30460 > > "file:///c:/test"
00:24:03 v #30461 > > │
00:24:03 v #30462 > >
00:24:03 v #30463 > > ── markdown ────────────────────────────────────────────────────────────────────
00:24:03 v #30464 > > │ ## fsharp
00:24:03 v #30465 > >
00:24:03 v #30466 > > ── markdown ────────────────────────────────────────────────────────────────────
00:24:03 v #30467 > > │ ### file_exists_content_async
00:24:03 v #30468 > >
00:24:03 v #30469 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:03 v #30470 > > let file_exists_content_async path content : async.async bool =
00:24:03 v #30471 > >     run_target function
00:24:03 v #30472 > >         | Fsharp (Native) => fun () =>
00:24:03 v #30473 > >             fun () =>
00:24:03 v #30474 > >                 fix_condition
00:24:03 v #30475 > >                     fun () => path |> file_exists |> not
00:24:03 v #30476 > >                     fun () => false |> return
00:24:03 v #30477 > >                     fun () =>
00:24:03 v #30478 > >                         inl existing_content = path |> read_all_text_async |>
00:24:03 v #30479 > > async.let'
00:24:03 v #30480 > >                         content = existing_content |> return
00:24:03 v #30481 > >             |> async.new_async_unit
00:24:03 v #30482 > >         | _ => fun () => null ()
00:24:03 v #30483 > >
00:24:03 v #30484 > > ── markdown ────────────────────────────────────────────────────────────────────
00:24:03 v #30485 > > │ ### write_all_text_exists_async
00:24:03 v #30486 > >
00:24:03 v #30487 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:03 v #30488 > > let write_all_text_exists_async path contents =
00:24:03 v #30489 > >     fun () =>
00:24:03 v #30490 > >         inl exists' = contents |> file_exists_content_async path |> async.let'
00:24:03 v #30491 > >         if not exists'
00:24:03 v #30492 > >         then contents |> write_all_text_async path |> async.do
00:24:03 v #30493 > >     |> async.new_async
00:24:03 v #30494 > >
00:24:03 v #30495 > > ── markdown ────────────────────────────────────────────────────────────────────
00:24:03 v #30496 > > │ ### delete_directory_async
00:24:03 v #30497 > >
00:24:03 v #30498 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:03 v #30499 > > let delete_directory_async path : _ i64 =
00:24:03 v #30500 > >     let rec loop (retry : i64) =
00:24:03 v #30501 > >         run_target function
00:24:03 v #30502 > >             | Fsharp (Native) => fun () =>
00:24:03 v #30503 > >                 fun () =>
00:24:03 v #30504 > >                     try_unit
00:24:03 v #30505 > >                         fun () =>
00:24:03 v #30506 > >                             path |> directory_delete true
00:24:03 v #30507 > >                             retry |> return
00:24:03 v #30508 > >                         fun ex =>
00:24:03 v #30509 > >                             if retry % 100i64 = 0 then
00:24:03 v #30510 > >                                 trace Debug
00:24:03 v #30511 > >                                     fun () =>
00:24:03 v #30512 > > "file_system.delete_directory_async"
00:24:03 v #30513 > >                                     fun () => {
00:24:03 v #30514 > >                                         ex = ex () |> sm'.format_exception
00:24:03 v #30515 > >                                         path = path |> get_file_name
00:24:03 v #30516 > >                                     }
00:24:03 v #30517 > >                             async.sleep 10i32 |> async.do
00:24:03 v #30518 > >                             loop (retry + 1) |> async.return_await
00:24:03 v #30519 > >                 |> async.new_async
00:24:03 v #30520 > >             | _ => fun () => null ()
00:24:03 v #30521 > >     loop 0
00:24:03 v #30522 > >
00:24:03 v #30523 > > ── markdown ────────────────────────────────────────────────────────────────────
00:24:03 v #30524 > > │ ### trace_file
00:24:03 v #30525 > >
00:24:03 v #30526 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:03 v #30527 > > let rec trace_file text =
00:24:03 v #30528 > >     run_target function
00:24:03 v #30529 > >     | Fsharp (Native) => fun () =>
00:24:03 v #30530 > >         try_unit
00:24:03 v #30531 > >             fun () =>
00:24:03 v #30532 > >                 inl assembly_name = env.get_entry_assembly_name ()
00:24:03 v #30533 > >                 inl guid = date_time.now () |> date_time.new_guid_from_date_time
00:24:03 v #30534 > >                 inl file_name = $'$"{!assembly_name}_{!guid}.txt"'
00:24:03 v #30535 > >
00:24:03 v #30536 > >                 inl workspace_root = get_workspace_root ()
00:24:03 v #30537 > >                 inl trace_dir = workspace_root </> "target/trace"
00:24:03 v #30538 > >                 trace_dir |> create_directory |> ignore
00:24:03 v #30539 > >                 inl path = trace_dir </> file_name
00:24:03 v #30540 > >                 text |> write_all_text_async path |> async.run_synchronously
00:24:03 v #30541 > >             fun ex =>
00:24:03 v #30542 > >                 inl text = $'$"file_system.trace_file / ex: %A{!ex}"'
00:24:03 v #30543 > >                 text |> console.write_line
00:24:03 v #30544 > >                 text |> trace_file
00:24:03 v #30545 > >     | _ => fun () => ()
00:24:04 v #30546 > >
00:24:04 v #30547 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:04 v #30548 > > //// test
00:24:04 v #30549 > >
00:24:04 v #30550 > > inl get_count dir : i64 =
00:24:04 v #30551 > >     inl files = dir |> directory_get_files
00:24:04 v #30552 > >     a files |> am'.length
00:24:04 v #30553 > >
00:24:04 v #30554 > > inl trace_dir = get_workspace_root () </> "target/trace"
00:24:04 v #30555 > > trace_dir |> create_directory |> ignore
00:24:04 v #30556 > >
00:24:04 v #30557 > > inl count = get_count trace_dir
00:24:04 v #30558 > >
00:24:04 v #30559 > > trace_file "test"
00:24:04 v #30560 > >
00:24:04 v #30561 > > get_count trace_dir
00:24:04 v #30562 > > |> _assert_eq (count + 1)
00:24:04 v #30563 > >
00:24:04 v #30564 > > ── [ 809.39ms - stdout ] ───────────────────────────────────────────────────────
00:24:04 v #30565 > > │ __assert_eq / actual: 1L / expected: 1L
00:24:04 v #30566 > > │
00:24:04 v #30567 > >
00:24:04 v #30568 > > ── markdown ────────────────────────────────────────────────────────────────────
00:24:04 v #30569 > > │ ### init_trace_file
00:24:04 v #30570 > >
00:24:04 v #30571 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:04 v #30572 > > inl init_trace_file enabled =
00:24:04 v #30573 > >     inl state_trace_file = get_trace_state_or_init None .trace_file
00:24:04 v #30574 > >     state_trace_file <- if enabled then trace_file else ignore
00:24:05 v #30575 > >
00:24:05 v #30576 > > ── markdown ────────────────────────────────────────────────────────────────────
00:24:05 v #30577 > > │ ## file_system
00:24:05 v #30578 > >
00:24:05 v #30579 > > ── markdown ────────────────────────────────────────────────────────────────────
00:24:05 v #30580 > > │ ### create_dir
00:24:05 v #30581 > >
00:24:05 v #30582 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:05 v #30583 > > let create_dir dir =
00:24:05 v #30584 > >     run_target_args' dir function
00:24:05 v #30585 > >         | Rust (Contract | Wasm) => fun _ => null ()
00:24:05 v #30586 > >         | Rust (Native) => fun dir =>
00:24:05 v #30587 > >             match dir |> create_dir_all |> resultm.map_error' sm'.format' |>
00:24:05 v #30588 > > resultm.unbox with
00:24:05 v #30589 > >             | Ok () =>
00:24:05 v #30590 > >                 trace Verbose
00:24:05 v #30591 > >                     fun () => "file_system.create_dir"
00:24:05 v #30592 > >                     fun () => { dir }
00:24:05 v #30593 > >             | Error error =>
00:24:05 v #30594 > >                 trace Critical
00:24:05 v #30595 > >                     fun () => "file_system.create_dir"
00:24:05 v #30596 > >                     fun () => { dir error }
00:24:05 v #30597 > >             inl disposable : _ () = new_disposable fun () =>
00:24:05 v #30598 > >                 dir
00:24:05 v #30599 > >                 |> directory_delete true
00:24:05 v #30600 > >             disposable
00:24:05 v #30601 > >         | _ => fun dir =>
00:24:05 v #30602 > >             inl directory_info = dir |> create_directory
00:24:05 v #30603 > >             inl exists' = directory_info |> directory_info_exists
00:24:05 v #30604 > >             if not exists' then
00:24:05 v #30605 > >                 inl creation_time = directory_info |>
00:24:05 v #30606 > > directory_info_creation_time
00:24:05 v #30607 > >                 inl result = ($'{| Exists = !exists'; CreationTime =
00:24:05 v #30608 > > !creation_time |}' : infer) |> sm'.format_debug
00:24:05 v #30609 > >                 trace Debug
00:24:05 v #30610 > >                     fun () => "file_system.create_dir"
00:24:05 v #30611 > >                     fun () => { dir result }
00:24:05 v #30612 > >             inl disposable : _ () = new_disposable fun () =>
00:24:05 v #30613 > >                 dir
00:24:05 v #30614 > >                 |> delete_directory_async
00:24:05 v #30615 > >                 |> async.ignore
00:24:05 v #30616 > >                 |> async.run_synchronously
00:24:05 v #30617 > >             disposable
00:24:05 v #30618 > >
00:24:05 v #30619 > > ── markdown ────────────────────────────────────────────────────────────────────
00:24:05 v #30620 > > │ ### create_temp_dir
00:24:05 v #30621 > >
00:24:05 v #30622 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:05 v #30623 > > inl create_temp_dir () =
00:24:05 v #30624 > >     inl dir = create_temp_path ()
00:24:05 v #30625 > >     dir, dir |> create_dir
00:24:05 v #30626 > >
00:24:05 v #30627 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:05 v #30628 > > //// test
00:24:05 v #30629 > > ///! fsharp
00:24:05 v #30630 > > ///! rust -d chrono
00:24:05 v #30631 > >
00:24:05 v #30632 > > inl path, disposable = create_temp_dir ()
00:24:05 v #30633 > > join
00:24:05 v #30634 > >     path
00:24:05 v #30635 > >     |> directory_exists
00:24:05 v #30636 > >     |> _assert_eq true
00:24:05 v #30637 > >     disposable |> use |> ignore
00:24:05 v #30638 > >     path
00:24:05 v #30639 > >     |> directory_exists
00:24:05 v #30640 > >     |> _assert_eq true
00:24:05 v #30641 > > path
00:24:05 v #30642 > > |> directory_exists
00:24:05 v #30643 > > |> _assert_eq false
00:24:14 v #30644 > >
00:24:14 v #30645 > > ── [ 8.79s - return value ] ────────────────────────────────────────────────────
00:24:14 v #30646 > > │
00:24:14 v #30647 > > │ .rs output (rust -d chrono):
00:24:14 v #30648 > > │ 00:00:00 v #1 file_system.create_dir / { dir =
00:24:14 v #30649 > > /tmp/!create_temp_path_/spiral_5bc34408d8dec78c26d2b1cee6dd78760a656d0e627cd5b43
00:24:14 v #30650 > > 902d986cde76d67/20250113-2234-2932-0844-0000000aa567 }
00:24:14 v #30651 > > │ __assert_eq / actual: true / expected: true
00:24:14 v #30652 > > │ __assert_eq / actual: true / expected: true
00:24:14 v #30653 > > │ __assert_eq / actual: false / expected: false
00:24:14 v #30654 > > │
00:24:14 v #30655 > > │
00:24:14 v #30656 > >
00:24:14 v #30657 > > ── [ 8.79s - stdout ] ──────────────────────────────────────────────────────────
00:24:14 v #30658 > > │ .fsx output:
00:24:14 v #30659 > > │ __assert_eq / actual: true / expected: true
00:24:14 v #30660 > > │ __assert_eq / actual: true / expected: true
00:24:14 v #30661 > > │ __assert_eq / actual: false / expected: false
00:24:14 v #30662 > > │
00:24:14 v #30663 > >
00:24:14 v #30664 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:14 v #30665 > > //// test
00:24:14 v #30666 > > //// timeout=30000
00:24:14 v #30667 > >
00:24:14 v #30668 > > inl lock_directory path =
00:24:14 v #30669 > >     fun () =>
00:24:14 v #30670 > >         trace Debug (fun () => "_1") id
00:24:14 v #30671 > >         "0" |> write_all_text_async (path </> "test.txt") |> async.do
00:24:14 v #30672 > >         file_stream
00:24:14 v #30673 > >             (path </> "test.txt")
00:24:14 v #30674 > >             ModeOpen
00:24:14 v #30675 > >             AccessReadWrite
00:24:14 v #30676 > >             ShareNone
00:24:14 v #30677 > >         |> use
00:24:14 v #30678 > >         |> ignore
00:24:14 v #30679 > >         trace Debug (fun () => "_2") id
00:24:14 v #30680 > >         async.sleep 2000 |> async.do
00:24:14 v #30681 > >         trace Debug (fun () => "_3") id
00:24:14 v #30682 > >         () |> return
00:24:14 v #30683 > >     |> async.new_async
00:24:14 v #30684 > >
00:24:14 v #30685 > > inl temp_dir, disposable = create_temp_dir ()
00:24:14 v #30686 > > disposable |> use |> ignore
00:24:14 v #30687 > > inl path = temp_dir </> "test"
00:24:14 v #30688 > >
00:24:14 v #30689 > > fun () =>
00:24:14 v #30690 > >     trace Debug (fun () => "1") id
00:24:14 v #30691 > >     path |> create_directory |> ignore
00:24:14 v #30692 > >     trace Debug (fun () => "2") id
00:24:14 v #30693 > >     inl child = path |> lock_directory |> async.start_child |> async.let'
00:24:14 v #30694 > >     trace Debug (fun () => "3") id
00:24:14 v #30695 > >     async.sleep 60 |> async.do
00:24:14 v #30696 > >     trace Debug (fun () => "4") id
00:24:14 v #30697 > >     inl retries = path |> delete_directory_async |> async.let'
00:24:14 v #30698 > >     trace Debug (fun () => "5") id
00:24:14 v #30699 > >     child |> async.do
00:24:14 v #30700 > >     trace Debug (fun () => "6") id
00:24:14 v #30701 > >     retries |> return
00:24:14 v #30702 > > |> async.new_async_unit
00:24:14 v #30703 > > |> async.run_with_timeout 3000
00:24:14 v #30704 > > |> fun x => x : _ i64
00:24:14 v #30705 > > |> function
00:24:14 v #30706 > >     | Some (retries : i64) =>
00:24:14 v #30707 > >         retries
00:24:14 v #30708 > >         |> _assert_between
00:24:14 v #30709 > >             (if platform.is_windows () then 50 else 0)
00:24:14 v #30710 > >             (if platform.is_windows () then 180 else 0)
00:24:14 v #30711 > >
00:24:14 v #30712 > >         true
00:24:14 v #30713 > >     | _ => false
00:24:14 v #30714 > > |> _assert_eq true
00:24:20 v #30715 > >
00:24:20 v #30716 > > ── [ 6.11s - stdout ] ──────────────────────────────────────────────────────────
00:24:20 v #30717 > > │ 00:00:00 d #1 1
00:24:20 v #30718 > > │ 00:00:00 d #2 2
00:24:20 v #30719 > > │ 00:00:00 d #3 3
00:24:20 v #30720 > > │ 00:00:00 d #4 _1
00:24:20 v #30721 > > │ 00:00:00 d #5 _2
00:24:20 v #30722 > > │ 00:00:00 d #6 4
00:24:20 v #30723 > > │ 00:00:00 d #7 5
00:24:20 v #30724 > > │ 00:00:02 d #8 _3
00:24:20 v #30725 > > │ 00:00:02 d #9 6
00:24:20 v #30726 > > │ __assert_between / actual: 0L / expected: struct (0L, 0L)
00:24:20 v #30727 > > │ __assert_eq / actual: true / expected: true
00:24:20 v #30728 > > │
00:24:20 v #30729 > >
00:24:20 v #30730 > > ── markdown ────────────────────────────────────────────────────────────────────
00:24:20 v #30731 > > │ ### create_temp_dir'
00:24:20 v #30732 > >
00:24:20 v #30733 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:20 v #30734 > > inl create_temp_dir' (hash : string) =
00:24:20 v #30735 > >     inl dir = hash |> guid.hash_guid |> create_temp_path'
00:24:20 v #30736 > >     dir, dir |> create_dir
00:24:20 v #30737 > >
00:24:20 v #30738 > > ── markdown ────────────────────────────────────────────────────────────────────
00:24:20 v #30739 > > │ ### link_directory
00:24:20 v #30740 > >
00:24:20 v #30741 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:20 v #30742 > > let link_directory target_path path =
00:24:20 v #30743 > >     if target_path |> directory_exists |> not
00:24:20 v #30744 > >     then target_path |> create_dir |> ignore
00:24:20 v #30745 > >
00:24:20 v #30746 > >     inl lib_dir_path = path |> directory_get_parent |> optionm'.default_value'
00:24:20 v #30747 > > ""
00:24:20 v #30748 > >     if lib_dir_path |> directory_exists |> not
00:24:20 v #30749 > >     then lib_dir_path |> create_dir |> ignore
00:24:20 v #30750 > >
00:24:20 v #30751 > >     if (path |> directory_exists)
00:24:20 v #30752 > >         && (path |> read_link |> resultm.is_err) then
00:24:20 v #30753 > >         path |> directory_delete true
00:24:20 v #30754 > >
00:24:20 v #30755 > >     if path |> directory_exists |> not then
00:24:20 v #30756 > >         path |> directory_create_symbolic_link target_path
00:24:20 v #30757 > >
00:24:20 v #30758 > > ── markdown ────────────────────────────────────────────────────────────────────
00:24:20 v #30759 > > │ ### link_file
00:24:20 v #30760 > >
00:24:20 v #30761 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:20 v #30762 > > let link_file target_path path =
00:24:20 v #30763 > >     if (path |> file_exists)
00:24:20 v #30764 > >         && (path |> read_link |> resultm.is_err) then
00:24:20 v #30765 > >         path |> file_delete
00:24:20 v #30766 > >
00:24:20 v #30767 > >     if path |> file_exists |> not then
00:24:20 v #30768 > >         path |> file_create_symbolic_link target_path
00:24:21 v #30769 > >
00:24:21 v #30770 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:21 v #30771 > > //// test
00:24:21 v #30772 > > ///! fsharp
00:24:21 v #30773 > > ///! rust -d sha2 regex
00:24:21 v #30774 > >
00:24:21 v #30775 > > inl file_name = "LICENSE"
00:24:21 v #30776 > > inl text = file_name
00:24:21 v #30777 > >
00:24:21 v #30778 > > inl test_hash =
00:24:21 v #30779 > >     (file_name, text)
00:24:21 v #30780 > >     |> sm'.format_debug
00:24:21 v #30781 > >     |> crypto.hash_text
00:24:21 v #30782 > >
00:24:21 v #30783 > > inl workspace_root = get_workspace_root ()
00:24:21 v #30784 > > inl test_dir = workspace_root </> "target/test/file_system" </> test_hash
00:24:21 v #30785 > >
00:24:21 v #30786 > > inl disposable = test_dir |> create_dir
00:24:21 v #30787 > > disposable |> use |> ignore
00:24:21 v #30788 > >
00:24:21 v #30789 > > inl dir_path = test_dir </> "dir1"
00:24:21 v #30790 > >
00:24:21 v #30791 > > if dir_path |> directory_exists
00:24:21 v #30792 > > then dir_path |> directory_delete true
00:24:21 v #30793 > >
00:24:21 v #30794 > > dir_path |> create_dir |> ignore
00:24:21 v #30795 > >
00:24:21 v #30796 > > inl path = dir_path </> file_name
00:24:21 v #30797 > > text |> write_all_text path
00:24:21 v #30798 > >
00:24:21 v #30799 > > inl dir_link_path = test_dir </> "link1"
00:24:21 v #30800 > >
00:24:21 v #30801 > > dir_link_path |> link_directory dir_path
00:24:21 v #30802 > >
00:24:21 v #30803 > > inl link_path = dir_link_path </> file_name
00:24:21 v #30804 > >
00:24:21 v #30805 > > link_path
00:24:21 v #30806 > > |> read_all_text
00:24:21 v #30807 > > |> _assert_eq text
00:24:21 v #30808 > >
00:24:21 v #30809 > > dir_link_path
00:24:21 v #30810 > > |> read_link
00:24:21 v #30811 > > |> resultm.unwrap'
00:24:21 v #30812 > > |> path_buf_display
00:24:21 v #30813 > > |> convert
00:24:21 v #30814 > > |> _assert sm'.ends_with "dir1"
00:24:21 v #30815 > >
00:24:21 v #30816 > > link_path
00:24:21 v #30817 > > |> read_link
00:24:21 v #30818 > > |> resultm.unwrap'
00:24:21 v #30819 > > |> path_buf_display
00:24:21 v #30820 > > |> convert
00:24:21 v #30821 > > |> _assert sm'.ends_with "LICENSE"
00:24:21 v #30822 > >
00:24:21 v #30823 > > inl link_name = "LICENSE_"
00:24:21 v #30824 > >
00:24:21 v #30825 > > inl link_path = dir_path </> link_name
00:24:21 v #30826 > >
00:24:21 v #30827 > > link_path |> link_file path
00:24:21 v #30828 > >
00:24:21 v #30829 > > inl link_path' = dir_link_path </> link_name
00:24:21 v #30830 > >
00:24:21 v #30831 > > link_path'
00:24:21 v #30832 > > |> read_all_text
00:24:21 v #30833 > > |> _assert_eq text
00:24:21 v #30834 > >
00:24:21 v #30835 > > link_path
00:24:21 v #30836 > > |> read_link
00:24:21 v #30837 > > |> resultm.unwrap'
00:24:21 v #30838 > > |> path_buf_display
00:24:21 v #30839 > > |> convert
00:24:21 v #30840 > > |> _assert sm'.ends_with "LICENSE"
00:24:21 v #30841 > >
00:24:21 v #30842 > > link_path'
00:24:21 v #30843 > > |> read_link
00:24:21 v #30844 > > |> resultm.unwrap'
00:24:21 v #30845 > > |> path_buf_display
00:24:21 v #30846 > > |> convert
00:24:21 v #30847 > > |> _assert sm'.ends_with "LICENSE"
00:24:31 v #30848 > >
00:24:31 v #30849 > > ── [ 10.17s - return value ] ───────────────────────────────────────────────────
00:24:31 v #30850 > > │
00:24:31 v #30851 > > │ .rs output (rust -d sha2 regex):
00:24:31 v #30852 > > │ 00:00:00 v #1 file_system.create_dir / { dir =
00:24:31 v #30853 > > /home/runner/work/polyglot/polyglot/target/test/file_system/17e16cea7984b0e6f403
00:24:31 v #30854 > > 259e33e49592eda85aedd790ed910e9f3e619d9cd257 }
00:24:31 v #30855 > > │ 00:00:00 v #2 file_system.create_dir / { dir =
00:24:31 v #30856 > > /home/runner/work/polyglot/polyglot/target/test/file_system/17e16cea7984b0e6f403
00:24:31 v #30857 > > 259e33e49592eda85aedd790ed910e9f3e619d9cd257/dir1 }
00:24:31 v #30858 > > │ __assert_eq / actual: "LICENSE" / expected: "LICENSE"
00:24:31 v #30859 > > │ __assert / actual: "dir1" / expected:
00:24:31 v #30860 > > "/home/runner/work/polyglot/polyglot/target/test/file_system/17e16cea7984b0e6f40
00:24:31 v #30861 > > 3259e33e49592eda85aedd790ed910e9f3e619d9cd257/dir1"
00:24:31 v #30862 > > │ __assert / actual: "LICENSE" / expected:
00:24:31 v #30863 > > "/home/runner/work/polyglot/polyglot/target/test/file_system/17e16cea7984b0e6f40
00:24:31 v #30864 > > 3259e33e49592eda85aedd790ed910e9f3e619d9cd257/dir1/LICENSE"
00:24:31 v #30865 > > │ __assert_eq / actual: "LICENSE" / expected: "LICENSE"
00:24:31 v #30866 > > │ __assert / actual: "LICENSE" / expected:
00:24:31 v #30867 > > "/home/runner/work/polyglot/polyglot/target/test/file_system/17e16cea7984b0e6f40
00:24:31 v #30868 > > 3259e33e49592eda85aedd790ed910e9f3e619d9cd257/dir1/LICENSE"
00:24:31 v #30869 > > │ __assert / actual: "LICENSE" / expected:
00:24:31 v #30870 > > "/home/runner/work/polyglot/polyglot/target/test/file_system/17e16cea7984b0e6f40
00:24:31 v #30871 > > 3259e33e49592eda85aedd790ed910e9f3e619d9cd257/dir1/LICENSE"
00:24:31 v #30872 > > │
00:24:31 v #30873 > > │
00:24:31 v #30874 > >
00:24:31 v #30875 > > ── [ 10.17s - stdout ] ─────────────────────────────────────────────────────────
00:24:31 v #30876 > > │ .fsx output:
00:24:31 v #30877 > > │ __assert_eq / actual: "LICENSE" / expected: "LICENSE"
00:24:31 v #30878 > > │ __assert / actual: "dir1" / expected:
00:24:31 v #30879 > > "/home/runner/work/polyglot/polyglot/target/test/file_system/8f260c25ec3f6eaaf0d
00:24:31 v #30880 > > 0d1b67ed9c47873a182ca04606835404e641a952871da/dir1"
00:24:31 v #30881 > > │ __assert / actual: "LICENSE" / expected:
00:24:31 v #30882 > > "/home/runner/work/polyglot/polyglot/target/test/file_system/8f260c25ec3f6eaaf0d
00:24:31 v #30883 > > 0d1b67ed9c47873a182ca04606835404e641a952871da/dir1/LICENSE"
00:24:31 v #30884 > > │ __assert_eq / actual: "LICENSE" / expected: "LICENSE"
00:24:31 v #30885 > > │ __assert / actual: "LICENSE" / expected:
00:24:31 v #30886 > > "/home/runner/work/polyglot/polyglot/target/test/file_system/8f260c25ec3f6eaaf0d
00:24:31 v #30887 > > 0d1b67ed9c47873a182ca04606835404e641a952871da/dir1/LICENSE"
00:24:31 v #30888 > > │ __assert / actual: "LICENSE" / expected:
00:24:31 v #30889 > > "/home/runner/work/polyglot/polyglot/target/test/file_system/8f260c25ec3f6eaaf0d
00:24:31 v #30890 > > 0d1b67ed9c47873a182ca04606835404e641a952871da/dir1/LICENSE"
00:24:31 v #30891 > > │
00:24:31 v #30892 > >
00:24:31 v #30893 > > ── markdown ────────────────────────────────────────────────────────────────────
00:24:31 v #30894 > > │ ## rust
00:24:31 v #30895 > >
00:24:31 v #30896 > > ── markdown ────────────────────────────────────────────────────────────────────
00:24:31 v #30897 > > │ ### file_exists_content
00:24:31 v #30898 > >
00:24:31 v #30899 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:31 v #30900 > > let file_exists_content path content : bool =
00:24:31 v #30901 > >     run_target function
00:24:31 v #30902 > >         | Rust (Native) => fun () =>
00:24:31 v #30903 > >             if path |> file_exists |> not
00:24:31 v #30904 > >             then false
00:24:31 v #30905 > >             else
00:24:31 v #30906 > >                 inl existing_content = path |> read_all_text
00:24:31 v #30907 > >                 content = existing_content
00:24:31 v #30908 > >         | _ => fun () => null ()
00:24:31 v #30909 > >
00:24:31 v #30910 > > ── markdown ────────────────────────────────────────────────────────────────────
00:24:31 v #30911 > > │ ### write_all_text_exists
00:24:31 v #30912 > >
00:24:31 v #30913 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:31 v #30914 > > let write_all_text_exists path contents =
00:24:31 v #30915 > >     inl exists' = contents |> file_exists_content path
00:24:31 v #30916 > >     if not exists' then
00:24:31 v #30917 > >         inl dir = path |> directory_get_parent |> optionm'.default_value' ""
00:24:31 v #30918 > >         if dir |> directory_exists |> not
00:24:31 v #30919 > >         then dir |> create_dir |> ignore
00:24:31 v #30920 > >         contents |> write_all_text path
00:24:31 v #30921 > >
00:24:31 v #30922 > > ── markdown ────────────────────────────────────────────────────────────────────
00:24:31 v #30923 > > │ ## fsharp
00:24:31 v #30924 > >
00:24:31 v #30925 > > ── markdown ────────────────────────────────────────────────────────────────────
00:24:31 v #30926 > > │ ### wait_for_file_access
00:24:31 v #30927 > >
00:24:31 v #30928 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:31 v #30929 > > let wait_for_file_access access path =
00:24:31 v #30930 > >     let rec loop (retry : i64) : _ i64 =
00:24:31 v #30931 > >         run_target function
00:24:31 v #30932 > >             | Fsharp (Native) => fun () =>
00:24:31 v #30933 > >                 inl file_access, file_share =
00:24:31 v #30934 > >                     access
00:24:31 v #30935 > >                     |> optionm'.default_value (AccessReadWrite, ShareRead)
00:24:31 v #30936 > >                 fun () =>
00:24:31 v #30937 > >                     try_unit
00:24:31 v #30938 > >                         fun () =>
00:24:31 v #30939 > >                             file_stream
00:24:31 v #30940 > >                                 path
00:24:31 v #30941 > >                                 ModeOpen
00:24:31 v #30942 > >                                 file_access
00:24:31 v #30943 > >                                 file_share
00:24:31 v #30944 > >                             |> use
00:24:31 v #30945 > >                             |> ignore
00:24:31 v #30946 > >                             retry |> return
00:24:31 v #30947 > >                         fun ex =>
00:24:31 v #30948 > >                             if retry > 0 && retry % 100i64 = 0 then
00:24:31 v #30949 > >                                 trace Debug
00:24:31 v #30950 > >                                     fun () => "file_system.wait_for_file_access"
00:24:31 v #30951 > >                                     fun () => {
00:24:31 v #30952 > >                                         path = path |> get_file_name
00:24:31 v #30953 > >                                         retry
00:24:31 v #30954 > >                                         ex = ex () |> sm'.format_exception
00:24:31 v #30955 > >                                     }
00:24:31 v #30956 > >                             async.sleep 10i32 |> async.do
00:24:31 v #30957 > >                             loop (retry + 1) |> async.return_await
00:24:31 v #30958 > >                 |> async.new_async
00:24:31 v #30959 > >             | _ => fun () => null ()
00:24:31 v #30960 > >     loop 0
00:24:31 v #30961 > >
00:24:31 v #30962 > > ── markdown ────────────────────────────────────────────────────────────────────
00:24:31 v #30963 > > │ ### wait_for_file_access_read
00:24:31 v #30964 > >
00:24:31 v #30965 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:31 v #30966 > > let wait_for_file_access_read path =
00:24:31 v #30967 > >     path
00:24:31 v #30968 > >     |> wait_for_file_access (Some (
00:24:31 v #30969 > >         AccessRead,
00:24:31 v #30970 > >         ShareRead
00:24:31 v #30971 > >     ))
00:24:32 v #30972 > >
00:24:32 v #30973 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:32 v #30974 > > //// test
00:24:32 v #30975 > > //// timeout=30000
00:24:32 v #30976 > >
00:24:32 v #30977 > > inl lock_file path =
00:24:32 v #30978 > >     fun () =>
00:24:32 v #30979 > >         trace Debug (fun () => "_1") id
00:24:32 v #30980 > >         inl stream : file_stream' =
00:24:32 v #30981 > >             file_stream
00:24:32 v #30982 > >                 path
00:24:32 v #30983 > >                 ModeOpen
00:24:32 v #30984 > >                 AccessReadWrite
00:24:32 v #30985 > >                 ShareNone
00:24:32 v #30986 > >             |> use
00:24:32 v #30987 > >         trace Debug (fun () => "_2") id
00:24:32 v #30988 > >         async.sleep 2000 |> async.do
00:24:32 v #30989 > >         trace Debug (fun () => "_3") id
00:24:32 v #30990 > >         ($'!stream.Seek (0L, System.IO.SeekOrigin.Begin)' : i64) |> ignore
00:24:32 v #30991 > >         trace Debug (fun () => "_4") id
00:24:32 v #30992 > >         $'!stream.WriteByte' 49u8
00:24:32 v #30993 > >         trace Debug (fun () => "_5") id
00:24:32 v #30994 > >         stream |> $'_.Flush()'
00:24:32 v #30995 > >         trace Debug (fun () => "_6") id
00:24:32 v #30996 > >     |> async.new_async
00:24:32 v #30997 > >
00:24:32 v #30998 > > inl file_name = "test.txt"
00:24:32 v #30999 > > inl text = "0"
00:24:32 v #31000 > >
00:24:32 v #31001 > > inl temp_dir, disposable =
00:24:32 v #31002 > >     (file_name, text)
00:24:32 v #31003 > >     |> sm'.format_debug
00:24:32 v #31004 > >     |> crypto.hash_text
00:24:32 v #31005 > >     |> create_temp_dir'
00:24:32 v #31006 > > disposable |> use |> ignore
00:24:32 v #31007 > > inl path = temp_dir </> file_name
00:24:32 v #31008 > >
00:24:32 v #31009 > > fun () =>
00:24:32 v #31010 > >     trace Debug (fun () => "1") id
00:24:32 v #31011 > >     text |> write_all_text_async path |> async.do
00:24:32 v #31012 > >     trace Debug (fun () => "2") id
00:24:32 v #31013 > >     inl child = path |> lock_file |> async.start_child |> async.let'
00:24:32 v #31014 > >     trace Debug (fun () => "3") id
00:24:32 v #31015 > >     async.sleep 1 |> async.do
00:24:32 v #31016 > >     trace Debug (fun () => "4") id
00:24:32 v #31017 > >     inl retries = path |> wait_for_file_access None |> async.let'
00:24:32 v #31018 > >     trace Debug (fun () => "5") id
00:24:32 v #31019 > >     inl text = path |> read_all_text_async |> async.let'
00:24:32 v #31020 > >     trace Debug (fun () => "6") id
00:24:32 v #31021 > >     child |> async.do
00:24:32 v #31022 > >     trace Debug (fun () => "7") id
00:24:32 v #31023 > >     (retries, text) |> return
00:24:32 v #31024 > > |> async.new_async_unit
00:24:32 v #31025 > > |> async.run_with_timeout 3000
00:24:32 v #31026 > > |> function
00:24:32 v #31027 > >     | Some ((retries : i64), text) =>
00:24:32 v #31028 > >         retries
00:24:32 v #31029 > >         |> _assert_between
00:24:32 v #31030 > >             (if platform.is_windows () then 50 else 100)
00:24:32 v #31031 > >             (if platform.is_windows () then 180 else 200)
00:24:32 v #31032 > >
00:24:32 v #31033 > >         text |> _assert_eq (join "1")
00:24:32 v #31034 > >
00:24:32 v #31035 > >         true
00:24:32 v #31036 > >     | _ => false
00:24:32 v #31037 > > |> _assert_eq true
00:24:41 v #31038 > >
00:24:41 v #31039 > > ── [ 9.00s - stdout ] ──────────────────────────────────────────────────────────
00:24:41 v #31040 > > │ 00:00:00 d #1 1
00:24:41 v #31041 > > │ 00:00:00 d #2 2
00:24:41 v #31042 > > │ 00:00:00 d #3 3
00:24:41 v #31043 > > │ 00:00:00 d #4 _1
00:24:41 v #31044 > > │ 00:00:00 d #5 _2
00:24:41 v #31045 > > │ 00:00:00 d #6 4
00:24:41 v #31046 > > │ 00:00:01 d #7 file_system.wait_for_file_access / { path
00:24:41 v #31047 > > = test.txt; retry = 100; ex = System.IO.IOException: The process cannot access
00:24:41 v #31048 > > the file
00:24:41 v #31049 > > '/tmp/!create_temp_path_/dotnet-repl/613830ed-016e-d959-8d21-02dc1c63c252/test.t
00:24:41 v #31050 > > xt' because it is being used by another process. }
00:24:41 v #31051 > > │ 00:00:02 d #8 _3
00:24:41 v #31052 > > │ 00:00:02 d #9 _4
00:24:41 v #31053 > > │ 00:00:02 d #10 _5
00:24:41 v #31054 > > │ 00:00:02 d #11 _6
00:24:41 v #31055 > > │ 00:00:02 d #12 5
00:24:41 v #31056 > > │ 00:00:02 d #13 6
00:24:41 v #31057 > > │ 00:00:02 d #14 7
00:24:41 v #31058 > > │ __assert_between / actual: 196L / expected: struct (100L,
00:24:41 v #31059 > > 200L)
00:24:41 v #31060 > > │ __assert_eq / actual: "1" / expected: "1"
00:24:41 v #31061 > > │ __assert_eq / actual: true / expected: true
00:24:41 v #31062 > > │
00:24:41 v #31063 > >
00:24:41 v #31064 > > ── markdown ────────────────────────────────────────────────────────────────────
00:24:41 v #31065 > > │ ### read_all_text_retry_async
00:24:41 v #31066 > >
00:24:41 v #31067 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:41 v #31068 > > let read_all_text_retry_async full_path : async.async (optionm'.option' string)
00:24:41 v #31069 > > =
00:24:41 v #31070 > >     let rec loop (retry : i64) =
00:24:41 v #31071 > >         fun () =>
00:24:41 v #31072 > >             try_unit
00:24:41 v #31073 > >                 fun () =>
00:24:41 v #31074 > >                     if retry > 0
00:24:41 v #31075 > >                     then
00:24:41 v #31076 > >                         full_path
00:24:41 v #31077 > >                         |> wait_for_file_access_read
00:24:41 v #31078 > >                         |> async.run_with_timeout_async 1000
00:24:41 v #31079 > >                         |> async.ignore
00:24:41 v #31080 > >                         |> async.do
00:24:41 v #31081 > >                     full_path |> read_all_text_async |> async.map (Some >>
00:24:41 v #31082 > > optionm'.box) |> async.return_await
00:24:41 v #31083 > >                 fun ex =>
00:24:41 v #31084 > >                     fix_condition
00:24:41 v #31085 > >                         fun () => retry <> 0
00:24:41 v #31086 > >                         fun () =>
00:24:41 v #31087 > >                             trace Debug
00:24:41 v #31088 > >                                 fun () =>
00:24:41 v #31089 > > "file_system.read_all_text_retry_async"
00:24:41 v #31090 > >                                 fun () => {
00:24:41 v #31091 > >                                     retry
00:24:41 v #31092 > >                                     ex = ex () |> sm'.format_exception
00:24:41 v #31093 > >                                 }
00:24:41 v #31094 > >                             (None : _ string) |> optionm'.box |> return
00:24:41 v #31095 > >                         fun () =>
00:24:41 v #31096 > >                             loop (retry + 1) |> async.return_await
00:24:41 v #31097 > >         |> async.new_async
00:24:41 v #31098 > >     loop 0
00:24:41 v #31099 > >
00:24:41 v #31100 > > ── markdown ────────────────────────────────────────────────────────────────────
00:24:41 v #31101 > > │ ### move_file_async
00:24:41 v #31102 > >
00:24:41 v #31103 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:41 v #31104 > > let move_file_async new_path old_path : _ i64 =
00:24:41 v #31105 > >     let rec loop (retry : i64) =
00:24:41 v #31106 > >         run_target function
00:24:41 v #31107 > >             | Fsharp (Native) => fun () =>
00:24:41 v #31108 > >                 fun () =>
00:24:41 v #31109 > >                     try_unit
00:24:41 v #31110 > >                         fun () =>
00:24:41 v #31111 > >                             old_path |> file_move new_path
00:24:41 v #31112 > >                             return retry
00:24:41 v #31113 > >                         fun ex =>
00:24:41 v #31114 > >                             if retry % 100 = 0 then
00:24:41 v #31115 > >                                 trace Warning
00:24:41 v #31116 > >                                     fun () => "move_file_async"
00:24:41 v #31117 > >                                     fun () => {
00:24:41 v #31118 > >                                         old_path = old_path |> get_file_name
00:24:41 v #31119 > >                                         new_path = new_path |> get_file_name
00:24:41 v #31120 > >                                         ex = ex () |> sm'.format_exception
00:24:41 v #31121 > >                                     }
00:24:41 v #31122 > >                             async.sleep 10 |> async.do
00:24:41 v #31123 > >                             loop (retry + 1) |> async.return_await
00:24:41 v #31124 > >                 |> async.new_async_unit
00:24:41 v #31125 > >             | _ => fun () => null ()
00:24:41 v #31126 > >     loop 0
00:24:41 v #31127 > >
00:24:41 v #31128 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:41 v #31129 > > //// test
00:24:41 v #31130 > > //// timeout=30000
00:24:41 v #31131 > >
00:24:41 v #31132 > > inl lock_file path =
00:24:41 v #31133 > >     fun () =>
00:24:41 v #31134 > >         trace Debug (fun () => "_1") id
00:24:41 v #31135 > >         file_stream
00:24:41 v #31136 > >             path
00:24:41 v #31137 > >             ModeOpen
00:24:41 v #31138 > >             AccessReadWrite
00:24:41 v #31139 > >             ShareNone
00:24:41 v #31140 > >         |> use
00:24:41 v #31141 > >         |> ignore
00:24:41 v #31142 > >         trace Debug (fun () => "_2") id
00:24:41 v #31143 > >         async.sleep 2000 |> async.do
00:24:41 v #31144 > >         trace Debug (fun () => "_3") id
00:24:41 v #31145 > >     |> async.new_async
00:24:41 v #31146 > >
00:24:41 v #31147 > > fun () =>
00:24:41 v #31148 > >     inl file_name = "test.txt"
00:24:41 v #31149 > >     inl text = "0"
00:24:41 v #31150 > >
00:24:41 v #31151 > >     inl temp_dir, disposable =
00:24:41 v #31152 > >         (file_name, text)
00:24:41 v #31153 > >         |> sm'.format_debug
00:24:41 v #31154 > >         |> crypto.hash_text
00:24:41 v #31155 > >         |> create_temp_dir'
00:24:41 v #31156 > >     disposable |> use |> ignore
00:24:41 v #31157 > >     let path = temp_dir </> file_name
00:24:41 v #31158 > >     let new_path = temp_dir </> "test2.txt"
00:24:41 v #31159 > >
00:24:41 v #31160 > >     trace Debug (fun () => "1") id
00:24:41 v #31161 > >     text |> write_all_text_async path |> async.do
00:24:41 v #31162 > >     trace Debug (fun () => "2") id
00:24:41 v #31163 > >     inl child = lock_file path |> async.start_child |> async.let'
00:24:41 v #31164 > >     trace Debug (fun () => "3") id
00:24:41 v #31165 > >     async.sleep 1 |> async.do
00:24:41 v #31166 > >     trace Debug (fun () => "4") id
00:24:41 v #31167 > >     inl retries1 = path |> move_file_async new_path |> async.let'
00:24:41 v #31168 > >     trace Debug (fun () => "5") id
00:24:41 v #31169 > >     inl retries2 = new_path |> wait_for_file_access None |> async.let'
00:24:41 v #31170 > >     trace Debug (fun () => "6") id
00:24:41 v #31171 > >     inl text = new_path |> read_all_text_async |> async.let'
00:24:41 v #31172 > >     trace Debug (fun () => "7") id
00:24:41 v #31173 > >     child |> async.do
00:24:41 v #31174 > >     trace Debug (fun () => "8") id
00:24:41 v #31175 > >     (retries1, retries2, text) |> return
00:24:41 v #31176 > > |> async.new_async_unit
00:24:41 v #31177 > > |> async.run_with_timeout 3000
00:24:41 v #31178 > > |> function
00:24:41 v #31179 > >     | Some (retries1, retries2, text) =>
00:24:41 v #31180 > >         retries1
00:24:41 v #31181 > >         |> _assert_between
00:24:41 v #31182 > >             (if platform.is_windows () then 50i64 else 0)
00:24:41 v #31183 > >             (if platform.is_windows () then 200 else 0)
00:24:41 v #31184 > >
00:24:41 v #31185 > >         retries2
00:24:41 v #31186 > >         |> _assert_between
00:24:41 v #31187 > >             (if platform.is_windows () then 0i64 else 100)
00:24:41 v #31188 > >             (if platform.is_windows () then 0 else 200)
00:24:41 v #31189 > >
00:24:41 v #31190 > >         text |> _assert_eq (join "0")
00:24:41 v #31191 > >
00:24:41 v #31192 > >         true
00:24:41 v #31193 > >     | _ => false
00:24:41 v #31194 > > |> _assert_eq true
00:24:52 v #31195 > >
00:24:52 v #31196 > > ── [ 10.63s - stdout ] ─────────────────────────────────────────────────────────
00:24:52 v #31197 > > │ 00:00:00 d #1 1
00:24:52 v #31198 > > │ 00:00:00 d #2 2
00:24:52 v #31199 > > │ 00:00:00 d #3 3
00:24:52 v #31200 > > │ 00:00:00 d #4 _1
00:24:52 v #31201 > > │ 00:00:00 d #5 _2
00:24:52 v #31202 > > │ 00:00:00 d #6 4
00:24:52 v #31203 > > │ 00:00:00 d #7 5
00:24:52 v #31204 > > │ 00:00:01 d #8 file_system.wait_for_file_access / { path
00:24:52 v #31205 > > = test2.txt; retry = 100; ex = System.IO.IOException: The process cannot access
00:24:52 v #31206 > > the file
00:24:52 v #31207 > > '/tmp/!create_temp_path_/dotnet-repl/613830ed-016e-d959-8d21-02dc1c63c252/test2.
00:24:52 v #31208 > > txt' because it is being used by another process. }
00:24:52 v #31209 > > │ 00:00:02 d #9 _3
00:24:52 v #31210 > > │ 00:00:02 d #10 6
00:24:52 v #31211 > > │ 00:00:02 d #11 7
00:24:52 v #31212 > > │ 00:00:02 d #12 8
00:24:52 v #31213 > > │ __assert_between / actual: 0L / expected: struct (0L, 0L)
00:24:52 v #31214 > > │ __assert_between / actual: 196L / expected: struct (100L,
00:24:52 v #31215 > > 200L)
00:24:52 v #31216 > > │ __assert_eq / actual: "0" / expected: "0"
00:24:52 v #31217 > > │ __assert_eq / actual: true / expected: true
00:24:52 v #31218 > > │
00:24:52 v #31219 > >
00:24:52 v #31220 > > ── markdown ────────────────────────────────────────────────────────────────────
00:24:52 v #31221 > > │ ### delete_file_async
00:24:52 v #31222 > >
00:24:52 v #31223 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:52 v #31224 > > let delete_file_async path : _ i64 =
00:24:52 v #31225 > >     let rec loop (retry : i64) =
00:24:52 v #31226 > >         run_target function
00:24:52 v #31227 > >             | Fsharp (Native) => fun () =>
00:24:52 v #31228 > >                 fun () =>
00:24:52 v #31229 > >                     try_unit
00:24:52 v #31230 > >                         fun () =>
00:24:52 v #31231 > >                             path |> file_delete
00:24:52 v #31232 > >                             return retry
00:24:52 v #31233 > >                         fun ex =>
00:24:52 v #31234 > >                             if retry % 100 = 0 then
00:24:52 v #31235 > >                                 trace Warning
00:24:52 v #31236 > >                                     fun () => "delete_file_async"
00:24:52 v #31237 > >                                     fun () => {
00:24:52 v #31238 > >                                         path = path |> get_file_name
00:24:52 v #31239 > >                                         ex = ex () |> sm'.format_exception
00:24:52 v #31240 > >                                     }
00:24:52 v #31241 > >                             async.sleep 10 |> async.do
00:24:52 v #31242 > >                             loop (retry + 1) |> async.return_await
00:24:52 v #31243 > >                 |> async.new_async
00:24:52 v #31244 > >             | _ => fun () => null ()
00:24:52 v #31245 > >     loop 0
00:24:52 v #31246 > >
00:24:52 v #31247 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:24:52 v #31248 > > //// test
00:24:52 v #31249 > > //// timeout=30000
00:24:52 v #31250 > >
00:24:52 v #31251 > > inl lock_file path =
00:24:52 v #31252 > >     fun () =>
00:24:52 v #31253 > >         trace Debug (fun () => "_1") id
00:24:52 v #31254 > >         file_stream
00:24:52 v #31255 > >             path
00:24:52 v #31256 > >             ModeOpen
00:24:52 v #31257 > >             AccessReadWrite
00:24:52 v #31258 > >             ShareNone
00:24:52 v #31259 > >         |> use
00:24:52 v #31260 > >         |> ignore
00:24:52 v #31261 > >         trace Debug (fun () => "_2") id
00:24:52 v #31262 > >         async.sleep 2000 |> async.do
00:24:52 v #31263 > >         trace Debug (fun () => "_3") id
00:24:52 v #31264 > >     |> async.new_async
00:24:52 v #31265 > >
00:24:52 v #31266 > > fun () =>
00:24:52 v #31267 > >     inl file_name = "test.txt"
00:24:52 v #31268 > >     inl text = "0"
00:24:52 v #31269 > >
00:24:52 v #31270 > >     inl temp_dir, disposable =
00:24:52 v #31271 > >         (file_name, text)
00:24:52 v #31272 > >         |> sm'.format_debug
00:24:52 v #31273 > >         |> crypto.hash_text
00:24:52 v #31274 > >         |> create_temp_dir'
00:24:52 v #31275 > >     disposable |> use |> ignore
00:24:52 v #31276 > >     inl path = temp_dir </> file_name
00:24:52 v #31277 > >
00:24:52 v #31278 > >     trace Debug (fun () => "1") id
00:24:52 v #31279 > >     text |> write_all_text_async path |> async.do
00:24:52 v #31280 > >     trace Debug (fun () => "2") id
00:24:52 v #31281 > >     inl child = lock_file path |> async.start_child |> async.let'
00:24:52 v #31282 > >     trace Debug (fun () => "3") id
00:24:52 v #31283 > >     async.sleep 1 |> async.do
00:24:52 v #31284 > >     trace Debug (fun () => "4") id
00:24:52 v #31285 > >     inl retries = delete_file_async path |> async.let'
00:24:52 v #31286 > >     trace Debug (fun () => "5") id
00:24:52 v #31287 > >     child |> async.do
00:24:52 v #31288 > >     trace Debug (fun () => "6") id
00:24:52 v #31289 > >     return retries
00:24:52 v #31290 > > |> async.new_async_unit
00:24:52 v #31291 > > |> async.run_with_timeout 3000
00:24:52 v #31292 > > |> function
00:24:52 v #31293 > >     | Some (retries : i64) =>
00:24:52 v #31294 > >         retries
00:24:52 v #31295 > >         |> _assert_between
00:24:52 v #31296 > >             (if platform.is_windows () then 50 else 0)
00:24:52 v #31297 > >             (if platform.is_windows () then 180 else 0)
00:24:52 v #31298 > >
00:24:52 v #31299 > >         true
00:24:52 v #31300 > >     | _ => false
00:24:52 v #31301 > > |> _assert_eq true
00:25:01 v #31302 > >
00:25:01 v #31303 > > ── [ 9.22s - stdout ] ──────────────────────────────────────────────────────────
00:25:01 v #31304 > > │ 00:00:00 d #1 1
00:25:01 v #31305 > > │ 00:00:00 d #2 2
00:25:01 v #31306 > > │ 00:00:00 d #3 3
00:25:01 v #31307 > > │ 00:00:00 d #4 _1
00:25:01 v #31308 > > │ 00:00:00 d #5 _2
00:25:01 v #31309 > > │ 00:00:00 d #6 4
00:25:01 v #31310 > > │ 00:00:00 d #7 5
00:25:01 v #31311 > > │ 00:00:02 d #8 _3
00:25:01 v #31312 > > │ 00:00:02 d #9 6
00:25:01 v #31313 > > │ __assert_between / actual: 0L / expected: struct (0L, 0L)
00:25:01 v #31314 > > │ __assert_eq / actual: true / expected: true
00:25:01 v #31315 > > │
00:25:01 v #31316 > >
00:25:01 v #31317 > > ── markdown ────────────────────────────────────────────────────────────────────
00:25:01 v #31318 > > │ ## main
00:25:01 v #31319 > >
00:25:01 v #31320 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:01 v #31321 > > inl main () =
00:25:01 v #31322 > >     init_trace_state None
00:25:01 v #31323 > >     $'let delete_directory_async x = !delete_directory_async x' : ()
00:25:01 v #31324 > >     $'let wait_for_file_access x = !wait_for_file_access x' : ()
00:25:01 v #31325 > >     $'let wait_for_file_access_read x = !wait_for_file_access_read x' : ()
00:25:01 v #31326 > >     $'let read_all_text_async x = !read_all_text_async x' : ()
00:25:01 v #31327 > >     $'let file_exists_content x = !file_exists_content x' : ()
00:25:01 v #31328 > >     $'let write_all_text_async x = !write_all_text_async x' : ()
00:25:01 v #31329 > >     $'let write_all_text_exists x = !write_all_text_exists_async x' : ()
00:25:01 v #31330 > >     $'let delete_file_async x = !delete_file_async x' : ()
00:25:01 v #31331 > >     $'let move_file_async x = !move_file_async x' : ()
00:25:01 v #31332 > >     $'let read_all_text_retry_async x = !read_all_text_retry_async x' : ()
00:25:01 v #31333 > >     $'let create_temp_path () = !create_temp_path ()' : ()
00:25:01 v #31334 > >     $'let create_temp_dir () = !create_temp_dir ()' : ()
00:25:01 v #31335 > >     $'let create_temp_dir\' x = !create_temp_dir' x' : ()
00:25:01 v #31336 > >     $'let get_source_directory () = !get_source_directory ()' : ()
00:25:01 v #31337 > >     $'let normalize_path x = !normalize_path x' : ()
00:25:01 v #31338 > >     $'let new_file_uri x = !new_file_uri x' : ()
00:25:01 v #31339 > >     $'let get_workspace_root () = !get_workspace_root ()' : ()
00:25:01 v #31340 > >     $'let trace_file x = !trace_file x' : ()
00:25:01 v #31341 > >     $'let init_trace_file x = !init_trace_file x' : ()
00:25:01 v #31342 > >     $'let link_directory x = !link_directory x' : ()
00:25:01 v #31343 > >     inl combine x = (</>) x
00:25:01 v #31344 > >     $'let (</>) x = !combine x' : ()
00:25:11 v #31345 > 00:02:03 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 90508 }
00:25:11 v #31346 > 00:02:03 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/file_system.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/file_system.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:25:11 v #31347 > 00:02:03 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/file_system.dib.ipynb to html
00:25:11 v #31348 > 00:02:03 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:25:11 v #31349 > 00:02:03 v #7 !   validate(nb)
00:25:12 v #31350 > 00:02:04 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:25:12 v #31351 > 00:02:04 v #9 !   return _pygments_highlight(
00:25:13 v #31352 > 00:02:05 v #10 ! [NbConvertApp] Writing 631710 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/file_system.dib.html
00:25:13 v #31353 > 00:02:05 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 906 }
00:25:13 v #31354 > 00:02:05 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 906 }
00:25:13 v #31355 > 00:02:05 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/file_system.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/file_system.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:25:13 v #31356 > 00:02:06 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:25:13 v #31357 > 00:02:06 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:25:13 v #31358 > 00:02:06 d #16 spiral.run / dib / { exit_code = 0; result_length = 91473 }
00:25:14 d #31359 runtime.execute_with_options_async / { exit_code = 0; output_length = 98615 }
00:25:13 d #39 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path file_system.dib --retries 3
00:25:14 d #31360 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path networking.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path networking.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:25:14 v #31361 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "networking.dib", "--retries", "3"])) }
00:25:14 v #31362 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/networking.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/networking.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/networking.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/networking.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:25:15 v #31363 > >
00:25:15 v #31364 > > ── markdown ────────────────────────────────────────────────────────────────────
00:25:15 v #31365 > > │ # networking
00:25:17 v #31366 > >
00:25:17 v #31367 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:17 v #31368 > > open rust.rust_operators
00:25:18 v #31369 > >
00:25:18 v #31370 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:18 v #31371 > > //// test
00:25:18 v #31372 > >
00:25:18 v #31373 > > open testing
00:25:18 v #31374 > >
00:25:18 v #31375 > > ── markdown ────────────────────────────────────────────────────────────────────
00:25:18 v #31376 > > │ ## rust
00:25:18 v #31377 > >
00:25:18 v #31378 > > ── markdown ────────────────────────────────────────────────────────────────────
00:25:18 v #31379 > > │ ### reqwest_response
00:25:18 v #31380 > >
00:25:18 v #31381 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:18 v #31382 > > nominal reqwest_response =
00:25:18 v #31383 > >     `(
00:25:18 v #31384 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:25:18 v #31385 > > Fable.Core.Emit(\"reqwest_wasm::Response\")>]]\n#endif\ntype reqwest_Response =
00:25:18 v #31386 > > class end"
00:25:18 v #31387 > >         $'' : $'reqwest_Response'
00:25:18 v #31388 > >     )
00:25:18 v #31389 > >
00:25:18 v #31390 > > ── markdown ────────────────────────────────────────────────────────────────────
00:25:18 v #31391 > > │ ### reqwest_error
00:25:18 v #31392 > >
00:25:18 v #31393 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:18 v #31394 > > nominal reqwest_error =
00:25:18 v #31395 > >     `(
00:25:18 v #31396 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:25:18 v #31397 > > Fable.Core.Emit(\"reqwest_wasm::Error\")>]]\n#endif\ntype reqwest_Error = class
00:25:18 v #31398 > > end"
00:25:18 v #31399 > >         $'' : $'reqwest_Error'
00:25:18 v #31400 > >     )
00:25:18 v #31401 > >
00:25:18 v #31402 > > ── markdown ────────────────────────────────────────────────────────────────────
00:25:18 v #31403 > > │ ### request_builder
00:25:18 v #31404 > >
00:25:18 v #31405 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:18 v #31406 > > nominal request_builder =
00:25:18 v #31407 > >     `(
00:25:18 v #31408 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:25:18 v #31409 > > Fable.Core.Emit(\"reqwest_wasm::RequestBuilder\")>]]\n#endif\ntype
00:25:18 v #31410 > > reqwest_RequestBuilder = class end"
00:25:18 v #31411 > >         $'' : $'reqwest_RequestBuilder'
00:25:18 v #31412 > >     )
00:25:19 v #31413 > >
00:25:19 v #31414 > > ── markdown ────────────────────────────────────────────────────────────────────
00:25:19 v #31415 > > │ ### request_type
00:25:19 v #31416 > >
00:25:19 v #31417 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:19 v #31418 > > union request_type =
00:25:19 v #31419 > >     | Get
00:25:19 v #31420 > >     | Post
00:25:19 v #31421 > >
00:25:19 v #31422 > > ── markdown ────────────────────────────────────────────────────────────────────
00:25:19 v #31423 > > │ ### request
00:25:19 v #31424 > >
00:25:19 v #31425 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:19 v #31426 > > type request =
00:25:19 v #31427 > >     {
00:25:19 v #31428 > >         url : string
00:25:19 v #31429 > >         request_type : request_type
00:25:19 v #31430 > >         body : string
00:25:19 v #31431 > >         json : bool
00:25:19 v #31432 > >         auto_refresh : bool
00:25:19 v #31433 > >     }
00:25:19 v #31434 > >
00:25:19 v #31435 > > ── markdown ────────────────────────────────────────────────────────────────────
00:25:19 v #31436 > > │ ### new_request_get
00:25:19 v #31437 > >
00:25:19 v #31438 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:19 v #31439 > > inl new_request_get (url : string) : request_builder =
00:25:19 v #31440 > >     inl url = join url
00:25:19 v #31441 > >     inl url = url |> sm'.to_std_string
00:25:19 v #31442 > >     inl url = join url
00:25:19 v #31443 > >     !\($'"reqwest_wasm::Client::builder().build().map_err(|err|
00:25:19 v #31444 > > err.to_string())?.get(!url)"')
00:25:19 v #31445 > >
00:25:19 v #31446 > > ── markdown ────────────────────────────────────────────────────────────────────
00:25:19 v #31447 > > │ ### new_request_post
00:25:19 v #31448 > >
00:25:19 v #31449 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:19 v #31450 > > inl new_request_post (url : string) : request_builder =
00:25:19 v #31451 > >     inl url = join url
00:25:19 v #31452 > >     inl url = url |> sm'.to_std_string
00:25:19 v #31453 > >     inl url = join url
00:25:19 v #31454 > >     !\($'"reqwest_wasm::Client::builder().build().map_err(|err|
00:25:19 v #31455 > > err.to_string())?.post(!url)"')
00:25:19 v #31456 > >
00:25:19 v #31457 > > ── markdown ────────────────────────────────────────────────────────────────────
00:25:19 v #31458 > > │ ### request_send
00:25:19 v #31459 > >
00:25:19 v #31460 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:19 v #31461 > > inl request_send (request : request_builder) : async.future_pin (resultm.result'
00:25:19 v #31462 > > reqwest_response reqwest_error) =
00:25:19 v #31463 > >     inl request = join request
00:25:19 v #31464 > >     !\($'"Box::pin(reqwest_wasm::RequestBuilder::send(!request))"')
00:25:19 v #31465 > >
00:25:19 v #31466 > > ── markdown ────────────────────────────────────────────────────────────────────
00:25:19 v #31467 > > │ ### request_body
00:25:19 v #31468 > >
00:25:19 v #31469 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:19 v #31470 > > inl request_body (body : string) (request : request_builder) : request_builder =
00:25:19 v #31471 > >     inl body = body |> sm'.to_std_string
00:25:19 v #31472 > >     !\\(body, $'"reqwest_wasm::RequestBuilder::body(!request, $0)"')
00:25:19 v #31473 > >
00:25:19 v #31474 > > ── markdown ────────────────────────────────────────────────────────────────────
00:25:19 v #31475 > > │ ### request_header
00:25:19 v #31476 > >
00:25:19 v #31477 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:19 v #31478 > > inl request_header (key : string) (value : string) (request : request_builder) :
00:25:19 v #31479 > > request_builder =
00:25:19 v #31480 > >     inl request = join request
00:25:19 v #31481 > >     inl key = key |> sm'.to_std_string
00:25:19 v #31482 > >     inl value = value |> sm'.to_std_string
00:25:19 v #31483 > >     !\\((key, value), $'"reqwest_wasm::RequestBuilder::header(!request, $0,
00:25:19 v #31484 > > $1)"')
00:25:20 v #31485 > >
00:25:20 v #31486 > > ── markdown ────────────────────────────────────────────────────────────────────
00:25:20 v #31487 > > │ ### request_json
00:25:20 v #31488 > >
00:25:20 v #31489 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:20 v #31490 > > inl request_json forall t. (obj : t) (request : request_builder) :
00:25:20 v #31491 > > request_builder =
00:25:20 v #31492 > >     !\($'"reqwest_wasm::RequestBuilder::json(!request, &!obj)"')
00:25:20 v #31493 > >
00:25:20 v #31494 > > ── markdown ────────────────────────────────────────────────────────────────────
00:25:20 v #31495 > > │ ### response_text
00:25:20 v #31496 > >
00:25:20 v #31497 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:20 v #31498 > > inl response_text (response : reqwest_response) : async.future_pin
00:25:20 v #31499 > > (resultm.result' sm'.std_string reqwest_error) =
00:25:20 v #31500 > >     !\($'"Box::pin(reqwest_wasm::Response::text(!response))"')
00:25:20 v #31501 > >
00:25:20 v #31502 > > ── markdown ────────────────────────────────────────────────────────────────────
00:25:20 v #31503 > > │ ## fsharp
00:25:20 v #31504 > >
00:25:20 v #31505 > > ── markdown ────────────────────────────────────────────────────────────────────
00:25:20 v #31506 > > │ ### tcp_client
00:25:20 v #31507 > >
00:25:20 v #31508 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:20 v #31509 > > nominal tcp_client =
00:25:20 v #31510 > >     `(
00:25:20 v #31511 > >         global "#if FABLE_COMPILER\n\ntype System_Net_Sockets_TcpClient =
00:25:20 v #31512 > > System.IDisposable\n#else\ntype System_Net_Sockets_TcpClient =
00:25:20 v #31513 > > System.Net.Sockets.TcpClient\n#endif\n"
00:25:20 v #31514 > >         $'' : $'System_Net_Sockets_TcpClient'
00:25:20 v #31515 > >     )
00:25:20 v #31516 > >
00:25:20 v #31517 > > ── markdown ────────────────────────────────────────────────────────────────────
00:25:20 v #31518 > > │ ### new_tcp_client
00:25:20 v #31519 > >
00:25:20 v #31520 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:20 v #31521 > > inl new_tcp_client () : tcp_client =
00:25:20 v #31522 > >     run_target function
00:25:20 v #31523 > >         | Fsharp (Native) => fun () => $'new `tcp_client ()'
00:25:20 v #31524 > >         | _ => fun () => null ()
00:25:20 v #31525 > >
00:25:20 v #31526 > > ── markdown ────────────────────────────────────────────────────────────────────
00:25:20 v #31527 > > │ ### ip_address
00:25:20 v #31528 > >
00:25:20 v #31529 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:20 v #31530 > > nominal ip_address = $'System.Net.IPAddress'
00:25:20 v #31531 > >
00:25:20 v #31532 > > ── markdown ────────────────────────────────────────────────────────────────────
00:25:20 v #31533 > > │ ### ip_address_parse
00:25:20 v #31534 > >
00:25:20 v #31535 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:20 v #31536 > > inl ip_address_parse (s : string) : ip_address =
00:25:20 v #31537 > >     s |> $'`ip_address.Parse'
00:25:21 v #31538 > >
00:25:21 v #31539 > > ── markdown ────────────────────────────────────────────────────────────────────
00:25:21 v #31540 > > │ ### tcp_listener
00:25:21 v #31541 > >
00:25:21 v #31542 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:21 v #31543 > > nominal tcp_listener = $'System.Net.Sockets.TcpListener'
00:25:21 v #31544 > >
00:25:21 v #31545 > > ── markdown ────────────────────────────────────────────────────────────────────
00:25:21 v #31546 > > │ ### new_tcp_listener
00:25:21 v #31547 > >
00:25:21 v #31548 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:21 v #31549 > > inl new_tcp_listener (ip_address : ip_address) (port : i32) : tcp_listener =
00:25:21 v #31550 > >     $'new `tcp_listener (!ip_address, !port)'
00:25:21 v #31551 > >
00:25:21 v #31552 > > ── markdown ────────────────────────────────────────────────────────────────────
00:25:21 v #31553 > > │ ### listener_start
00:25:21 v #31554 > >
00:25:21 v #31555 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:21 v #31556 > > inl listener_start (listener : tcp_listener) : () =
00:25:21 v #31557 > >     listener |> $'_.Start()'
00:25:21 v #31558 > >
00:25:21 v #31559 > > ── markdown ────────────────────────────────────────────────────────────────────
00:25:21 v #31560 > > │ ### listener_stop
00:25:21 v #31561 > >
00:25:21 v #31562 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:21 v #31563 > > inl listener_stop (listener : tcp_listener) : () =
00:25:21 v #31564 > >     listener |> $'_.Stop()'
00:25:21 v #31565 > >
00:25:21 v #31566 > > ── markdown ────────────────────────────────────────────────────────────────────
00:25:21 v #31567 > > │ ### client_connect_async
00:25:21 v #31568 > >
00:25:21 v #31569 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:21 v #31570 > > inl client_connect_async
00:25:21 v #31571 > >     (host : string)
00:25:21 v #31572 > >     (port : i32)
00:25:21 v #31573 > >     (ct : threading.cancellation_token)
00:25:21 v #31574 > >     (client : tcp_client)
00:25:21 v #31575 > >     : async.value_task
00:25:21 v #31576 > >     =
00:25:21 v #31577 > >     run_target function
00:25:21 v #31578 > >         | Fsharp (Native) => fun () => $'!client.ConnectAsync (!host, !port,
00:25:21 v #31579 > > !ct)'
00:25:21 v #31580 > >         | _ => fun () => null ()
00:25:21 v #31581 > >
00:25:21 v #31582 > > ── markdown ────────────────────────────────────────────────────────────────────
00:25:21 v #31583 > > │ ### test_port_open
00:25:21 v #31584 > >
00:25:21 v #31585 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:21 v #31586 > > let test_port_open host port : _ bool = async.new_async fun () =>
00:25:21 v #31587 > >     inl ct = async.cancellation_token () |> async.let'
00:25:21 v #31588 > >     inl client = new_tcp_client () |> use
00:25:21 v #31589 > >     try_unit
00:25:21 v #31590 > >         fun () =>
00:25:21 v #31591 > >             client |> client_connect_async host port ct |>
00:25:21 v #31592 > > async.await_value_task_unit |> async.do
00:25:21 v #31593 > >             return true
00:25:21 v #31594 > >         fun ex =>
00:25:21 v #31595 > >             trace Verbose
00:25:21 v #31596 > >                 fun () => "networking.test_port_open"
00:25:21 v #31597 > >                 fun () => { port ex = ex () |> sm'.format_exception }
00:25:21 v #31598 > >             return false
00:25:21 v #31599 > >
00:25:21 v #31600 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:21 v #31601 > > //// test
00:25:21 v #31602 > >
00:25:21 v #31603 > > test_port_open "127.0.0.1" 65536
00:25:21 v #31604 > > |> async.run_with_timeout 120
00:25:21 v #31605 > > |> _assert_eq (Some false)
00:25:25 v #31606 > >
00:25:25 v #31607 > > ── [ 3.53s - stdout ] ──────────────────────────────────────────────────────────
00:25:25 v #31608 > > │ 00:00:00 v #1 networking.test_port_open / { port =
00:25:25 v #31609 > > 65536; ex = System.ArgumentOutOfRangeException: Specified argument was out of
00:25:25 v #31610 > > the range of valid values. (Parameter 'port') }
00:25:25 v #31611 > > │ __assert_eq / actual: US6_0 false / expected: US6_0 false
00:25:25 v #31612 > > │
00:25:25 v #31613 > >
00:25:25 v #31614 > > ── markdown ────────────────────────────────────────────────────────────────────
00:25:25 v #31615 > > │ ### test_port_open_timeout
00:25:25 v #31616 > >
00:25:25 v #31617 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:25 v #31618 > > let test_port_open_timeout timeout host port : _ bool = async.new_async_unit fun
00:25:25 v #31619 > > () =>
00:25:25 v #31620 > >     test_port_open host port
00:25:25 v #31621 > >     |> async.run_with_timeout_async timeout
00:25:25 v #31622 > >     |> async.let'
00:25:25 v #31623 > >     |> function
00:25:25 v #31624 > >         | None => false
00:25:25 v #31625 > >         | Some result => result
00:25:25 v #31626 > >     |> return
00:25:25 v #31627 > >
00:25:25 v #31628 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:25 v #31629 > > //// test
00:25:25 v #31630 > >
00:25:25 v #31631 > > test_port_open_timeout 120 "127.0.0.1" 65535
00:25:25 v #31632 > > |> async.run_synchronously
00:25:25 v #31633 > > |> _assert_eq false
00:25:28 v #31634 > >
00:25:28 v #31635 > > ── [ 3.05s - stdout ] ──────────────────────────────────────────────────────────
00:25:28 v #31636 > > │ 00:00:00 v #1 networking.test_port_open / { port =
00:25:28 v #31637 > > 65535; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:28 v #31638 > > refused) }
00:25:28 v #31639 > > │ __assert_eq / actual: false / expected: false
00:25:28 v #31640 > > │
00:25:28 v #31641 > >
00:25:28 v #31642 > > ── markdown ────────────────────────────────────────────────────────────────────
00:25:28 v #31643 > > │ ### wait_for_port_access
00:25:28 v #31644 > >
00:25:28 v #31645 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:28 v #31646 > > let wait_for_port_access timeout status host port : _ i64 =
00:25:28 v #31647 > >     let rec loop retry : _ i64 =
00:25:28 v #31648 > >         fun () =>
00:25:28 v #31649 > >             inl is_port_open =
00:25:28 v #31650 > >                 match timeout |> optionm'.unbox with
00:25:28 v #31651 > >                 | None => test_port_open host port
00:25:28 v #31652 > >                 | Some timeout => test_port_open_timeout timeout host port
00:25:28 v #31653 > >                 |> async.let'
00:25:28 v #31654 > >             fix_condition
00:25:28 v #31655 > >                 fun () => is_port_open = status
00:25:28 v #31656 > >                 fun () => retry |> return
00:25:28 v #31657 > >                 fun () =>
00:25:28 v #31658 > >                     if retry % 100 = 0 then
00:25:28 v #31659 > >                         trace Verbose
00:25:28 v #31660 > >                             fun () => "networking.wait_for_port_access"
00:25:28 v #31661 > >                             fun () => { port retry timeout status }
00:25:28 v #31662 > >                     async.sleep 10 |> async.do
00:25:28 v #31663 > >                     loop (retry + 1) |> async.return_await
00:25:28 v #31664 > >         |> async.new_async_unit
00:25:28 v #31665 > >     loop 1i64
00:25:28 v #31666 > >
00:25:28 v #31667 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:28 v #31668 > > //// test
00:25:28 v #31669 > >
00:25:28 v #31670 > > inl lock_port host port = async.new_async fun () =>
00:25:28 v #31671 > >     trace Debug (fun () => "_1") id
00:25:28 v #31672 > >     async.sleep 5000 |> async.do
00:25:28 v #31673 > >     inl listener = new_tcp_listener (host |> ip_address_parse) port |> use
00:25:28 v #31674 > >     trace Debug (fun () => "_2") id
00:25:28 v #31675 > >     listener |> listener_start
00:25:28 v #31676 > >     trace Debug (fun () => "_3") id
00:25:28 v #31677 > >     async.sleep 2000 |> async.do
00:25:28 v #31678 > >     trace Debug (fun () => "_4") id
00:25:28 v #31679 > >     $'!listener.Stop' ()
00:25:28 v #31680 > >     trace Debug (fun () => "_5") id
00:25:28 v #31681 > >
00:25:28 v #31682 > > inl host = "127.0.0.1"
00:25:28 v #31683 > > inl port = 5555i32
00:25:28 v #31684 > >
00:25:28 v #31685 > > fun () =>
00:25:28 v #31686 > >     trace Debug (fun () => "1") id
00:25:28 v #31687 > >     inl child = lock_port host port |> async.start_child |> async.let'
00:25:28 v #31688 > >     trace Debug (fun () => "2") id
00:25:28 v #31689 > >     async.sleep 1 |> async.do
00:25:28 v #31690 > >     trace Debug (fun () => "3") id
00:25:28 v #31691 > >     inl retries1 = wait_for_port_access (None |> optionm'.box) true host port |>
00:25:28 v #31692 > > async.let'
00:25:28 v #31693 > >     trace Debug (fun () => "4") id
00:25:28 v #31694 > >     inl retries2 = wait_for_port_access (None |> optionm'.box) false host port
00:25:28 v #31695 > > |> async.let'
00:25:28 v #31696 > >     trace Debug (fun () => "5") id
00:25:28 v #31697 > >     child |> async.do
00:25:28 v #31698 > >     trace Debug (fun () => "6") id
00:25:28 v #31699 > >     (retries1, retries2) |> return
00:25:28 v #31700 > > |> async.new_async_unit
00:25:28 v #31701 > > |> async.run_with_timeout 20000
00:25:28 v #31702 > > |> function
00:25:28 v #31703 > >     | Some (retries1, retries2) =>
00:25:28 v #31704 > >         retries1
00:25:28 v #31705 > >         |> _assert_between
00:25:28 v #31706 > >             if platform.is_windows () then 2i64 else 2
00:25:28 v #31707 > >             if platform.is_windows () then 5 else 1500
00:25:28 v #31708 > >
00:25:28 v #31709 > >         retries2
00:25:28 v #31710 > >         |> _assert_between
00:25:28 v #31711 > >             if platform.is_windows () then 80i64 else 80
00:25:28 v #31712 > >             if platform.is_windows () then 200 else 600
00:25:28 v #31713 > >
00:25:28 v #31714 > >         true
00:25:28 v #31715 > >     | _ => false
00:25:28 v #31716 > > |> _assert_eq true
00:25:42 v #31717 > >
00:25:42 v #31718 > > ── [ 14.06s - stdout ] ─────────────────────────────────────────────────────────
00:25:43 v #31719 > > │ 00:00:00 d #1 1
00:25:43 v #31720 > > │ 00:00:00 d #2 _1
00:25:43 v #31721 > > │ 00:00:00 d #3 2
00:25:43 v #31722 > > │ 00:00:00 d #4 3
00:25:43 v #31723 > > │ 00:00:00 v #5 networking.test_port_open / { port = 5555;
00:25:43 v #31724 > > ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31725 > > refused) }
00:25:43 v #31726 > > │ 00:00:00 v #6 networking.test_port_open / { port = 5555;
00:25:43 v #31727 > > ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31728 > > refused) }
00:25:43 v #31729 > > │ 00:00:00 v #7 networking.test_port_open / { port = 5555;
00:25:43 v #31730 > > ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31731 > > refused) }
00:25:43 v #31732 > > │ 00:00:00 v #8 networking.test_port_open / { port = 5555;
00:25:43 v #31733 > > ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31734 > > refused) }
00:25:43 v #31735 > > │ 00:00:00 v #9 networking.test_port_open / { port = 5555;
00:25:43 v #31736 > > ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31737 > > refused) }
00:25:43 v #31738 > > │ 00:00:00 v #10 networking.test_port_open / { port =
00:25:43 v #31739 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31740 > > refused) }
00:25:43 v #31741 > > │ 00:00:00 v #11 networking.test_port_open / { port =
00:25:43 v #31742 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31743 > > refused) }
00:25:43 v #31744 > > │ 00:00:00 v #12 networking.test_port_open / { port =
00:25:43 v #31745 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31746 > > refused) }
00:25:43 v #31747 > > │ 00:00:00 v #13 networking.test_port_open / { port =
00:25:43 v #31748 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31749 > > refused) }
00:25:43 v #31750 > > │ 00:00:00 v #14 networking.test_port_open / { port =
00:25:43 v #31751 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31752 > > refused) }
00:25:43 v #31753 > > │ 00:00:00 v #15 networking.test_port_open / { port =
00:25:43 v #31754 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31755 > > refused) }
00:25:43 v #31756 > > │ 00:00:00 v #16 networking.test_port_open / { port =
00:25:43 v #31757 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31758 > > refused) }
00:25:43 v #31759 > > │ 00:00:00 v #17 networking.test_port_open / { port =
00:25:43 v #31760 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31761 > > refused) }
00:25:43 v #31762 > > │ 00:00:00 v #18 networking.test_port_open / { port =
00:25:43 v #31763 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31764 > > refused) }
00:25:43 v #31765 > > │ 00:00:00 v #19 networking.test_port_open / { port =
00:25:43 v #31766 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31767 > > refused) }
00:25:43 v #31768 > > │ 00:00:00 v #20 networking.test_port_open / { port =
00:25:43 v #31769 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31770 > > refused) }
00:25:43 v #31771 > > │ 00:00:00 v #21 networking.test_port_open / { port =
00:25:43 v #31772 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31773 > > refused) }
00:25:43 v #31774 > > │ 00:00:00 v #22 networking.test_port_open / { port =
00:25:43 v #31775 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31776 > > refused) }
00:25:43 v #31777 > > │ 00:00:00 v #23 networking.test_port_open / { port =
00:25:43 v #31778 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31779 > > refused) }
00:25:43 v #31780 > > │ 00:00:00 v #24 networking.test_port_open / { port =
00:25:43 v #31781 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31782 > > refused) }
00:25:43 v #31783 > > │ 00:00:00 v #25 networking.test_port_open / { port =
00:25:43 v #31784 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31785 > > refused) }
00:25:43 v #31786 > > │ 00:00:00 v #26 networking.test_port_open / { port =
00:25:43 v #31787 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31788 > > refused) }
00:25:43 v #31789 > > │ 00:00:00 v #27 networking.test_port_open / { port =
00:25:43 v #31790 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31791 > > refused) }
00:25:43 v #31792 > > │ 00:00:00 v #28 networking.test_port_open / { port =
00:25:43 v #31793 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31794 > > refused) }
00:25:43 v #31795 > > │ 00:00:00 v #29 networking.test_port_open / { port =
00:25:43 v #31796 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31797 > > refused) }
00:25:43 v #31798 > > │ 00:00:00 v #30 networking.test_port_open / { port =
00:25:43 v #31799 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31800 > > refused) }
00:25:43 v #31801 > > │ 00:00:00 v #31 networking.test_port_open / { port =
00:25:43 v #31802 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31803 > > refused) }
00:25:43 v #31804 > > │ 00:00:00 v #32 networking.test_port_open / { port =
00:25:43 v #31805 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31806 > > refused) }
00:25:43 v #31807 > > │ 00:00:00 v #33 networking.test_port_open / { port =
00:25:43 v #31808 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31809 > > refused) }
00:25:43 v #31810 > > │ 00:00:00 v #34 networking.test_port_open / { port =
00:25:43 v #31811 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31812 > > refused) }
00:25:43 v #31813 > > │ 00:00:00 v #35 networking.test_port_open / { port =
00:25:43 v #31814 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31815 > > refused) }
00:25:43 v #31816 > > │ 00:00:00 v #36 networking.test_port_open / { port =
00:25:43 v #31817 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31818 > > refused) }
00:25:43 v #31819 > > │ 00:00:00 v #37 networking.test_port_open / { port =
00:25:43 v #31820 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31821 > > refused) }
00:25:43 v #31822 > > │ 00:00:00 v #38 networking.test_port_open / { port =
00:25:43 v #31823 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31824 > > refused) }
00:25:43 v #31825 > > │ 00:00:00 v #39 networking.test_port_open / { port =
00:25:43 v #31826 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31827 > > refused) }
00:25:43 v #31828 > > │ 00:00:00 v #40 networking.test_port_open / { port =
00:25:43 v #31829 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31830 > > refused) }
00:25:43 v #31831 > > │ 00:00:00 v #41 networking.test_port_open / { port =
00:25:43 v #31832 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31833 > > refused) }
00:25:43 v #31834 > > │ 00:00:00 v #42 networking.test_port_open / { port =
00:25:43 v #31835 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31836 > > refused) }
00:25:43 v #31837 > > │ 00:00:00 v #43 networking.test_port_open / { port =
00:25:43 v #31838 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31839 > > refused) }
00:25:43 v #31840 > > │ 00:00:00 v #44 networking.test_port_open / { port =
00:25:43 v #31841 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31842 > > refused) }
00:25:43 v #31843 > > │ 00:00:00 v #45 networking.test_port_open / { port =
00:25:43 v #31844 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31845 > > refused) }
00:25:43 v #31846 > > │ 00:00:00 v #46 networking.test_port_open / { port =
00:25:43 v #31847 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31848 > > refused) }
00:25:43 v #31849 > > │ 00:00:00 v #47 networking.test_port_open / { port =
00:25:43 v #31850 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31851 > > refused) }
00:25:43 v #31852 > > │ 00:00:00 v #48 networking.test_port_open / { port =
00:25:43 v #31853 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31854 > > refused) }
00:25:43 v #31855 > > │ 00:00:00 v #49 networking.test_port_open / { port =
00:25:43 v #31856 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31857 > > refused) }
00:25:43 v #31858 > > │ 00:00:00 v #50 networking.test_port_open / { port =
00:25:43 v #31859 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31860 > > refused) }
00:25:43 v #31861 > > │ 00:00:00 v #51 networking.test_port_open / { port =
00:25:43 v #31862 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31863 > > refused) }
00:25:43 v #31864 > > │ 00:00:00 v #52 networking.test_port_open / { port =
00:25:43 v #31865 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31866 > > refused) }
00:25:43 v #31867 > > │ 00:00:00 v #53 networking.test_port_open / { port =
00:25:43 v #31868 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31869 > > refused) }
00:25:43 v #31870 > > │ 00:00:00 v #54 networking.test_port_open / { port =
00:25:43 v #31871 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31872 > > refused) }
00:25:43 v #31873 > > │ 00:00:00 v #55 networking.test_port_open / { port =
00:25:43 v #31874 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31875 > > refused) }
00:25:43 v #31876 > > │ 00:00:00 v #56 networking.test_port_open / { port =
00:25:43 v #31877 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31878 > > refused) }
00:25:43 v #31879 > > │ 00:00:00 v #57 networking.test_port_open / { port =
00:25:43 v #31880 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31881 > > refused) }
00:25:43 v #31882 > > │ 00:00:00 v #58 networking.test_port_open / { port =
00:25:43 v #31883 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31884 > > refused) }
00:25:43 v #31885 > > │ 00:00:00 v #59 networking.test_port_open / { port =
00:25:43 v #31886 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31887 > > refused) }
00:25:43 v #31888 > > │ 00:00:00 v #60 networking.test_port_open / { port =
00:25:43 v #31889 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31890 > > refused) }
00:25:43 v #31891 > > │ 00:00:00 v #61 networking.test_port_open / { port =
00:25:43 v #31892 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31893 > > refused) }
00:25:43 v #31894 > > │ 00:00:00 v #62 networking.test_port_open / { port =
00:25:43 v #31895 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31896 > > refused) }
00:25:43 v #31897 > > │ 00:00:00 v #63 networking.test_port_open / { port =
00:25:43 v #31898 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31899 > > refused) }
00:25:43 v #31900 > > │ 00:00:00 v #64 networking.test_port_open / { port =
00:25:43 v #31901 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31902 > > refused) }
00:25:43 v #31903 > > │ 00:00:00 v #65 networking.test_port_open / { port =
00:25:43 v #31904 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31905 > > refused) }
00:25:43 v #31906 > > │ 00:00:00 v #66 networking.test_port_open / { port =
00:25:43 v #31907 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31908 > > refused) }
00:25:43 v #31909 > > │ 00:00:00 v #67 networking.test_port_open / { port =
00:25:43 v #31910 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31911 > > refused) }
00:25:43 v #31912 > > │ 00:00:00 v #68 networking.test_port_open / { port =
00:25:43 v #31913 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31914 > > refused) }
00:25:43 v #31915 > > │ 00:00:00 v #69 networking.test_port_open / { port =
00:25:43 v #31916 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31917 > > refused) }
00:25:43 v #31918 > > │ 00:00:00 v #70 networking.test_port_open / { port =
00:25:43 v #31919 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31920 > > refused) }
00:25:43 v #31921 > > │ 00:00:00 v #71 networking.test_port_open / { port =
00:25:43 v #31922 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31923 > > refused) }
00:25:43 v #31924 > > │ 00:00:00 v #72 networking.test_port_open / { port =
00:25:43 v #31925 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31926 > > refused) }
00:25:43 v #31927 > > │ 00:00:00 v #73 networking.test_port_open / { port =
00:25:43 v #31928 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31929 > > refused) }
00:25:43 v #31930 > > │ 00:00:00 v #74 networking.test_port_open / { port =
00:25:43 v #31931 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31932 > > refused) }
00:25:43 v #31933 > > │ 00:00:00 v #75 networking.test_port_open / { port =
00:25:43 v #31934 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31935 > > refused) }
00:25:43 v #31936 > > │ 00:00:00 v #76 networking.test_port_open / { port =
00:25:43 v #31937 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31938 > > refused) }
00:25:43 v #31939 > > │ 00:00:00 v #77 networking.test_port_open / { port =
00:25:43 v #31940 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31941 > > refused) }
00:25:43 v #31942 > > │ 00:00:00 v #78 networking.test_port_open / { port =
00:25:43 v #31943 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31944 > > refused) }
00:25:43 v #31945 > > │ 00:00:00 v #79 networking.test_port_open / { port =
00:25:43 v #31946 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31947 > > refused) }
00:25:43 v #31948 > > │ 00:00:00 v #80 networking.test_port_open / { port =
00:25:43 v #31949 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31950 > > refused) }
00:25:43 v #31951 > > │ 00:00:00 v #81 networking.test_port_open / { port =
00:25:43 v #31952 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31953 > > refused) }
00:25:43 v #31954 > > │ 00:00:00 v #82 networking.test_port_open / { port =
00:25:43 v #31955 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31956 > > refused) }
00:25:43 v #31957 > > │ 00:00:00 v #83 networking.test_port_open / { port =
00:25:43 v #31958 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31959 > > refused) }
00:25:43 v #31960 > > │ 00:00:00 v #84 networking.test_port_open / { port =
00:25:43 v #31961 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31962 > > refused) }
00:25:43 v #31963 > > │ 00:00:00 v #85 networking.test_port_open / { port =
00:25:43 v #31964 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31965 > > refused) }
00:25:43 v #31966 > > │ 00:00:00 v #86 networking.test_port_open / { port =
00:25:43 v #31967 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31968 > > refused) }
00:25:43 v #31969 > > │ 00:00:00 v #87 networking.test_port_open / { port =
00:25:43 v #31970 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31971 > > refused) }
00:25:43 v #31972 > > │ 00:00:00 v #88 networking.test_port_open / { port =
00:25:43 v #31973 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31974 > > refused) }
00:25:43 v #31975 > > │ 00:00:00 v #89 networking.test_port_open / { port =
00:25:43 v #31976 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31977 > > refused) }
00:25:43 v #31978 > > │ 00:00:00 v #90 networking.test_port_open / { port =
00:25:43 v #31979 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31980 > > refused) }
00:25:43 v #31981 > > │ 00:00:00 v #91 networking.test_port_open / { port =
00:25:43 v #31982 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31983 > > refused) }
00:25:43 v #31984 > > │ 00:00:00 v #92 networking.test_port_open / { port =
00:25:43 v #31985 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31986 > > refused) }
00:25:43 v #31987 > > │ 00:00:00 v #93 networking.test_port_open / { port =
00:25:43 v #31988 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31989 > > refused) }
00:25:43 v #31990 > > │ 00:00:00 v #94 networking.test_port_open / { port =
00:25:43 v #31991 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31992 > > refused) }
00:25:43 v #31993 > > │ 00:00:00 v #95 networking.test_port_open / { port =
00:25:43 v #31994 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31995 > > refused) }
00:25:43 v #31996 > > │ 00:00:00 v #96 networking.test_port_open / { port =
00:25:43 v #31997 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #31998 > > refused) }
00:25:43 v #31999 > > │ 00:00:00 v #97 networking.test_port_open / { port =
00:25:43 v #32000 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32001 > > refused) }
00:25:43 v #32002 > > │ 00:00:00 v #98 networking.test_port_open / { port =
00:25:43 v #32003 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32004 > > refused) }
00:25:43 v #32005 > > │ 00:00:00 v #99 networking.test_port_open / { port =
00:25:43 v #32006 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32007 > > refused) }
00:25:43 v #32008 > > │ 00:00:01 v #100 networking.test_port_open / { port =
00:25:43 v #32009 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32010 > > refused) }
00:25:43 v #32011 > > │ 00:00:01 v #101 networking.test_port_open / { port =
00:25:43 v #32012 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32013 > > refused) }
00:25:43 v #32014 > > │ 00:00:01 v #102 networking.test_port_open / { port =
00:25:43 v #32015 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32016 > > refused) }
00:25:43 v #32017 > > │ 00:00:01 v #103 networking.test_port_open / { port =
00:25:43 v #32018 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32019 > > refused) }
00:25:43 v #32020 > > │ 00:00:01 v #104 networking.test_port_open / { port =
00:25:43 v #32021 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32022 > > refused) }
00:25:43 v #32023 > > │ 00:00:01 v #105 networking.wait_for_port_access / { port
00:25:43 v #32024 > > = 5555; retry = 100; timeout = None; status = true }
00:25:43 v #32025 > > │ 00:00:01 v #106 networking.test_port_open / { port =
00:25:43 v #32026 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32027 > > refused) }
00:25:43 v #32028 > > │ 00:00:01 v #107 networking.test_port_open / { port =
00:25:43 v #32029 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32030 > > refused) }
00:25:43 v #32031 > > │ 00:00:01 v #108 networking.test_port_open / { port =
00:25:43 v #32032 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32033 > > refused) }
00:25:43 v #32034 > > │ 00:00:01 v #109 networking.test_port_open / { port =
00:25:43 v #32035 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32036 > > refused) }
00:25:43 v #32037 > > │ 00:00:01 v #110 networking.test_port_open / { port =
00:25:43 v #32038 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32039 > > refused) }
00:25:43 v #32040 > > │ 00:00:01 v #111 networking.test_port_open / { port =
00:25:43 v #32041 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32042 > > refused) }
00:25:43 v #32043 > > │ 00:00:01 v #112 networking.test_port_open / { port =
00:25:43 v #32044 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32045 > > refused) }
00:25:43 v #32046 > > │ 00:00:01 v #113 networking.test_port_open / { port =
00:25:43 v #32047 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32048 > > refused) }
00:25:43 v #32049 > > │ 00:00:01 v #114 networking.test_port_open / { port =
00:25:43 v #32050 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32051 > > refused) }
00:25:43 v #32052 > > │ 00:00:01 v #115 networking.test_port_open / { port =
00:25:43 v #32053 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32054 > > refused) }
00:25:43 v #32055 > > │ 00:00:01 v #116 networking.test_port_open / { port =
00:25:43 v #32056 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32057 > > refused) }
00:25:43 v #32058 > > │ 00:00:01 v #117 networking.test_port_open / { port =
00:25:43 v #32059 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32060 > > refused) }
00:25:43 v #32061 > > │ 00:00:01 v #118 networking.test_port_open / { port =
00:25:43 v #32062 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32063 > > refused) }
00:25:43 v #32064 > > │ 00:00:01 v #119 networking.test_port_open / { port =
00:25:43 v #32065 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32066 > > refused) }
00:25:43 v #32067 > > │ 00:00:01 v #120 networking.test_port_open / { port =
00:25:43 v #32068 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32069 > > refused) }
00:25:43 v #32070 > > │ 00:00:01 v #121 networking.test_port_open / { port =
00:25:43 v #32071 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32072 > > refused) }
00:25:43 v #32073 > > │ 00:00:01 v #122 networking.test_port_open / { port =
00:25:43 v #32074 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32075 > > refused) }
00:25:43 v #32076 > > │ 00:00:01 v #123 networking.test_port_open / { port =
00:25:43 v #32077 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32078 > > refused) }
00:25:43 v #32079 > > │ 00:00:01 v #124 networking.test_port_open / { port =
00:25:43 v #32080 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32081 > > refused) }
00:25:43 v #32082 > > │ 00:00:01 v #125 networking.test_port_open / { port =
00:25:43 v #32083 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32084 > > refused) }
00:25:43 v #32085 > > │ 00:00:01 v #126 networking.test_port_open / { port =
00:25:43 v #32086 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32087 > > refused) }
00:25:43 v #32088 > > │ 00:00:01 v #127 networking.test_port_open / { port =
00:25:43 v #32089 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32090 > > refused) }
00:25:43 v #32091 > > │ 00:00:01 v #128 networking.test_port_open / { port =
00:25:43 v #32092 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32093 > > refused) }
00:25:43 v #32094 > > │ 00:00:01 v #129 networking.test_port_open / { port =
00:25:43 v #32095 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32096 > > refused) }
00:25:43 v #32097 > > │ 00:00:01 v #130 networking.test_port_open / { port =
00:25:43 v #32098 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32099 > > refused) }
00:25:43 v #32100 > > │ 00:00:01 v #131 networking.test_port_open / { port =
00:25:43 v #32101 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32102 > > refused) }
00:25:43 v #32103 > > │ 00:00:01 v #132 networking.test_port_open / { port =
00:25:43 v #32104 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32105 > > refused) }
00:25:43 v #32106 > > │ 00:00:01 v #133 networking.test_port_open / { port =
00:25:43 v #32107 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32108 > > refused) }
00:25:43 v #32109 > > │ 00:00:01 v #134 networking.test_port_open / { port =
00:25:43 v #32110 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32111 > > refused) }
00:25:43 v #32112 > > │ 00:00:01 v #135 networking.test_port_open / { port =
00:25:43 v #32113 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32114 > > refused) }
00:25:43 v #32115 > > │ 00:00:01 v #136 networking.test_port_open / { port =
00:25:43 v #32116 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32117 > > refused) }
00:25:43 v #32118 > > │ 00:00:01 v #137 networking.test_port_open / { port =
00:25:43 v #32119 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32120 > > refused) }
00:25:43 v #32121 > > │ 00:00:01 v #138 networking.test_port_open / { port =
00:25:43 v #32122 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32123 > > refused) }
00:25:43 v #32124 > > │ 00:00:01 v #139 networking.test_port_open / { port =
00:25:43 v #32125 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32126 > > refused) }
00:25:43 v #32127 > > │ 00:00:01 v #140 networking.test_port_open / { port =
00:25:43 v #32128 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32129 > > refused) }
00:25:43 v #32130 > > │ 00:00:01 v #141 networking.test_port_open / { port =
00:25:43 v #32131 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32132 > > refused) }
00:25:43 v #32133 > > │ 00:00:01 v #142 networking.test_port_open / { port =
00:25:43 v #32134 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32135 > > refused) }
00:25:43 v #32136 > > │ 00:00:01 v #143 networking.test_port_open / { port =
00:25:43 v #32137 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32138 > > refused) }
00:25:43 v #32139 > > │ 00:00:01 v #144 networking.test_port_open / { port =
00:25:43 v #32140 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32141 > > refused) }
00:25:43 v #32142 > > │ 00:00:01 v #145 networking.test_port_open / { port =
00:25:43 v #32143 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32144 > > refused) }
00:25:43 v #32145 > > │ 00:00:01 v #146 networking.test_port_open / { port =
00:25:43 v #32146 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32147 > > refused) }
00:25:43 v #32148 > > │ 00:00:01 v #147 networking.test_port_open / { port =
00:25:43 v #32149 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32150 > > refused) }
00:25:43 v #32151 > > │ 00:00:01 v #148 networking.test_port_open / { port =
00:25:43 v #32152 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32153 > > refused) }
00:25:43 v #32154 > > │ 00:00:01 v #149 networking.test_port_open / { port =
00:25:43 v #32155 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32156 > > refused) }
00:25:43 v #32157 > > │ 00:00:01 v #150 networking.test_port_open / { port =
00:25:43 v #32158 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32159 > > refused) }
00:25:43 v #32160 > > │ 00:00:01 v #151 networking.test_port_open / { port =
00:25:43 v #32161 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32162 > > refused) }
00:25:43 v #32163 > > │ 00:00:01 v #152 networking.test_port_open / { port =
00:25:43 v #32164 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32165 > > refused) }
00:25:43 v #32166 > > │ 00:00:01 v #153 networking.test_port_open / { port =
00:25:43 v #32167 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32168 > > refused) }
00:25:43 v #32169 > > │ 00:00:01 v #154 networking.test_port_open / { port =
00:25:43 v #32170 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32171 > > refused) }
00:25:43 v #32172 > > │ 00:00:01 v #155 networking.test_port_open / { port =
00:25:43 v #32173 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32174 > > refused) }
00:25:43 v #32175 > > │ 00:00:01 v #156 networking.test_port_open / { port =
00:25:43 v #32176 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32177 > > refused) }
00:25:43 v #32178 > > │ 00:00:01 v #157 networking.test_port_open / { port =
00:25:43 v #32179 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32180 > > refused) }
00:25:43 v #32181 > > │ 00:00:01 v #158 networking.test_port_open / { port =
00:25:43 v #32182 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32183 > > refused) }
00:25:43 v #32184 > > │ 00:00:01 v #159 networking.test_port_open / { port =
00:25:43 v #32185 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32186 > > refused) }
00:25:43 v #32187 > > │ 00:00:01 v #160 networking.test_port_open / { port =
00:25:43 v #32188 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32189 > > refused) }
00:25:43 v #32190 > > │ 00:00:01 v #161 networking.test_port_open / { port =
00:25:43 v #32191 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32192 > > refused) }
00:25:43 v #32193 > > │ 00:00:01 v #162 networking.test_port_open / { port =
00:25:43 v #32194 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32195 > > refused) }
00:25:43 v #32196 > > │ 00:00:01 v #163 networking.test_port_open / { port =
00:25:43 v #32197 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32198 > > refused) }
00:25:43 v #32199 > > │ 00:00:01 v #164 networking.test_port_open / { port =
00:25:43 v #32200 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32201 > > refused) }
00:25:43 v #32202 > > │ 00:00:01 v #165 networking.test_port_open / { port =
00:25:43 v #32203 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32204 > > refused) }
00:25:43 v #32205 > > │ 00:00:01 v #166 networking.test_port_open / { port =
00:25:43 v #32206 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32207 > > refused) }
00:25:43 v #32208 > > │ 00:00:01 v #167 networking.test_port_open / { port =
00:25:43 v #32209 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32210 > > refused) }
00:25:43 v #32211 > > │ 00:00:01 v #168 networking.test_port_open / { port =
00:25:43 v #32212 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32213 > > refused) }
00:25:43 v #32214 > > │ 00:00:01 v #169 networking.test_port_open / { port =
00:25:43 v #32215 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32216 > > refused) }
00:25:43 v #32217 > > │ 00:00:01 v #170 networking.test_port_open / { port =
00:25:43 v #32218 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32219 > > refused) }
00:25:43 v #32220 > > │ 00:00:01 v #171 networking.test_port_open / { port =
00:25:43 v #32221 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32222 > > refused) }
00:25:43 v #32223 > > │ 00:00:01 v #172 networking.test_port_open / { port =
00:25:43 v #32224 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32225 > > refused) }
00:25:43 v #32226 > > │ 00:00:01 v #173 networking.test_port_open / { port =
00:25:43 v #32227 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32228 > > refused) }
00:25:43 v #32229 > > │ 00:00:01 v #174 networking.test_port_open / { port =
00:25:43 v #32230 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32231 > > refused) }
00:25:43 v #32232 > > │ 00:00:01 v #175 networking.test_port_open / { port =
00:25:43 v #32233 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32234 > > refused) }
00:25:43 v #32235 > > │ 00:00:01 v #176 networking.test_port_open / { port =
00:25:43 v #32236 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32237 > > refused) }
00:25:43 v #32238 > > │ 00:00:01 v #177 networking.test_port_open / { port =
00:25:43 v #32239 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32240 > > refused) }
00:25:43 v #32241 > > │ 00:00:01 v #178 networking.test_port_open / { port =
00:25:43 v #32242 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32243 > > refused) }
00:25:43 v #32244 > > │ 00:00:01 v #179 networking.test_port_open / { port =
00:25:43 v #32245 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32246 > > refused) }
00:25:43 v #32247 > > │ 00:00:01 v #180 networking.test_port_open / { port =
00:25:43 v #32248 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32249 > > refused) }
00:25:43 v #32250 > > │ 00:00:01 v #181 networking.test_port_open / { port =
00:25:43 v #32251 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32252 > > refused) }
00:25:43 v #32253 > > │ 00:00:01 v #182 networking.test_port_open / { port =
00:25:43 v #32254 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32255 > > refused) }
00:25:43 v #32256 > > │ 00:00:01 v #183 networking.test_port_open / { port =
00:25:43 v #32257 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32258 > > refused) }
00:25:43 v #32259 > > │ 00:00:01 v #184 networking.test_port_open / { port =
00:25:43 v #32260 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32261 > > refused) }
00:25:43 v #32262 > > │ 00:00:01 v #185 networking.test_port_open / { port =
00:25:43 v #32263 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32264 > > refused) }
00:25:43 v #32265 > > │ 00:00:01 v #186 networking.test_port_open / { port =
00:25:43 v #32266 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32267 > > refused) }
00:25:43 v #32268 > > │ 00:00:01 v #187 networking.test_port_open / { port =
00:25:43 v #32269 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32270 > > refused) }
00:25:43 v #32271 > > │ 00:00:01 v #188 networking.test_port_open / { port =
00:25:43 v #32272 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32273 > > refused) }
00:25:43 v #32274 > > │ 00:00:01 v #189 networking.test_port_open / { port =
00:25:43 v #32275 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32276 > > refused) }
00:25:43 v #32277 > > │ 00:00:01 v #190 networking.test_port_open / { port =
00:25:43 v #32278 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32279 > > refused) }
00:25:43 v #32280 > > │ 00:00:01 v #191 networking.test_port_open / { port =
00:25:43 v #32281 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32282 > > refused) }
00:25:43 v #32283 > > │ 00:00:01 v #192 networking.test_port_open / { port =
00:25:43 v #32284 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32285 > > refused) }
00:25:43 v #32286 > > │ 00:00:01 v #193 networking.test_port_open / { port =
00:25:43 v #32287 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32288 > > refused) }
00:25:43 v #32289 > > │ 00:00:01 v #194 networking.test_port_open / { port =
00:25:43 v #32290 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32291 > > refused) }
00:25:43 v #32292 > > │ 00:00:01 v #195 networking.test_port_open / { port =
00:25:43 v #32293 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32294 > > refused) }
00:25:43 v #32295 > > │ 00:00:01 v #196 networking.test_port_open / { port =
00:25:43 v #32296 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32297 > > refused) }
00:25:43 v #32298 > > │ 00:00:02 v #197 networking.test_port_open / { port =
00:25:43 v #32299 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32300 > > refused) }
00:25:43 v #32301 > > │ 00:00:02 v #198 networking.test_port_open / { port =
00:25:43 v #32302 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32303 > > refused) }
00:25:43 v #32304 > > │ 00:00:02 v #199 networking.test_port_open / { port =
00:25:43 v #32305 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32306 > > refused) }
00:25:43 v #32307 > > │ 00:00:02 v #200 networking.test_port_open / { port =
00:25:43 v #32308 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32309 > > refused) }
00:25:43 v #32310 > > │ 00:00:02 v #201 networking.test_port_open / { port =
00:25:43 v #32311 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32312 > > refused) }
00:25:43 v #32313 > > │ 00:00:02 v #202 networking.test_port_open / { port =
00:25:43 v #32314 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32315 > > refused) }
00:25:43 v #32316 > > │ 00:00:02 v #203 networking.test_port_open / { port =
00:25:43 v #32317 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32318 > > refused) }
00:25:43 v #32319 > > │ 00:00:02 v #204 networking.test_port_open / { port =
00:25:43 v #32320 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32321 > > refused) }
00:25:43 v #32322 > > │ 00:00:02 v #205 networking.test_port_open / { port =
00:25:43 v #32323 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32324 > > refused) }
00:25:43 v #32325 > > │ 00:00:02 v #206 networking.wait_for_port_access / { port
00:25:43 v #32326 > > = 5555; retry = 200; timeout = None; status = true }
00:25:43 v #32327 > > │ 00:00:02 v #207 networking.test_port_open / { port =
00:25:43 v #32328 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32329 > > refused) }
00:25:43 v #32330 > > │ 00:00:02 v #208 networking.test_port_open / { port =
00:25:43 v #32331 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32332 > > refused) }
00:25:43 v #32333 > > │ 00:00:02 v #209 networking.test_port_open / { port =
00:25:43 v #32334 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32335 > > refused) }
00:25:43 v #32336 > > │ 00:00:02 v #210 networking.test_port_open / { port =
00:25:43 v #32337 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32338 > > refused) }
00:25:43 v #32339 > > │ 00:00:02 v #211 networking.test_port_open / { port =
00:25:43 v #32340 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32341 > > refused) }
00:25:43 v #32342 > > │ 00:00:02 v #212 networking.test_port_open / { port =
00:25:43 v #32343 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32344 > > refused) }
00:25:43 v #32345 > > │ 00:00:02 v #213 networking.test_port_open / { port =
00:25:43 v #32346 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32347 > > refused) }
00:25:43 v #32348 > > │ 00:00:02 v #214 networking.test_port_open / { port =
00:25:43 v #32349 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32350 > > refused) }
00:25:43 v #32351 > > │ 00:00:02 v #215 networking.test_port_open / { port =
00:25:43 v #32352 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32353 > > refused) }
00:25:43 v #32354 > > │ 00:00:02 v #216 networking.test_port_open / { port =
00:25:43 v #32355 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32356 > > refused) }
00:25:43 v #32357 > > │ 00:00:02 v #217 networking.test_port_open / { port =
00:25:43 v #32358 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32359 > > refused) }
00:25:43 v #32360 > > │ 00:00:02 v #218 networking.test_port_open / { port =
00:25:43 v #32361 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32362 > > refused) }
00:25:43 v #32363 > > │ 00:00:02 v #219 networking.test_port_open / { port =
00:25:43 v #32364 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32365 > > refused) }
00:25:43 v #32366 > > │ 00:00:02 v #220 networking.test_port_open / { port =
00:25:43 v #32367 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32368 > > refused) }
00:25:43 v #32369 > > │ 00:00:02 v #221 networking.test_port_open / { port =
00:25:43 v #32370 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32371 > > refused) }
00:25:43 v #32372 > > │ 00:00:02 v #222 networking.test_port_open / { port =
00:25:43 v #32373 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32374 > > refused) }
00:25:43 v #32375 > > │ 00:00:02 v #223 networking.test_port_open / { port =
00:25:43 v #32376 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32377 > > refused) }
00:25:43 v #32378 > > │ 00:00:02 v #224 networking.test_port_open / { port =
00:25:43 v #32379 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32380 > > refused) }
00:25:43 v #32381 > > │ 00:00:02 v #225 networking.test_port_open / { port =
00:25:43 v #32382 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32383 > > refused) }
00:25:43 v #32384 > > │ 00:00:02 v #226 networking.test_port_open / { port =
00:25:43 v #32385 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32386 > > refused) }
00:25:43 v #32387 > > │ 00:00:02 v #227 networking.test_port_open / { port =
00:25:43 v #32388 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32389 > > refused) }
00:25:43 v #32390 > > │ 00:00:02 v #228 networking.test_port_open / { port =
00:25:43 v #32391 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32392 > > refused) }
00:25:43 v #32393 > > │ 00:00:02 v #229 networking.test_port_open / { port =
00:25:43 v #32394 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32395 > > refused) }
00:25:43 v #32396 > > │ 00:00:02 v #230 networking.test_port_open / { port =
00:25:43 v #32397 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32398 > > refused) }
00:25:43 v #32399 > > │ 00:00:02 v #231 networking.test_port_open / { port =
00:25:43 v #32400 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32401 > > refused) }
00:25:43 v #32402 > > │ 00:00:02 v #232 networking.test_port_open / { port =
00:25:43 v #32403 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32404 > > refused) }
00:25:43 v #32405 > > │ 00:00:02 v #233 networking.test_port_open / { port =
00:25:43 v #32406 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32407 > > refused) }
00:25:43 v #32408 > > │ 00:00:02 v #234 networking.test_port_open / { port =
00:25:43 v #32409 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32410 > > refused) }
00:25:43 v #32411 > > │ 00:00:02 v #235 networking.test_port_open / { port =
00:25:43 v #32412 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32413 > > refused) }
00:25:43 v #32414 > > │ 00:00:02 v #236 networking.test_port_open / { port =
00:25:43 v #32415 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32416 > > refused) }
00:25:43 v #32417 > > │ 00:00:02 v #237 networking.test_port_open / { port =
00:25:43 v #32418 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32419 > > refused) }
00:25:43 v #32420 > > │ 00:00:02 v #238 networking.test_port_open / { port =
00:25:43 v #32421 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32422 > > refused) }
00:25:43 v #32423 > > │ 00:00:02 v #239 networking.test_port_open / { port =
00:25:43 v #32424 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32425 > > refused) }
00:25:43 v #32426 > > │ 00:00:02 v #240 networking.test_port_open / { port =
00:25:43 v #32427 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32428 > > refused) }
00:25:43 v #32429 > > │ 00:00:02 v #241 networking.test_port_open / { port =
00:25:43 v #32430 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32431 > > refused) }
00:25:43 v #32432 > > │ 00:00:02 v #242 networking.test_port_open / { port =
00:25:43 v #32433 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32434 > > refused) }
00:25:43 v #32435 > > │ 00:00:02 v #243 networking.test_port_open / { port =
00:25:43 v #32436 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32437 > > refused) }
00:25:43 v #32438 > > │ 00:00:02 v #244 networking.test_port_open / { port =
00:25:43 v #32439 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32440 > > refused) }
00:25:43 v #32441 > > │ 00:00:02 v #245 networking.test_port_open / { port =
00:25:43 v #32442 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32443 > > refused) }
00:25:43 v #32444 > > │ 00:00:02 v #246 networking.test_port_open / { port =
00:25:43 v #32445 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32446 > > refused) }
00:25:43 v #32447 > > │ 00:00:02 v #247 networking.test_port_open / { port =
00:25:43 v #32448 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32449 > > refused) }
00:25:43 v #32450 > > │ 00:00:02 v #248 networking.test_port_open / { port =
00:25:43 v #32451 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32452 > > refused) }
00:25:43 v #32453 > > │ 00:00:02 v #249 networking.test_port_open / { port =
00:25:43 v #32454 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32455 > > refused) }
00:25:43 v #32456 > > │ 00:00:02 v #250 networking.test_port_open / { port =
00:25:43 v #32457 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32458 > > refused) }
00:25:43 v #32459 > > │ 00:00:02 v #251 networking.test_port_open / { port =
00:25:43 v #32460 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32461 > > refused) }
00:25:43 v #32462 > > │ 00:00:02 v #252 networking.test_port_open / { port =
00:25:43 v #32463 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32464 > > refused) }
00:25:43 v #32465 > > │ 00:00:02 v #253 networking.test_port_open / { port =
00:25:43 v #32466 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32467 > > refused) }
00:25:43 v #32468 > > │ 00:00:02 v #254 networking.test_port_open / { port =
00:25:43 v #32469 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32470 > > refused) }
00:25:43 v #32471 > > │ 00:00:02 v #255 networking.test_port_open / { port =
00:25:43 v #32472 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32473 > > refused) }
00:25:43 v #32474 > > │ 00:00:02 v #256 networking.test_port_open / { port =
00:25:43 v #32475 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32476 > > refused) }
00:25:43 v #32477 > > │ 00:00:02 v #257 networking.test_port_open / { port =
00:25:43 v #32478 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32479 > > refused) }
00:25:43 v #32480 > > │ 00:00:02 v #258 networking.test_port_open / { port =
00:25:43 v #32481 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32482 > > refused) }
00:25:43 v #32483 > > │ 00:00:02 v #259 networking.test_port_open / { port =
00:25:43 v #32484 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32485 > > refused) }
00:25:43 v #32486 > > │ 00:00:02 v #260 networking.test_port_open / { port =
00:25:43 v #32487 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32488 > > refused) }
00:25:43 v #32489 > > │ 00:00:02 v #261 networking.test_port_open / { port =
00:25:43 v #32490 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32491 > > refused) }
00:25:43 v #32492 > > │ 00:00:02 v #262 networking.test_port_open / { port =
00:25:43 v #32493 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32494 > > refused) }
00:25:43 v #32495 > > │ 00:00:02 v #263 networking.test_port_open / { port =
00:25:43 v #32496 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32497 > > refused) }
00:25:43 v #32498 > > │ 00:00:02 v #264 networking.test_port_open / { port =
00:25:43 v #32499 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32500 > > refused) }
00:25:43 v #32501 > > │ 00:00:02 v #265 networking.test_port_open / { port =
00:25:43 v #32502 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32503 > > refused) }
00:25:43 v #32504 > > │ 00:00:02 v #266 networking.test_port_open / { port =
00:25:43 v #32505 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32506 > > refused) }
00:25:43 v #32507 > > │ 00:00:02 v #267 networking.test_port_open / { port =
00:25:43 v #32508 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32509 > > refused) }
00:25:43 v #32510 > > │ 00:00:02 v #268 networking.test_port_open / { port =
00:25:43 v #32511 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32512 > > refused) }
00:25:43 v #32513 > > │ 00:00:02 v #269 networking.test_port_open / { port =
00:25:43 v #32514 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32515 > > refused) }
00:25:43 v #32516 > > │ 00:00:02 v #270 networking.test_port_open / { port =
00:25:43 v #32517 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32518 > > refused) }
00:25:43 v #32519 > > │ 00:00:02 v #271 networking.test_port_open / { port =
00:25:43 v #32520 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32521 > > refused) }
00:25:43 v #32522 > > │ 00:00:02 v #272 networking.test_port_open / { port =
00:25:43 v #32523 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32524 > > refused) }
00:25:43 v #32525 > > │ 00:00:02 v #273 networking.test_port_open / { port =
00:25:43 v #32526 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32527 > > refused) }
00:25:43 v #32528 > > │ 00:00:02 v #274 networking.test_port_open / { port =
00:25:43 v #32529 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32530 > > refused) }
00:25:43 v #32531 > > │ 00:00:02 v #275 networking.test_port_open / { port =
00:25:43 v #32532 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32533 > > refused) }
00:25:43 v #32534 > > │ 00:00:02 v #276 networking.test_port_open / { port =
00:25:43 v #32535 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32536 > > refused) }
00:25:43 v #32537 > > │ 00:00:02 v #277 networking.test_port_open / { port =
00:25:43 v #32538 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32539 > > refused) }
00:25:43 v #32540 > > │ 00:00:02 v #278 networking.test_port_open / { port =
00:25:43 v #32541 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32542 > > refused) }
00:25:43 v #32543 > > │ 00:00:02 v #279 networking.test_port_open / { port =
00:25:43 v #32544 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32545 > > refused) }
00:25:43 v #32546 > > │ 00:00:02 v #280 networking.test_port_open / { port =
00:25:43 v #32547 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32548 > > refused) }
00:25:43 v #32549 > > │ 00:00:02 v #281 networking.test_port_open / { port =
00:25:43 v #32550 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32551 > > refused) }
00:25:43 v #32552 > > │ 00:00:02 v #282 networking.test_port_open / { port =
00:25:43 v #32553 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32554 > > refused) }
00:25:43 v #32555 > > │ 00:00:02 v #283 networking.test_port_open / { port =
00:25:43 v #32556 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32557 > > refused) }
00:25:43 v #32558 > > │ 00:00:02 v #284 networking.test_port_open / { port =
00:25:43 v #32559 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32560 > > refused) }
00:25:43 v #32561 > > │ 00:00:02 v #285 networking.test_port_open / { port =
00:25:43 v #32562 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32563 > > refused) }
00:25:43 v #32564 > > │ 00:00:02 v #286 networking.test_port_open / { port =
00:25:43 v #32565 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32566 > > refused) }
00:25:43 v #32567 > > │ 00:00:02 v #287 networking.test_port_open / { port =
00:25:43 v #32568 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32569 > > refused) }
00:25:43 v #32570 > > │ 00:00:02 v #288 networking.test_port_open / { port =
00:25:43 v #32571 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32572 > > refused) }
00:25:43 v #32573 > > │ 00:00:02 v #289 networking.test_port_open / { port =
00:25:43 v #32574 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32575 > > refused) }
00:25:43 v #32576 > > │ 00:00:02 v #290 networking.test_port_open / { port =
00:25:43 v #32577 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32578 > > refused) }
00:25:43 v #32579 > > │ 00:00:02 v #291 networking.test_port_open / { port =
00:25:43 v #32580 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32581 > > refused) }
00:25:43 v #32582 > > │ 00:00:02 v #292 networking.test_port_open / { port =
00:25:43 v #32583 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32584 > > refused) }
00:25:43 v #32585 > > │ 00:00:02 v #293 networking.test_port_open / { port =
00:25:43 v #32586 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32587 > > refused) }
00:25:43 v #32588 > > │ 00:00:02 v #294 networking.test_port_open / { port =
00:25:43 v #32589 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32590 > > refused) }
00:25:43 v #32591 > > │ 00:00:03 v #295 networking.test_port_open / { port =
00:25:43 v #32592 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32593 > > refused) }
00:25:43 v #32594 > > │ 00:00:03 v #296 networking.test_port_open / { port =
00:25:43 v #32595 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32596 > > refused) }
00:25:43 v #32597 > > │ 00:00:03 v #297 networking.test_port_open / { port =
00:25:43 v #32598 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32599 > > refused) }
00:25:43 v #32600 > > │ 00:00:03 v #298 networking.test_port_open / { port =
00:25:43 v #32601 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32602 > > refused) }
00:25:43 v #32603 > > │ 00:00:03 v #299 networking.test_port_open / { port =
00:25:43 v #32604 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32605 > > refused) }
00:25:43 v #32606 > > │ 00:00:03 v #300 networking.test_port_open / { port =
00:25:43 v #32607 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32608 > > refused) }
00:25:43 v #32609 > > │ 00:00:03 v #301 networking.test_port_open / { port =
00:25:43 v #32610 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32611 > > refused) }
00:25:43 v #32612 > > │ 00:00:03 v #302 networking.test_port_open / { port =
00:25:43 v #32613 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32614 > > refused) }
00:25:43 v #32615 > > │ 00:00:03 v #303 networking.test_port_open / { port =
00:25:43 v #32616 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32617 > > refused) }
00:25:43 v #32618 > > │ 00:00:03 v #304 networking.test_port_open / { port =
00:25:43 v #32619 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32620 > > refused) }
00:25:43 v #32621 > > │ 00:00:03 v #305 networking.test_port_open / { port =
00:25:43 v #32622 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32623 > > refused) }
00:25:43 v #32624 > > │ 00:00:03 v #306 networking.test_port_open / { port =
00:25:43 v #32625 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32626 > > refused) }
00:25:43 v #32627 > > │ 00:00:03 v #307 networking.wait_for_port_access / { port
00:25:43 v #32628 > > = 5555; retry = 300; timeout = None; status = true }
00:25:43 v #32629 > > │ 00:00:03 v #308 networking.test_port_open / { port =
00:25:43 v #32630 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32631 > > refused) }
00:25:43 v #32632 > > │ 00:00:03 v #309 networking.test_port_open / { port =
00:25:43 v #32633 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32634 > > refused) }
00:25:43 v #32635 > > │ 00:00:03 v #310 networking.test_port_open / { port =
00:25:43 v #32636 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32637 > > refused) }
00:25:43 v #32638 > > │ 00:00:03 v #311 networking.test_port_open / { port =
00:25:43 v #32639 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32640 > > refused) }
00:25:43 v #32641 > > │ 00:00:03 v #312 networking.test_port_open / { port =
00:25:43 v #32642 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32643 > > refused) }
00:25:43 v #32644 > > │ 00:00:03 v #313 networking.test_port_open / { port =
00:25:43 v #32645 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32646 > > refused) }
00:25:43 v #32647 > > │ 00:00:03 v #314 networking.test_port_open / { port =
00:25:43 v #32648 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32649 > > refused) }
00:25:43 v #32650 > > │ 00:00:03 v #315 networking.test_port_open / { port =
00:25:43 v #32651 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32652 > > refused) }
00:25:43 v #32653 > > │ 00:00:03 v #316 networking.test_port_open / { port =
00:25:43 v #32654 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32655 > > refused) }
00:25:43 v #32656 > > │ 00:00:03 v #317 networking.test_port_open / { port =
00:25:43 v #32657 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32658 > > refused) }
00:25:43 v #32659 > > │ 00:00:03 v #318 networking.test_port_open / { port =
00:25:43 v #32660 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32661 > > refused) }
00:25:43 v #32662 > > │ 00:00:03 v #319 networking.test_port_open / { port =
00:25:43 v #32663 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32664 > > refused) }
00:25:43 v #32665 > > │ 00:00:03 v #320 networking.test_port_open / { port =
00:25:43 v #32666 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32667 > > refused) }
00:25:43 v #32668 > > │ 00:00:03 v #321 networking.test_port_open / { port =
00:25:43 v #32669 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32670 > > refused) }
00:25:43 v #32671 > > │ 00:00:03 v #322 networking.test_port_open / { port =
00:25:43 v #32672 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32673 > > refused) }
00:25:43 v #32674 > > │ 00:00:03 v #323 networking.test_port_open / { port =
00:25:43 v #32675 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32676 > > refused) }
00:25:43 v #32677 > > │ 00:00:03 v #324 networking.test_port_open / { port =
00:25:43 v #32678 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32679 > > refused) }
00:25:43 v #32680 > > │ 00:00:03 v #325 networking.test_port_open / { port =
00:25:43 v #32681 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32682 > > refused) }
00:25:43 v #32683 > > │ 00:00:03 v #326 networking.test_port_open / { port =
00:25:43 v #32684 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32685 > > refused) }
00:25:43 v #32686 > > │ 00:00:03 v #327 networking.test_port_open / { port =
00:25:43 v #32687 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32688 > > refused) }
00:25:43 v #32689 > > │ 00:00:03 v #328 networking.test_port_open / { port =
00:25:43 v #32690 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32691 > > refused) }
00:25:43 v #32692 > > │ 00:00:03 v #329 networking.test_port_open / { port =
00:25:43 v #32693 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32694 > > refused) }
00:25:43 v #32695 > > │ 00:00:03 v #330 networking.test_port_open / { port =
00:25:43 v #32696 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32697 > > refused) }
00:25:43 v #32698 > > │ 00:00:03 v #331 networking.test_port_open / { port =
00:25:43 v #32699 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32700 > > refused) }
00:25:43 v #32701 > > │ 00:00:03 v #332 networking.test_port_open / { port =
00:25:43 v #32702 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32703 > > refused) }
00:25:43 v #32704 > > │ 00:00:03 v #333 networking.test_port_open / { port =
00:25:43 v #32705 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32706 > > refused) }
00:25:43 v #32707 > > │ 00:00:03 v #334 networking.test_port_open / { port =
00:25:43 v #32708 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32709 > > refused) }
00:25:43 v #32710 > > │ 00:00:03 v #335 networking.test_port_open / { port =
00:25:43 v #32711 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32712 > > refused) }
00:25:43 v #32713 > > │ 00:00:03 v #336 networking.test_port_open / { port =
00:25:43 v #32714 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32715 > > refused) }
00:25:43 v #32716 > > │ 00:00:03 v #337 networking.test_port_open / { port =
00:25:43 v #32717 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32718 > > refused) }
00:25:43 v #32719 > > │ 00:00:03 v #338 networking.test_port_open / { port =
00:25:43 v #32720 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32721 > > refused) }
00:25:43 v #32722 > > │ 00:00:03 v #339 networking.test_port_open / { port =
00:25:43 v #32723 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32724 > > refused) }
00:25:43 v #32725 > > │ 00:00:03 v #340 networking.test_port_open / { port =
00:25:43 v #32726 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32727 > > refused) }
00:25:43 v #32728 > > │ 00:00:03 v #341 networking.test_port_open / { port =
00:25:43 v #32729 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32730 > > refused) }
00:25:43 v #32731 > > │ 00:00:03 v #342 networking.test_port_open / { port =
00:25:43 v #32732 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32733 > > refused) }
00:25:43 v #32734 > > │ 00:00:03 v #343 networking.test_port_open / { port =
00:25:43 v #32735 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32736 > > refused) }
00:25:43 v #32737 > > │ 00:00:03 v #344 networking.test_port_open / { port =
00:25:43 v #32738 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32739 > > refused) }
00:25:43 v #32740 > > │ 00:00:03 v #345 networking.test_port_open / { port =
00:25:43 v #32741 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32742 > > refused) }
00:25:43 v #32743 > > │ 00:00:03 v #346 networking.test_port_open / { port =
00:25:43 v #32744 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32745 > > refused) }
00:25:43 v #32746 > > │ 00:00:03 v #347 networking.test_port_open / { port =
00:25:43 v #32747 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32748 > > refused) }
00:25:43 v #32749 > > │ 00:00:03 v #348 networking.test_port_open / { port =
00:25:43 v #32750 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32751 > > refused) }
00:25:43 v #32752 > > │ 00:00:03 v #349 networking.test_port_open / { port =
00:25:43 v #32753 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32754 > > refused) }
00:25:43 v #32755 > > │ 00:00:03 v #350 networking.test_port_open / { port =
00:25:43 v #32756 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32757 > > refused) }
00:25:43 v #32758 > > │ 00:00:03 v #351 networking.test_port_open / { port =
00:25:43 v #32759 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32760 > > refused) }
00:25:43 v #32761 > > │ 00:00:03 v #352 networking.test_port_open / { port =
00:25:43 v #32762 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32763 > > refused) }
00:25:43 v #32764 > > │ 00:00:03 v #353 networking.test_port_open / { port =
00:25:43 v #32765 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32766 > > refused) }
00:25:43 v #32767 > > │ 00:00:03 v #354 networking.test_port_open / { port =
00:25:43 v #32768 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32769 > > refused) }
00:25:43 v #32770 > > │ 00:00:03 v #355 networking.test_port_open / { port =
00:25:43 v #32771 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32772 > > refused) }
00:25:43 v #32773 > > │ 00:00:03 v #356 networking.test_port_open / { port =
00:25:43 v #32774 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32775 > > refused) }
00:25:43 v #32776 > > │ 00:00:03 v #357 networking.test_port_open / { port =
00:25:43 v #32777 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32778 > > refused) }
00:25:43 v #32779 > > │ 00:00:03 v #358 networking.test_port_open / { port =
00:25:43 v #32780 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32781 > > refused) }
00:25:43 v #32782 > > │ 00:00:03 v #359 networking.test_port_open / { port =
00:25:43 v #32783 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32784 > > refused) }
00:25:43 v #32785 > > │ 00:00:03 v #360 networking.test_port_open / { port =
00:25:43 v #32786 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32787 > > refused) }
00:25:43 v #32788 > > │ 00:00:03 v #361 networking.test_port_open / { port =
00:25:43 v #32789 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32790 > > refused) }
00:25:43 v #32791 > > │ 00:00:03 v #362 networking.test_port_open / { port =
00:25:43 v #32792 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32793 > > refused) }
00:25:43 v #32794 > > │ 00:00:03 v #363 networking.test_port_open / { port =
00:25:43 v #32795 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32796 > > refused) }
00:25:43 v #32797 > > │ 00:00:03 v #364 networking.test_port_open / { port =
00:25:43 v #32798 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32799 > > refused) }
00:25:43 v #32800 > > │ 00:00:03 v #365 networking.test_port_open / { port =
00:25:43 v #32801 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32802 > > refused) }
00:25:43 v #32803 > > │ 00:00:03 v #366 networking.test_port_open / { port =
00:25:43 v #32804 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32805 > > refused) }
00:25:43 v #32806 > > │ 00:00:03 v #367 networking.test_port_open / { port =
00:25:43 v #32807 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32808 > > refused) }
00:25:43 v #32809 > > │ 00:00:03 v #368 networking.test_port_open / { port =
00:25:43 v #32810 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32811 > > refused) }
00:25:43 v #32812 > > │ 00:00:03 v #369 networking.test_port_open / { port =
00:25:43 v #32813 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32814 > > refused) }
00:25:43 v #32815 > > │ 00:00:03 v #370 networking.test_port_open / { port =
00:25:43 v #32816 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32817 > > refused) }
00:25:43 v #32818 > > │ 00:00:03 v #371 networking.test_port_open / { port =
00:25:43 v #32819 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32820 > > refused) }
00:25:43 v #32821 > > │ 00:00:03 v #372 networking.test_port_open / { port =
00:25:43 v #32822 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32823 > > refused) }
00:25:43 v #32824 > > │ 00:00:03 v #373 networking.test_port_open / { port =
00:25:43 v #32825 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32826 > > refused) }
00:25:43 v #32827 > > │ 00:00:03 v #374 networking.test_port_open / { port =
00:25:43 v #32828 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32829 > > refused) }
00:25:43 v #32830 > > │ 00:00:03 v #375 networking.test_port_open / { port =
00:25:43 v #32831 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32832 > > refused) }
00:25:43 v #32833 > > │ 00:00:03 v #376 networking.test_port_open / { port =
00:25:43 v #32834 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32835 > > refused) }
00:25:43 v #32836 > > │ 00:00:03 v #377 networking.test_port_open / { port =
00:25:43 v #32837 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32838 > > refused) }
00:25:43 v #32839 > > │ 00:00:03 v #378 networking.test_port_open / { port =
00:25:43 v #32840 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32841 > > refused) }
00:25:43 v #32842 > > │ 00:00:03 v #379 networking.test_port_open / { port =
00:25:43 v #32843 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32844 > > refused) }
00:25:43 v #32845 > > │ 00:00:03 v #380 networking.test_port_open / { port =
00:25:43 v #32846 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32847 > > refused) }
00:25:43 v #32848 > > │ 00:00:03 v #381 networking.test_port_open / { port =
00:25:43 v #32849 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32850 > > refused) }
00:25:43 v #32851 > > │ 00:00:03 v #382 networking.test_port_open / { port =
00:25:43 v #32852 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32853 > > refused) }
00:25:43 v #32854 > > │ 00:00:03 v #383 networking.test_port_open / { port =
00:25:43 v #32855 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32856 > > refused) }
00:25:43 v #32857 > > │ 00:00:03 v #384 networking.test_port_open / { port =
00:25:43 v #32858 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32859 > > refused) }
00:25:43 v #32860 > > │ 00:00:03 v #385 networking.test_port_open / { port =
00:25:43 v #32861 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32862 > > refused) }
00:25:43 v #32863 > > │ 00:00:03 v #386 networking.test_port_open / { port =
00:25:43 v #32864 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32865 > > refused) }
00:25:43 v #32866 > > │ 00:00:03 v #387 networking.test_port_open / { port =
00:25:43 v #32867 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32868 > > refused) }
00:25:43 v #32869 > > │ 00:00:03 v #388 networking.test_port_open / { port =
00:25:43 v #32870 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32871 > > refused) }
00:25:43 v #32872 > > │ 00:00:03 v #389 networking.test_port_open / { port =
00:25:43 v #32873 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32874 > > refused) }
00:25:43 v #32875 > > │ 00:00:03 v #390 networking.test_port_open / { port =
00:25:43 v #32876 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32877 > > refused) }
00:25:43 v #32878 > > │ 00:00:03 v #391 networking.test_port_open / { port =
00:25:43 v #32879 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32880 > > refused) }
00:25:43 v #32881 > > │ 00:00:03 v #392 networking.test_port_open / { port =
00:25:43 v #32882 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32883 > > refused) }
00:25:43 v #32884 > > │ 00:00:04 v #393 networking.test_port_open / { port =
00:25:43 v #32885 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32886 > > refused) }
00:25:43 v #32887 > > │ 00:00:04 v #394 networking.test_port_open / { port =
00:25:43 v #32888 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32889 > > refused) }
00:25:43 v #32890 > > │ 00:00:04 v #395 networking.test_port_open / { port =
00:25:43 v #32891 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32892 > > refused) }
00:25:43 v #32893 > > │ 00:00:04 v #396 networking.test_port_open / { port =
00:25:43 v #32894 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32895 > > refused) }
00:25:43 v #32896 > > │ 00:00:04 v #397 networking.test_port_open / { port =
00:25:43 v #32897 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32898 > > refused) }
00:25:43 v #32899 > > │ 00:00:04 v #398 networking.test_port_open / { port =
00:25:43 v #32900 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32901 > > refused) }
00:25:43 v #32902 > > │ 00:00:04 v #399 networking.test_port_open / { port =
00:25:43 v #32903 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32904 > > refused) }
00:25:43 v #32905 > > │ 00:00:04 v #400 networking.test_port_open / { port =
00:25:43 v #32906 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32907 > > refused) }
00:25:43 v #32908 > > │ 00:00:04 v #401 networking.test_port_open / { port =
00:25:43 v #32909 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32910 > > refused) }
00:25:43 v #32911 > > │ 00:00:04 v #402 networking.test_port_open / { port =
00:25:43 v #32912 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32913 > > refused) }
00:25:43 v #32914 > > │ 00:00:04 v #403 networking.test_port_open / { port =
00:25:43 v #32915 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32916 > > refused) }
00:25:43 v #32917 > > │ 00:00:04 v #404 networking.test_port_open / { port =
00:25:43 v #32918 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32919 > > refused) }
00:25:43 v #32920 > > │ 00:00:04 v #405 networking.test_port_open / { port =
00:25:43 v #32921 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32922 > > refused) }
00:25:43 v #32923 > > │ 00:00:04 v #406 networking.test_port_open / { port =
00:25:43 v #32924 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32925 > > refused) }
00:25:43 v #32926 > > │ 00:00:04 v #407 networking.test_port_open / { port =
00:25:43 v #32927 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32928 > > refused) }
00:25:43 v #32929 > > │ 00:00:04 v #408 networking.wait_for_port_access / { port
00:25:43 v #32930 > > = 5555; retry = 400; timeout = None; status = true }
00:25:43 v #32931 > > │ 00:00:04 v #409 networking.test_port_open / { port =
00:25:43 v #32932 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32933 > > refused) }
00:25:43 v #32934 > > │ 00:00:04 v #410 networking.test_port_open / { port =
00:25:43 v #32935 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32936 > > refused) }
00:25:43 v #32937 > > │ 00:00:04 v #411 networking.test_port_open / { port =
00:25:43 v #32938 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32939 > > refused) }
00:25:43 v #32940 > > │ 00:00:04 v #412 networking.test_port_open / { port =
00:25:43 v #32941 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32942 > > refused) }
00:25:43 v #32943 > > │ 00:00:04 v #413 networking.test_port_open / { port =
00:25:43 v #32944 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32945 > > refused) }
00:25:43 v #32946 > > │ 00:00:04 v #414 networking.test_port_open / { port =
00:25:43 v #32947 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32948 > > refused) }
00:25:43 v #32949 > > │ 00:00:04 v #415 networking.test_port_open / { port =
00:25:43 v #32950 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32951 > > refused) }
00:25:43 v #32952 > > │ 00:00:04 v #416 networking.test_port_open / { port =
00:25:43 v #32953 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32954 > > refused) }
00:25:43 v #32955 > > │ 00:00:04 v #417 networking.test_port_open / { port =
00:25:43 v #32956 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32957 > > refused) }
00:25:43 v #32958 > > │ 00:00:04 v #418 networking.test_port_open / { port =
00:25:43 v #32959 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32960 > > refused) }
00:25:43 v #32961 > > │ 00:00:04 v #419 networking.test_port_open / { port =
00:25:43 v #32962 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32963 > > refused) }
00:25:43 v #32964 > > │ 00:00:04 v #420 networking.test_port_open / { port =
00:25:43 v #32965 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32966 > > refused) }
00:25:43 v #32967 > > │ 00:00:04 v #421 networking.test_port_open / { port =
00:25:43 v #32968 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32969 > > refused) }
00:25:43 v #32970 > > │ 00:00:04 v #422 networking.test_port_open / { port =
00:25:43 v #32971 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32972 > > refused) }
00:25:43 v #32973 > > │ 00:00:04 v #423 networking.test_port_open / { port =
00:25:43 v #32974 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32975 > > refused) }
00:25:43 v #32976 > > │ 00:00:04 v #424 networking.test_port_open / { port =
00:25:43 v #32977 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32978 > > refused) }
00:25:43 v #32979 > > │ 00:00:04 v #425 networking.test_port_open / { port =
00:25:43 v #32980 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32981 > > refused) }
00:25:43 v #32982 > > │ 00:00:04 v #426 networking.test_port_open / { port =
00:25:43 v #32983 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32984 > > refused) }
00:25:43 v #32985 > > │ 00:00:04 v #427 networking.test_port_open / { port =
00:25:43 v #32986 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32987 > > refused) }
00:25:43 v #32988 > > │ 00:00:04 v #428 networking.test_port_open / { port =
00:25:43 v #32989 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32990 > > refused) }
00:25:43 v #32991 > > │ 00:00:04 v #429 networking.test_port_open / { port =
00:25:43 v #32992 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32993 > > refused) }
00:25:43 v #32994 > > │ 00:00:04 v #430 networking.test_port_open / { port =
00:25:43 v #32995 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32996 > > refused) }
00:25:43 v #32997 > > │ 00:00:04 v #431 networking.test_port_open / { port =
00:25:43 v #32998 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #32999 > > refused) }
00:25:43 v #33000 > > │ 00:00:04 v #432 networking.test_port_open / { port =
00:25:43 v #33001 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #33002 > > refused) }
00:25:43 v #33003 > > │ 00:00:04 v #433 networking.test_port_open / { port =
00:25:43 v #33004 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #33005 > > refused) }
00:25:43 v #33006 > > │ 00:00:04 v #434 networking.test_port_open / { port =
00:25:43 v #33007 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #33008 > > refused) }
00:25:43 v #33009 > > │ 00:00:04 v #435 networking.test_port_open / { port =
00:25:43 v #33010 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #33011 > > refused) }
00:25:43 v #33012 > > │ 00:00:04 v #436 networking.test_port_open / { port =
00:25:43 v #33013 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #33014 > > refused) }
00:25:43 v #33015 > > │ 00:00:04 v #437 networking.test_port_open / { port =
00:25:43 v #33016 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #33017 > > refused) }
00:25:43 v #33018 > > │ 00:00:04 v #438 networking.test_port_open / { port =
00:25:43 v #33019 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #33020 > > refused) }
00:25:43 v #33021 > > │ 00:00:04 v #439 networking.test_port_open / { port =
00:25:43 v #33022 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #33023 > > refused) }
00:25:43 v #33024 > > │ 00:00:04 v #440 networking.test_port_open / { port =
00:25:43 v #33025 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #33026 > > refused) }
00:25:43 v #33027 > > │ 00:00:04 v #441 networking.test_port_open / { port =
00:25:43 v #33028 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #33029 > > refused) }
00:25:43 v #33030 > > │ 00:00:04 v #442 networking.test_port_open / { port =
00:25:43 v #33031 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #33032 > > refused) }
00:25:43 v #33033 > > │ 00:00:04 v #443 networking.test_port_open / { port =
00:25:43 v #33034 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #33035 > > refused) }
00:25:43 v #33036 > > │ 00:00:04 v #444 networking.test_port_open / { port =
00:25:43 v #33037 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #33038 > > refused) }
00:25:43 v #33039 > > │ 00:00:04 v #445 networking.test_port_open / { port =
00:25:43 v #33040 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #33041 > > refused) }
00:25:43 v #33042 > > │ 00:00:04 v #446 networking.test_port_open / { port =
00:25:43 v #33043 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #33044 > > refused) }
00:25:43 v #33045 > > │ 00:00:04 v #447 networking.test_port_open / { port =
00:25:43 v #33046 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #33047 > > refused) }
00:25:43 v #33048 > > │ 00:00:04 v #448 networking.test_port_open / { port =
00:25:43 v #33049 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #33050 > > refused) }
00:25:43 v #33051 > > │ 00:00:04 v #449 networking.test_port_open / { port =
00:25:43 v #33052 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #33053 > > refused) }
00:25:43 v #33054 > > │ 00:00:04 v #450 networking.test_port_open / { port =
00:25:43 v #33055 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #33056 > > refused) }
00:25:43 v #33057 > > │ 00:00:04 v #451 networking.test_port_open / { port =
00:25:43 v #33058 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #33059 > > refused) }
00:25:43 v #33060 > > │ 00:00:04 v #452 networking.test_port_open / { port =
00:25:43 v #33061 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #33062 > > refused) }
00:25:43 v #33063 > > │ 00:00:04 v #453 networking.test_port_open / { port =
00:25:43 v #33064 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #33065 > > refused) }
00:25:43 v #33066 > > │ 00:00:04 v #454 networking.test_port_open / { port =
00:25:43 v #33067 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #33068 > > refused) }
00:25:43 v #33069 > > │ 00:00:04 v #455 networking.test_port_open / { port =
00:25:43 v #33070 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #33071 > > refused) }
00:25:43 v #33072 > > │ 00:00:04 v #456 networking.test_port_open / { port =
00:25:43 v #33073 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #33074 > > refused) }
00:25:43 v #33075 > > │ 00:00:04 v #457 networking.test_port_open / { port =
00:25:43 v #33076 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #33077 > > refused) }
00:25:43 v #33078 > > │ 00:00:04 v #458 networking.test_port_open / { port =
00:25:43 v #33079 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #33080 > > refused) }
00:25:43 v #33081 > > │ 00:00:04 v #459 networking.test_port_open / { port =
00:25:43 v #33082 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #33083 > > refused) }
00:25:43 v #33084 > > │ 00:00:04 v #460 networking.test_port_open / { port =
00:25:43 v #33085 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #33086 > > refused) }
00:25:43 v #33087 > > │ 00:00:04 v #461 networking.test_port_open / { port =
00:25:43 v #33088 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #33089 > > refused) }
00:25:43 v #33090 > > │ 00:00:04 v #462 networking.test_port_open / { port =
00:25:43 v #33091 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #33092 > > refused) }
00:25:43 v #33093 > > │ 00:00:04 v #463 networking.test_port_open / { port =
00:25:43 v #33094 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #33095 > > refused) }
00:25:43 v #33096 > > │ 00:00:04 v #464 networking.test_port_open / { port =
00:25:43 v #33097 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #33098 > > refused) }
00:25:43 v #33099 > > │ 00:00:04 v #465 networking.test_port_open / { port =
00:25:43 v #33100 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #33101 > > refused) }
00:25:43 v #33102 > > │ 00:00:04 v #466 networking.test_port_open / { port =
00:25:43 v #33103 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #33104 > > refused) }
00:25:43 v #33105 > > │ 00:00:04 v #467 networking.test_port_open / { port =
00:25:43 v #33106 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #33107 > > refused) }
00:25:43 v #33108 > > │ 00:00:04 v #468 networking.test_port_open / { port =
00:25:43 v #33109 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #33110 > > refused) }
00:25:43 v #33111 > > │ 00:00:04 v #469 networking.test_port_open / { port =
00:25:43 v #33112 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #33113 > > refused) }
00:25:43 v #33114 > > │ 00:00:04 v #470 networking.test_port_open / { port =
00:25:43 v #33115 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #33116 > > refused) }
00:25:43 v #33117 > > │ 00:00:04 v #471 networking.test_port_open / { port =
00:25:43 v #33118 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #33119 > > refused) }
00:25:43 v #33120 > > │ 00:00:04 v #472 networking.test_port_open / { port =
00:25:43 v #33121 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #33122 > > refused) }
00:25:43 v #33123 > > │ 00:00:04 v #473 networking.test_port_open / { port =
00:25:43 v #33124 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #33125 > > refused) }
00:25:43 v #33126 > > │ 00:00:04 v #474 networking.test_port_open / { port =
00:25:43 v #33127 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #33128 > > refused) }
00:25:43 v #33129 > > │ 00:00:04 v #475 networking.test_port_open / { port =
00:25:43 v #33130 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #33131 > > refused) }
00:25:43 v #33132 > > │ 00:00:04 v #476 networking.test_port_open / { port =
00:25:43 v #33133 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #33134 > > refused) }
00:25:43 v #33135 > > │ 00:00:04 v #477 networking.test_port_open / { port =
00:25:43 v #33136 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #33137 > > refused) }
00:25:43 v #33138 > > │ 00:00:04 v #478 networking.test_port_open / { port =
00:25:43 v #33139 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #33140 > > refused) }
00:25:43 v #33141 > > │ 00:00:04 v #479 networking.test_port_open / { port =
00:25:43 v #33142 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #33143 > > refused) }
00:25:43 v #33144 > > │ 00:00:04 v #480 networking.test_port_open / { port =
00:25:43 v #33145 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #33146 > > refused) }
00:25:43 v #33147 > > │ 00:00:04 v #481 networking.test_port_open / { port =
00:25:43 v #33148 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #33149 > > refused) }
00:25:43 v #33150 > > │ 00:00:04 v #482 networking.test_port_open / { port =
00:25:43 v #33151 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #33152 > > refused) }
00:25:43 v #33153 > > │ 00:00:04 v #483 networking.test_port_open / { port =
00:25:43 v #33154 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #33155 > > refused) }
00:25:43 v #33156 > > │ 00:00:04 v #484 networking.test_port_open / { port =
00:25:43 v #33157 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #33158 > > refused) }
00:25:43 v #33159 > > │ 00:00:04 v #485 networking.test_port_open / { port =
00:25:43 v #33160 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #33161 > > refused) }
00:25:43 v #33162 > > │ 00:00:04 v #486 networking.test_port_open / { port =
00:25:43 v #33163 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #33164 > > refused) }
00:25:43 v #33165 > > │ 00:00:04 v #487 networking.test_port_open / { port =
00:25:43 v #33166 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #33167 > > refused) }
00:25:43 v #33168 > > │ 00:00:04 v #488 networking.test_port_open / { port =
00:25:43 v #33169 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #33170 > > refused) }
00:25:43 v #33171 > > │ 00:00:04 v #489 networking.test_port_open / { port =
00:25:43 v #33172 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #33173 > > refused) }
00:25:43 v #33174 > > │ 00:00:05 v #490 networking.test_port_open / { port =
00:25:43 v #33175 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #33176 > > refused) }
00:25:43 v #33177 > > │ 00:00:05 d #491 _2
00:25:43 v #33178 > > │ 00:00:05 d #492 _3
00:25:43 v #33179 > > │ 00:00:05 d #493 4
00:25:43 v #33180 > > │ 00:00:06 v #494 networking.wait_for_port_access / { port
00:25:43 v #33181 > > = 5555; retry = 100; timeout = None; status = false }
00:25:43 v #33182 > > │ 00:00:07 d #495 _4
00:25:43 v #33183 > > │ 00:00:07 d #496 _5
00:25:43 v #33184 > > │ 00:00:07 v #497 networking.test_port_open / { port =
00:25:43 v #33185 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:43 v #33186 > > refused) }
00:25:43 v #33187 > > │ 00:00:07 d #498 5
00:25:43 v #33188 > > │ 00:00:07 d #499 6
00:25:43 v #33189 > > │ __assert_between / actual: 483L / expected: struct (2L,
00:25:43 v #33190 > > 1500L)
00:25:43 v #33191 > > │ __assert_between / actual: 195L / expected: struct (80L,
00:25:43 v #33192 > > 600L)
00:25:43 v #33193 > > │ __assert_eq / actual: true / expected: true
00:25:43 v #33194 > > │
00:25:43 v #33195 > >
00:25:43 v #33196 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:43 v #33197 > > //// test
00:25:43 v #33198 > >
00:25:43 v #33199 > > inl lock_port host port = async.new_async_unit fun () =>
00:25:43 v #33200 > >     trace Debug (fun () => "_1") id
00:25:43 v #33201 > >     async.sleep 500 |> async.do
00:25:43 v #33202 > >     inl listener = new_tcp_listener (ip_address_parse host) port |> use
00:25:43 v #33203 > >     trace Debug (fun () => "_2") id
00:25:43 v #33204 > >     listener |> listener_start
00:25:43 v #33205 > >     trace Debug (fun () => "_3") id
00:25:43 v #33206 > >     async.sleep 200 |> async.do
00:25:43 v #33207 > >     trace Debug (fun () => "_4") id
00:25:43 v #33208 > >     listener |> listener_stop
00:25:43 v #33209 > >     trace Debug (fun () => "_5") id
00:25:43 v #33210 > >
00:25:43 v #33211 > > inl host = "127.0.0.1"
00:25:43 v #33212 > > inl port = 5555
00:25:43 v #33213 > >
00:25:43 v #33214 > > fun () =>
00:25:43 v #33215 > >     trace Debug (fun () => "1") id
00:25:43 v #33216 > >     inl child = lock_port host port |> async.start_child |> async.let'
00:25:43 v #33217 > >     trace Debug (fun () => "2") id
00:25:43 v #33218 > >     async.sleep 1 |> async.do
00:25:43 v #33219 > >     trace Debug (fun () => "3") id
00:25:43 v #33220 > >     inl retries1 = wait_for_port_access (Some 60 |> optionm'.box) true host port
00:25:43 v #33221 > > |> async.let'
00:25:43 v #33222 > >     trace Debug (fun () => "4") id
00:25:43 v #33223 > >     inl retries2 = wait_for_port_access (Some 60 |> optionm'.box) false host
00:25:43 v #33224 > > port |> async.let'
00:25:43 v #33225 > >     trace Debug (fun () => "5") id
00:25:43 v #33226 > >     child |> async.do
00:25:43 v #33227 > >     trace Debug (fun () => "6") id
00:25:43 v #33228 > >     (retries1, retries2) |> return
00:25:43 v #33229 > > |> async.new_async_unit
00:25:43 v #33230 > > |> async.run_with_timeout 2000
00:25:43 v #33231 > > |> function
00:25:43 v #33232 > >     | Some (retries1, retries2) =>
00:25:43 v #33233 > >         retries1
00:25:43 v #33234 > >         |> _assert_between
00:25:43 v #33235 > >             if platform.is_windows () then 4i64 else 2
00:25:43 v #33236 > >             if platform.is_windows () then 15 else 150
00:25:43 v #33237 > >
00:25:43 v #33238 > >         retries2
00:25:43 v #33239 > >         |> _assert_between
00:25:43 v #33240 > >             if platform.is_windows () then 5i64 else 0
00:25:43 v #33241 > >             if platform.is_windows () then 20 else 60
00:25:43 v #33242 > >
00:25:43 v #33243 > >         true
00:25:43 v #33244 > >     | _ => false
00:25:43 v #33245 > > |> _assert_eq true
00:25:50 v #33246 > >
00:25:50 v #33247 > > ── [ 7.75s - stdout ] ──────────────────────────────────────────────────────────
00:25:50 v #33248 > > │ 00:00:00 d #1 1
00:25:50 v #33249 > > │ 00:00:00 d #2 2
00:25:50 v #33250 > > │ 00:00:00 d #3 _1
00:25:50 v #33251 > > │ 00:00:00 d #4 3
00:25:50 v #33252 > > │ 00:00:00 v #5 networking.test_port_open / { port = 5555;
00:25:50 v #33253 > > ex = System.AggregateException: One or more errors occurred. (Connection
00:25:50 v #33254 > > refused) }
00:25:50 v #33255 > > │ 00:00:00 v #6 networking.test_port_open / { port = 5555;
00:25:50 v #33256 > > ex = System.AggregateException: One or more errors occurred. (Connection
00:25:50 v #33257 > > refused) }
00:25:50 v #33258 > > │ 00:00:00 v #7 networking.test_port_open / { port = 5555;
00:25:50 v #33259 > > ex = System.AggregateException: One or more errors occurred. (Connection
00:25:50 v #33260 > > refused) }
00:25:50 v #33261 > > │ 00:00:00 v #8 networking.test_port_open / { port = 5555;
00:25:50 v #33262 > > ex = System.AggregateException: One or more errors occurred. (Connection
00:25:50 v #33263 > > refused) }
00:25:50 v #33264 > > │ 00:00:00 v #9 networking.test_port_open / { port = 5555;
00:25:50 v #33265 > > ex = System.AggregateException: One or more errors occurred. (Connection
00:25:50 v #33266 > > refused) }
00:25:50 v #33267 > > │ 00:00:00 v #10 networking.test_port_open / { port =
00:25:50 v #33268 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:50 v #33269 > > refused) }
00:25:50 v #33270 > > │ 00:00:00 v #11 networking.test_port_open / { port =
00:25:50 v #33271 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:50 v #33272 > > refused) }
00:25:50 v #33273 > > │ 00:00:00 v #12 networking.test_port_open / { port =
00:25:50 v #33274 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:50 v #33275 > > refused) }
00:25:50 v #33276 > > │ 00:00:00 v #13 networking.test_port_open / { port =
00:25:50 v #33277 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:50 v #33278 > > refused) }
00:25:50 v #33279 > > │ 00:00:00 v #14 networking.test_port_open / { port =
00:25:50 v #33280 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:50 v #33281 > > refused) }
00:25:50 v #33282 > > │ 00:00:00 v #15 networking.test_port_open / { port =
00:25:50 v #33283 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:50 v #33284 > > refused) }
00:25:50 v #33285 > > │ 00:00:00 v #16 networking.test_port_open / { port =
00:25:50 v #33286 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:50 v #33287 > > refused) }
00:25:50 v #33288 > > │ 00:00:00 v #17 networking.test_port_open / { port =
00:25:50 v #33289 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:50 v #33290 > > refused) }
00:25:50 v #33291 > > │ 00:00:00 v #18 networking.test_port_open / { port =
00:25:50 v #33292 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:50 v #33293 > > refused) }
00:25:50 v #33294 > > │ 00:00:00 v #19 networking.test_port_open / { port =
00:25:50 v #33295 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:50 v #33296 > > refused) }
00:25:50 v #33297 > > │ 00:00:00 v #20 networking.test_port_open / { port =
00:25:50 v #33298 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:50 v #33299 > > refused) }
00:25:50 v #33300 > > │ 00:00:00 v #21 networking.test_port_open / { port =
00:25:50 v #33301 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:50 v #33302 > > refused) }
00:25:50 v #33303 > > │ 00:00:00 v #22 networking.test_port_open / { port =
00:25:50 v #33304 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:50 v #33305 > > refused) }
00:25:50 v #33306 > > │ 00:00:00 v #23 networking.test_port_open / { port =
00:25:50 v #33307 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:50 v #33308 > > refused) }
00:25:50 v #33309 > > │ 00:00:00 v #24 networking.test_port_open / { port =
00:25:50 v #33310 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:50 v #33311 > > refused) }
00:25:50 v #33312 > > │ 00:00:00 v #25 networking.test_port_open / { port =
00:25:50 v #33313 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:50 v #33314 > > refused) }
00:25:50 v #33315 > > │ 00:00:00 v #26 networking.test_port_open / { port =
00:25:50 v #33316 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:50 v #33317 > > refused) }
00:25:50 v #33318 > > │ 00:00:00 v #27 networking.test_port_open / { port =
00:25:50 v #33319 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:50 v #33320 > > refused) }
00:25:50 v #33321 > > │ 00:00:00 v #28 networking.test_port_open / { port =
00:25:50 v #33322 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:50 v #33323 > > refused) }
00:25:50 v #33324 > > │ 00:00:00 v #29 networking.test_port_open / { port =
00:25:50 v #33325 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:50 v #33326 > > refused) }
00:25:50 v #33327 > > │ 00:00:00 v #30 networking.test_port_open / { port =
00:25:50 v #33328 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:50 v #33329 > > refused) }
00:25:50 v #33330 > > │ 00:00:00 v #31 networking.test_port_open / { port =
00:25:50 v #33331 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:50 v #33332 > > refused) }
00:25:50 v #33333 > > │ 00:00:00 v #32 networking.test_port_open / { port =
00:25:50 v #33334 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:50 v #33335 > > refused) }
00:25:50 v #33336 > > │ 00:00:00 v #33 networking.test_port_open / { port =
00:25:50 v #33337 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:50 v #33338 > > refused) }
00:25:50 v #33339 > > │ 00:00:00 v #34 networking.test_port_open / { port =
00:25:50 v #33340 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:50 v #33341 > > refused) }
00:25:50 v #33342 > > │ 00:00:00 v #35 networking.test_port_open / { port =
00:25:50 v #33343 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:50 v #33344 > > refused) }
00:25:50 v #33345 > > │ 00:00:00 v #36 networking.test_port_open / { port =
00:25:50 v #33346 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:50 v #33347 > > refused) }
00:25:50 v #33348 > > │ 00:00:00 v #37 networking.test_port_open / { port =
00:25:50 v #33349 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:50 v #33350 > > refused) }
00:25:50 v #33351 > > │ 00:00:00 v #38 networking.test_port_open / { port =
00:25:50 v #33352 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:50 v #33353 > > refused) }
00:25:50 v #33354 > > │ 00:00:00 v #39 networking.test_port_open / { port =
00:25:50 v #33355 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:50 v #33356 > > refused) }
00:25:50 v #33357 > > │ 00:00:00 v #40 networking.test_port_open / { port =
00:25:50 v #33358 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:50 v #33359 > > refused) }
00:25:50 v #33360 > > │ 00:00:00 v #41 networking.test_port_open / { port =
00:25:50 v #33361 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:50 v #33362 > > refused) }
00:25:50 v #33363 > > │ 00:00:00 v #42 networking.test_port_open / { port =
00:25:50 v #33364 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:50 v #33365 > > refused) }
00:25:50 v #33366 > > │ 00:00:00 v #43 networking.test_port_open / { port =
00:25:50 v #33367 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:50 v #33368 > > refused) }
00:25:50 v #33369 > > │ 00:00:00 v #44 networking.test_port_open / { port =
00:25:50 v #33370 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:50 v #33371 > > refused) }
00:25:50 v #33372 > > │ 00:00:00 v #45 networking.test_port_open / { port =
00:25:50 v #33373 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:50 v #33374 > > refused) }
00:25:50 v #33375 > > │ 00:00:00 v #46 networking.test_port_open / { port =
00:25:50 v #33376 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:50 v #33377 > > refused) }
00:25:50 v #33378 > > │ 00:00:00 v #47 networking.test_port_open / { port =
00:25:50 v #33379 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:50 v #33380 > > refused) }
00:25:50 v #33381 > > │ 00:00:00 v #48 networking.test_port_open / { port =
00:25:50 v #33382 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:50 v #33383 > > refused) }
00:25:50 v #33384 > > │ 00:00:00 v #49 networking.test_port_open / { port =
00:25:50 v #33385 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:50 v #33386 > > refused) }
00:25:50 v #33387 > > │ 00:00:00 v #50 networking.test_port_open / { port =
00:25:50 v #33388 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:50 v #33389 > > refused) }
00:25:50 v #33390 > > │ 00:00:00 v #51 networking.test_port_open / { port =
00:25:50 v #33391 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:50 v #33392 > > refused) }
00:25:50 v #33393 > > │ 00:00:00 v #52 networking.test_port_open / { port =
00:25:50 v #33394 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:50 v #33395 > > refused) }
00:25:50 v #33396 > > │ 00:00:00 d #53 _2
00:25:50 v #33397 > > │ 00:00:00 d #54 _3
00:25:50 v #33398 > > │ 00:00:00 d #55 4
00:25:50 v #33399 > > │ 00:00:00 d #56 _4
00:25:50 v #33400 > > │ 00:00:00 d #57 _5
00:25:50 v #33401 > > │ 00:00:00 v #58 networking.test_port_open / { port =
00:25:50 v #33402 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:25:50 v #33403 > > refused) }
00:25:50 v #33404 > > │ 00:00:00 d #59 5
00:25:50 v #33405 > > │ 00:00:00 d #60 6
00:25:50 v #33406 > > │ __assert_between / actual: 49L / expected: struct (2L, 150L)
00:25:50 v #33407 > > │ __assert_between / actual: 20L / expected: struct (0L, 60L)
00:25:50 v #33408 > > │ __assert_eq / actual: true / expected: true
00:25:50 v #33409 > > │
00:25:50 v #33410 > >
00:25:50 v #33411 > > ── markdown ────────────────────────────────────────────────────────────────────
00:25:50 v #33412 > > │ ### get_available_port
00:25:50 v #33413 > >
00:25:50 v #33414 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:50 v #33415 > > let get_available_port timeout host initial_port : _ i32 =
00:25:50 v #33416 > >     let rec loop port =
00:25:50 v #33417 > >         fun () =>
00:25:50 v #33418 > >             inl is_port_open =
00:25:50 v #33419 > >                 match timeout |> optionm'.unbox with
00:25:50 v #33420 > >                 | None => test_port_open host port
00:25:50 v #33421 > >                 | Some timeout => test_port_open_timeout timeout host port
00:25:50 v #33422 > >                 |> async.let'
00:25:50 v #33423 > >             fix_condition
00:25:50 v #33424 > >                 fun () => is_port_open |> not
00:25:50 v #33425 > >                 fun () => port |> return
00:25:50 v #33426 > >                 fun () => loop (port + 1) |> async.return_await
00:25:50 v #33427 > >         |> async.new_async_unit
00:25:50 v #33428 > >     loop initial_port
00:25:50 v #33429 > >
00:25:50 v #33430 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:25:50 v #33431 > > //// test
00:25:50 v #33432 > >
00:25:50 v #33433 > > inl lock_ports host port = async.new_async_unit fun () =>
00:25:50 v #33434 > >     trace Debug (fun () => "_1") id
00:25:50 v #33435 > >     inl listener1 = new_tcp_listener (ip_address_parse host) port |> use
00:25:50 v #33436 > >     inl listener2 = new_tcp_listener (ip_address_parse host) (port + 1) |> use
00:25:50 v #33437 > >     trace Debug (fun () => "_2") id
00:25:50 v #33438 > >     listener1 |> listener_start
00:25:50 v #33439 > >     listener2 |> listener_start
00:25:50 v #33440 > >     trace Debug (fun () => "_3") id
00:25:50 v #33441 > >     async.sleep 4000 |> async.do
00:25:50 v #33442 > >     trace Debug (fun () => "_4") id
00:25:50 v #33443 > >     listener1 |> listener_stop
00:25:50 v #33444 > >     listener2 |> listener_stop
00:25:50 v #33445 > >     trace Debug (fun () => "_5") id
00:25:50 v #33446 > >
00:25:50 v #33447 > > inl host = "127.0.0.1"
00:25:50 v #33448 > > inl port = 5555
00:25:50 v #33449 > >
00:25:50 v #33450 > > fun () =>
00:25:50 v #33451 > >     trace Debug (fun () => "1") id
00:25:50 v #33452 > >     inl child = lock_ports host port |> async.start_child |> async.let'
00:25:50 v #33453 > >     trace Debug (fun () => "2") id
00:25:50 v #33454 > >     async.sleep 240 |> async.do
00:25:50 v #33455 > >     trace Debug (fun () => "3") id
00:25:50 v #33456 > >     inl available_port = get_available_port (None |> optionm'.box) host port |>
00:25:50 v #33457 > > async.let'
00:25:50 v #33458 > >     trace Debug (fun () => "4") id
00:25:50 v #33459 > >     inl retries = wait_for_port_access (None |> optionm'.box) false host port |>
00:25:50 v #33460 > > async.let'
00:25:50 v #33461 > >     trace Debug (fun () => "5") id
00:25:50 v #33462 > >     child |> async.do
00:25:50 v #33463 > >     trace Debug (fun () => "6") id
00:25:50 v #33464 > >     (available_port, retries) |> return
00:25:50 v #33465 > > |> async.new_async_unit
00:25:50 v #33466 > > |> async.run_with_timeout 15000
00:25:50 v #33467 > > |> function
00:25:50 v #33468 > >     | Some (available_port, retries) =>
00:25:50 v #33469 > >         available_port |> _assert_eq (port + 2)
00:25:50 v #33470 > >
00:25:50 v #33471 > >         retries
00:25:50 v #33472 > >         |> _assert_between
00:25:50 v #33473 > >             if platform.is_windows () then 50i64 else 50
00:25:50 v #33474 > >             if platform.is_windows () then 150 else 1200
00:25:50 v #33475 > >
00:25:50 v #33476 > >         true
00:25:50 v #33477 > >     | _ => false
00:25:50 v #33478 > > |> _assert_eq true
00:26:02 v #33479 > >
00:26:02 v #33480 > > ── [ 11.08s - stdout ] ─────────────────────────────────────────────────────────
00:26:02 v #33481 > > │ 00:00:00 d #1 1
00:26:02 v #33482 > > │ 00:00:00 d #2 _1
00:26:02 v #33483 > > │ 00:00:00 d #3 2
00:26:02 v #33484 > > │ 00:00:00 d #4 _2
00:26:02 v #33485 > > │ 00:00:00 d #5 _3
00:26:02 v #33486 > > │ 00:00:00 d #6 3
00:26:02 v #33487 > > │ 00:00:00 v #7 networking.test_port_open / { port = 5557;
00:26:02 v #33488 > > ex = System.AggregateException: One or more errors occurred. (Connection
00:26:02 v #33489 > > refused) }
00:26:02 v #33490 > > │ 00:00:00 d #8 4
00:26:02 v #33491 > > │ 00:00:01 v #9 networking.wait_for_port_access / { port =
00:26:02 v #33492 > > 5555; retry = 100; timeout = None; status = false }
00:26:02 v #33493 > > │ 00:00:02 v #10 networking.wait_for_port_access / { port
00:26:02 v #33494 > > = 5555; retry = 200; timeout = None; status = false }
00:26:02 v #33495 > > │ 00:00:03 v #11 networking.wait_for_port_access / { port
00:26:02 v #33496 > > = 5555; retry = 300; timeout = None; status = false }
00:26:02 v #33497 > > │ 00:00:04 d #12 _4
00:26:02 v #33498 > > │ 00:00:04 d #13 _5
00:26:02 v #33499 > > │ 00:00:04 v #14 networking.test_port_open / { port =
00:26:02 v #33500 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection
00:26:02 v #33501 > > refused) }
00:26:02 v #33502 > > │ 00:00:04 d #15 5
00:26:02 v #33503 > > │ 00:00:04 d #16 6
00:26:02 v #33504 > > │ __assert_eq / actual: 5557 / expected: 5557
00:26:02 v #33505 > > │ __assert_between / actual: 367L / expected: struct (50L,
00:26:02 v #33506 > > 1200L)
00:26:02 v #33507 > > │ __assert_eq / actual: true / expected: true
00:26:02 v #33508 > > │
00:26:02 v #33509 > >
00:26:02 v #33510 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:02 v #33511 > > //// test
00:26:02 v #33512 > >
00:26:02 v #33513 > > inl lock_ports host port = async.new_async_unit fun () =>
00:26:02 v #33514 > >     trace Debug (fun () => "_1") id
00:26:02 v #33515 > >     inl listener1 = new_tcp_listener (ip_address_parse host) port |> use
00:26:02 v #33516 > >     inl listener2 = new_tcp_listener (ip_address_parse host) (port + 1) |> use
00:26:02 v #33517 > >     trace Debug (fun () => "_2") id
00:26:02 v #33518 > >     listener1 |> listener_start
00:26:02 v #33519 > >     listener2 |> listener_start
00:26:02 v #33520 > >     trace Debug (fun () => "_3") id
00:26:02 v #33521 > >     async.sleep 400 |> async.do
00:26:02 v #33522 > >     trace Debug (fun () => "_4") id
00:26:02 v #33523 > >     listener1 |> listener_stop
00:26:02 v #33524 > >     listener2 |> listener_stop
00:26:02 v #33525 > >     trace Debug (fun () => "_5") id
00:26:02 v #33526 > >
00:26:02 v #33527 > > inl host = "127.0.0.1"
00:26:02 v #33528 > > inl port = 5555
00:26:02 v #33529 > >
00:26:02 v #33530 > > fun () =>
00:26:02 v #33531 > >     trace Debug (fun () => "1") id
00:26:02 v #33532 > >     inl child = lock_ports host port |> async.start_child |> async.let'
00:26:02 v #33533 > >     trace Debug (fun () => "2") id
00:26:02 v #33534 > >     async.sleep 240 |> async.do
00:26:02 v #33535 > >     trace Debug (fun () => "3") id
00:26:02 v #33536 > >     inl available_port = get_available_port (Some 60 |> optionm'.box) host port
00:26:02 v #33537 > > |> async.let'
00:26:02 v #33538 > >     trace Debug (fun () => "4") id
00:26:02 v #33539 > >     inl retries = wait_for_port_access (Some 60 |> optionm'.box) false host port
00:26:02 v #33540 > > |> async.let'
00:26:02 v #33541 > >     trace Debug (fun () => "5") id
00:26:02 v #33542 > >     child |> async.do
00:26:02 v #33543 > >     trace Debug (fun () => "6") id
00:26:02 v #33544 > >     (available_port, retries) |> return
00:26:02 v #33545 > > |> async.new_async_unit
00:26:02 v #33546 > > |> async.run_with_timeout 1500
00:26:02 v #33547 > > |> function
00:26:02 v #33548 > >     | Some (available_port, retries) =>
00:26:02 v #33549 > >         available_port |> _assert_eq (port + 2)
00:26:02 v #33550 > >
00:26:02 v #33551 > >         retries
00:26:02 v #33552 > >         |> _assert_between
00:26:02 v #33553 > >             (if platform.is_windows () then 2i64 else 1)
00:26:02 v #33554 > >             (if platform.is_windows () then 10 else 120)
00:26:02 v #33555 > >
00:26:02 v #33556 > >         true
00:26:02 v #33557 > >     | _ => false
00:26:02 v #33558 > > |> _assert_eq true
00:26:09 v #33559 > >
00:26:09 v #33560 > > ── [ 7.62s - stdout ] ──────────────────────────────────────────────────────────
00:26:09 v #33561 > > │ 00:00:00 d #1 1
00:26:09 v #33562 > > │ 00:00:00 d #2 _1
00:26:09 v #33563 > > │ 00:00:00 d #2 2
00:26:09 v #33564 > > │ 00:00:00 d #3 _2
00:26:09 v #33565 > > │ 00:00:00 d #4 _3
00:26:09 v #33566 > > │ 00:00:00 d #5 3
00:26:09 v #33567 > > │ 00:00:00 v #6 networking.test_port_open / { port = 5557;
00:26:09 v #33568 > > ex = System.AggregateException: One or more errors occurred. (Connection
00:26:09 v #33569 > > refused) }
00:26:09 v #33570 > > │ 00:00:00 d #7 4
00:26:09 v #33571 > > │ 00:00:00 d #8 _4
00:26:09 v #33572 > > │ 00:00:00 v #9 networking.test_port_open / { port = 5555;
00:26:09 v #33573 > > ex = System.AggregateException: One or more errors occurred. (Connection
00:26:09 v #33574 > > refused) }
00:26:09 v #33575 > > │ 00:00:00 d #10 _5
00:26:09 v #33576 > > │ 00:00:00 d #11 5
00:26:09 v #33577 > > │ 00:00:00 d #12 6
00:26:09 v #33578 > > │ __assert_eq / actual: 5557 / expected: 5557
00:26:09 v #33579 > > │ __assert_between / actual: 15L / expected: struct (1L, 120L)
00:26:09 v #33580 > > │ __assert_eq / actual: true / expected: true
00:26:09 v #33581 > > │
00:26:09 v #33582 > >
00:26:09 v #33583 > > ── markdown ────────────────────────────────────────────────────────────────────
00:26:09 v #33584 > > │ ## main
00:26:09 v #33585 > >
00:26:09 v #33586 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:26:09 v #33587 > > inl main () =
00:26:09 v #33588 > >     init_trace_state None
00:26:09 v #33589 > >     $'let test_port_open x = !test_port_open x' : ()
00:26:09 v #33590 > >     $'let test_port_open_timeout x = !test_port_open_timeout x' : ()
00:26:09 v #33591 > >     $'let wait_for_port_access x = !wait_for_port_access x' : ()
00:26:09 v #33592 > >     $'let get_available_port x = !get_available_port x' : ()
00:26:12 v #33593 > 00:00:58 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 119930 }
00:26:12 v #33594 > 00:00:58 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/networking.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/networking.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:26:13 v #33595 > 00:00:59 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/networking.dib.ipynb to html
00:26:13 v #33596 > 00:00:59 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:26:13 v #33597 > 00:00:59 v #7 !   validate(nb)
00:26:13 v #33598 > 00:00:59 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:26:13 v #33599 > 00:00:59 v #9 !   return _pygments_highlight(
00:26:14 v #33600 > 00:01:00 v #10 ! [NbConvertApp] Writing 468974 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/networking.dib.html
00:26:14 v #33601 > 00:01:00 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 904 }
00:26:14 v #33602 > 00:01:00 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 904 }
00:26:14 v #33603 > 00:01:00 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/networking.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/networking.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:26:14 v #33604 > 00:01:00 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:26:14 v #33605 > 00:01:00 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:26:14 v #33606 > 00:01:00 d #16 spiral.run / dib / { exit_code = 0; result_length = 120893 }
00:26:14 d #33607 runtime.execute_with_options_async / { exit_code = 0; output_length = 128046 }
00:26:14 d #40 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path networking.dib --retries 3
00:26:14 v #29 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 d #1 writeDibCode / output: Spi / path: trace.dib
00:00:00 d #1 writeDibCode / output: Spi / path: async.dib
00:00:00 d #1 writeDibCode / output: Spi / path: testing.dib
00:00:00 d #1 writeDibCode / output: Spi / path: runtime.dib
00:00:00 d #2 parseDibCode / output: Spi / file: testing.dib
00:00:00 d #3 parseDibCode / output: Spi / file: trace.dib
00:00:00 d #4 parseDibCode / output: Spi / file: runtime.dib
00:00:00 d #5 parseDibCode / output: Spi / file: async.dib
00:00:00 d #6 writeDibCode / output: Spi / path: threading.dib
00:00:00 d #7 parseDibCode / output: Spi / file: threading.dib
00:00:00 d #8 writeDibCode / output: Spi / path: networking.dib
00:00:00 d #9 writeDibCode / output: Spi / path: crypto.dib
00:00:00 d #10 parseDibCode / output: Spi / file: networking.dib
00:00:00 d #11 parseDibCode / output: Spi / file: crypto.dib
00:00:00 d #12 writeDibCode / output: Spi / path: common.dib
00:00:00 d #13 parseDibCode / output: Spi / file: common.dib
00:00:00 d #14 writeDibCode / output: Spi / path: base.dib
00:00:00 d #15 parseDibCode / output: Spi / file: base.dib
00:00:00 d #16 writeDibCode / output: Spi / path: resultm.dib
00:00:00 d #17 parseDibCode / output: Spi / file: resultm.dib
00:00:00 d #18 writeDibCode / output: Spi / path: iter.dib
00:00:00 d #19 parseDibCode / output: Spi / file: iter.dib
00:00:00 d #20 writeDibCode / output: Spi / path: env.dib
00:00:00 d #21 parseDibCode / output: Spi / file: env.dib
00:00:00 d #22 writeDibCode / output: Spi / path: parsing.dib
00:00:00 d #23 parseDibCode / output: Spi / file: parsing.dib
00:00:00 d #24 writeDibCode / output: Spi / path: date_time.dib
00:00:00 d #25 parseDibCode / output: Spi / file: date_time.dib
00:00:00 d #26 writeDibCode / output: Spi / path: file_system.dib
00:00:00 d #27 parseDibCode / output: Spi / file: file_system.dib
00:00:00 d #28 writeDibCode / output: Spi / path: console.dib
00:00:00 d #29 parseDibCode / output: Spi / file: console.dib
00:00:00 d #30 writeDibCode / output: Spi / path: guid.dib
00:00:00 d #31 parseDibCode / output: Spi / file: guid.dib
00:00:00 d #32 writeDibCode / output: Spi / path: math.dib
00:00:00 d #33 parseDibCode / output: Spi / file: math.dib
00:00:00 d #34 writeDibCode / output: Spi / path: mapm.dib
00:00:00 d #35 parseDibCode / output: Spi / file: mapm.dib
00:00:00 d #37 writeDibCode / output: Spi / path: am'.dib
00:00:00 d #38 parseDibCode / output: Spi / file: am'.dib
00:00:00 d #36 writeDibCode / output: Spi / path: optionm'.dib
00:00:00 d #39 parseDibCode / output: Spi / file: optionm'.dib
00:00:00 d #40 writeDibCode / output: Spi / path: sm'.dib
00:00:00 d #41 parseDibCode / output: Spi / file: sm'.dib
00:00:00 d #42 writeDibCode / output: Spir / path: sm'.dib
00:00:00 d #43 parseDibCode / output: Spir / file: sm'.dib
00:00:00 d #44 writeDibCode / output: Spi / path: listm'.dib
00:00:00 d #45 parseDibCode / output: Spi / file: listm'.dib
00:00:00 d #46 writeDibCode / output: Spi / path: reflection.dib
00:00:00 d #47 parseDibCode / output: Spi / file: reflection.dib
00:00:00 d #48 writeDibCode / output: Spi / path: python.dib
00:00:00 d #49 parseDibCode / output: Spi / file: python.dib
00:00:00 d #50 writeDibCode / output: Spi / path: typescript.dib
00:00:00 d #51 parseDibCode / output: Spi / file: typescript.dib
00:00:00 d #52 writeDibCode / output: Spi / path: benchmark.dib
00:00:00 d #53 parseDibCode / output: Spi / file: benchmark.dib
00:00:00 d #54 writeDibCode / output: Spi / path: stream.dib
00:00:00 d #55 parseDibCode / output: Spi / file: stream.dib
00:00:00 d #56 writeDibCode / output: Spi / path: seq.dib
00:00:00 d #57 parseDibCode / output: Spi / file: seq.dib
00:00:00 d #58 writeDibCode / output: Spi / path: util.dib
00:00:00 d #59 parseDibCode / output: Spi / file: util.dib
00:00:00 d #61 writeDibCode / output: Spi / path: rust/rust.dib
00:00:00 d #60 writeDibCode / output: Spi / path: platform.dib
00:00:00 d #62 parseDibCode / output: Spi / file: platform.dib
00:00:00 d #63 parseDibCode / output: Spi / file: rust/rust.dib
00:00:00 d #64 writeDibCode / output: Spi / path: rust/near.dib
00:00:00 d #65 parseDibCode / output: Spi / file: rust/near.dib
00:00:00 d #66 writeDibCode / output: Spi / path: rust/testing.dib
00:00:00 d #67 parseDibCode / output: Spi / file: rust/testing.dib
00:00:00 d #68 writeDibCode / output: Spi / path: rust/near_workspaces.dib
00:00:00 d #69 parseDibCode / output: Spi / file: rust/near_workspaces.dib
00:00:00 d #70 writeDibCode / output: Spi / path: leptos/leptos.dib
00:00:00 d #71 parseDibCode / output: Spi / file: leptos/leptos.dib
00:00:00 d #72 writeDibCode / output: Spi / path: wasm.dib
00:00:00 d #73 parseDibCode / output: Spi / file: wasm.dib
00:00:00 d #74 writeDibCode / output: Spi / path: physics.dib
00:00:00 d #75 parseDibCode / output: Spi / file: physics.dib
00:00:00 v #1 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"; options = { command = dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = Some <fun:compiler@87-4>; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:00:00 v #2 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #2 > 00:00:00 d #1 pwd: /home/runner/work/polyglot/polyglot
00:00:00 v #3 > 00:00:00 d #2 dllPath: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release
00:00:00 v #4 > 00:00:00 d #3 targetDir: /home/runner/work/polyglot/polyglot/target/spiral_Eval
00:00:00 v #3 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #4 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #5 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #6 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #7 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #8 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #9 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #10 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #11 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #12 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #13 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #14 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #15 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #16 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #17 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #18 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #19 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #20 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #21 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #22 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #23 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #24 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #25 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #26 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #27 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #28 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #29 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #30 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #31 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #32 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #33 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #34 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #35 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #36 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #37 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #5 > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:00 v #38 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #39 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #40 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:01 v #1 Supervisor.sendJson / port: 13805 / json: {"Ping":true} / result:
00:00:01 v #2 Supervisor.awaitCompiler / Ping / result: 'Some null' / port: 13805 / retry: 1
00:00:01 v #6 > Server bound to: http://localhost:13805
00:00:01 v #41 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:01 v #42 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:01 v #43 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:01 d #3 Supervisor.buildFile / takeWhileInclusive / path: async.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:01 d #4 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:01 d #5 Supervisor.buildFile / takeWhileInclusive / path: trace.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:01 d #6 Supervisor.buildFile / AsyncSeq.scan / path: async.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:01 d #7 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:01 d #8 Supervisor.buildFile / AsyncSeq.scan / path: trace.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:01 d #9 Supervisor.buildFile / takeWhileInclusive / path: trace.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:01 d #9 Supervisor.buildFile / takeWhileInclusive / path: async.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:01 d #10 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:01 v #12 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # async\nopen rust\nopen rust_operators\n\n/// ### base_let\u0027\ninl b...ault_async x\u0027 : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/async.spi"}} / result:
00:00:01 v #13 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # trace\n\n/// ## trace\n\n/// ### trace_level\nunion trace_level =\n   ...x = !trace x\u0027 : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/trace.spi"}} / result:
00:00:01 v #14 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # runtime\nopen rust\nopen rust_operators\nopen sm\u0027_operators\n\n//...lit_args x\u0027 : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/runtime.spi"}} / result:
00:00:01 v #15 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/runtime.spi"}} / result:
00:00:01 v #16 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/trace.spi"}} / result:
00:00:01 v #17 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/async.spi"}} / result:
00:00:02 d #18 Supervisor.buildFile / AsyncSeq.scan / path: trace.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:02 d #19 Supervisor.buildFile / takeWhileInclusive / path: trace.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:02 d #20 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:02 d #21 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:02 d #22 Supervisor.buildFile / AsyncSeq.scan / path: async.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:02 d #23 Supervisor.buildFile / takeWhileInclusive / path: async.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:02 d #24 Supervisor.buildFile / AsyncSeq.scan / path: trace.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:02 d #25 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:02 d #27 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:02 d #26 Supervisor.buildFile / AsyncSeq.scan / path: async.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:02 d #28 Supervisor.buildFile / takeWhileInclusive / path: async.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:02 d #29 Supervisor.buildFile / takeWhileInclusive / path: trace.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:03 d #30 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:03 d #31 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:03 d #32 Supervisor.buildFile / AsyncSeq.scan / path: async.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:03 d #33 Supervisor.buildFile / takeWhileInclusive / path: async.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:03 d #34 Supervisor.buildFile / AsyncSeq.scan / path: trace.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:03 d #35 Supervisor.buildFile / takeWhileInclusive / path: trace.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:03 d #36 Supervisor.buildFile / AsyncSeq.scan / path: async.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:03 d #37 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:03 d #37 Supervisor.buildFile / AsyncSeq.scan / path: trace.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:03 d #39 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:03 d #39 Supervisor.buildFile / takeWhileInclusive / path: trace.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:03 d #41 Supervisor.buildFile / takeWhileInclusive / path: async.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:04 d #42 Supervisor.buildFile / AsyncSeq.scan / path: async.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:04 d #43 Supervisor.buildFile / takeWhileInclusive / path: async.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:04 d #44 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:04 d #45 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:04 d #46 Supervisor.buildFile / AsyncSeq.scan / path: trace.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:04 d #47 Supervisor.buildFile / takeWhileInclusive / path: trace.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:04 d #48 Supervisor.buildFile / AsyncSeq.scan / path: async.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
let rec method0 (v0 : System.Threading.CancellationToken) : Async<System.Threading.CancellationToken> =
    (* run_target_args'
    let v1 : unit = ()
    run_target_args' *)
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v2 : Async<System.Threading.CancellationToken> = null |> unbox<Async<System.Threading.CancellationToken>>
    let _run_target_args'_v1 = v2 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v5 : Async<System.Threading.CancellationToken> = null |> unbox<Async<System.Threading.CancellationToken>>
    let _run_target_args'_v1 = v5 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v8 : Async<System.Threading.CancellationToken> = null |> unbox<Async<System.Threadin...      let v747 : System.Threading.CancellationToken = v746.Token
            return v747 
            #endif
            // run_target_args' is_unit
            (* indent
            ()
        indent *)
        }
        (* indent
        ()
    indent *)
    let v954 : Async<System.Threading.CancellationToken> = _let'_v719 
    let _run_target_args'_v1 = v954 
    #endif
    let v955 : Async<System.Threading.CancellationToken> = _run_target_args'_v1 
    v955
and closure0 () (v0 : System.Threading.CancellationToken) : Async<System.Threading.CancellationToken> =
    method0(v0)
let v0 : (System.Threading.CancellationToken -> Async<System.Threading.CancellationToken>) = closure0()
let merge_cancellation_token_with_default_async x = v0 x
()

00:00:04 d #49 Supervisor.buildFile / takeWhileInclusive / path: async.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:
let rec method0 (v0 : System.Threading.CancellationToken) : Async<System.Threading.CancellationToken> =
    (* run_target_args'
    let v1 : unit = ()
    run_target_args' *)
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v2 : Async<System.Threading.CancellationToken> = null |> unbox<Async<System.Threading.CancellationToken>>
    let _run_target_args'_v1 = v2 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v5 : Async<System.Threading.CancellationToken> = null |> unbox<Async<System.Threading.CancellationToken>>
    let _run_target_args'_v1 = v5 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v8 : Async<System.Threading.CancellationToken> = null |> unbox<Async<System.Threadin...      let v747 : System.Threading.CancellationToken = v746.Token
            return v747 
            #endif
            // run_target_args' is_unit
            (* indent
            ()
        indent *)
        }
        (* indent
        ()
    indent *)
    let v954 : Async<System.Threading.CancellationToken> = _let'_v719 
    let _run_target_args'_v1 = v954 
    #endif
    let v955 : Async<System.Threading.CancellationToken> = _run_target_args'_v1 
    v955
and closure0 () (v0 : System.Threading.CancellationToken) : Async<System.Threading.CancellationToken> =
    method0(v0)
let v0 : (System.Threading.CancellationToken -> Async<System.Threading.CancellationToken>) = closure0()
let merge_cancellation_token_with_default_async x = v0 x
()

00:00:04 d #50 Supervisor.buildFile / AsyncSeq.scan / path: trace.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>]
type std_string_String = class end
#else
type std_string_String = string
#endif

#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("&$0")>]
type Ref<'T> = class end
#else
type Ref<'T> = 'T
#endif

#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("mut $0")>]
#endif
type Mut<'T> = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("Vec<$0>")>]
#endif
type Vec<'T> = class end
module TraceState = let mutable trace_state = None
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::env::VarError")>]
#endif
type std_env_VarError = class end
type IOsEnviron = abstract environ: x: unit -> obj
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Co...   else
                let v43 : string = v2 ()
                method15(v20, v21, v22, v23, v24, v25, v38, v39, v40, v43)
        method18(v45)
and closure5 (v0 : US0, v1 : (unit -> string)) (v2 : (unit -> string)) : unit =
    let v3 : unit = ()
    let v4 : (unit -> unit) = closure6(v0, v1, v2)
    let v5 : unit = (fun () -> v4 (); v3) ()
    ()
and closure4 (v0 : US0) (v1 : (unit -> string)) : ((unit -> string) -> unit) =
    closure5(v0, v1)
and closure3 () (v0 : US0) : ((unit -> string) -> ((unit -> string) -> unit)) =
    closure4(v0)
let v0 : unit = ()
let v1 : (unit -> unit) = closure0()
let v2 : unit = (fun () -> v1 (); v0) ()
let v16 : (US0 -> ((unit -> string) -> ((unit -> string) -> unit))) = closure3()
let trace x = v16 x
()

00:00:04 d #51 Supervisor.buildFile / takeWhileInclusive / path: trace.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>]
type std_string_String = class end
#else
type std_string_String = string
#endif

#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("&$0")>]
type Ref<'T> = class end
#else
type Ref<'T> = 'T
#endif

#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("mut $0")>]
#endif
type Mut<'T> = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("Vec<$0>")>]
#endif
type Vec<'T> = class end
module TraceState = let mutable trace_state = None
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::env::VarError")>]
#endif
type std_env_VarError = class end
type IOsEnviron = abstract environ: x: unit -> obj
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Co...   else
                let v43 : string = v2 ()
                method15(v20, v21, v22, v23, v24, v25, v38, v39, v40, v43)
        method18(v45)
and closure5 (v0 : US0, v1 : (unit -> string)) (v2 : (unit -> string)) : unit =
    let v3 : unit = ()
    let v4 : (unit -> unit) = closure6(v0, v1, v2)
    let v5 : unit = (fun () -> v4 (); v3) ()
    ()
and closure4 (v0 : US0) (v1 : (unit -> string)) : ((unit -> string) -> unit) =
    closure5(v0, v1)
and closure3 () (v0 : US0) : ((unit -> string) -> ((unit -> string) -> unit)) =
    closure4(v0)
let v0 : unit = ()
let v1 : (unit -> unit) = closure0()
let v2 : unit = (fun () -> v1 (); v0) ()
let v16 : (US0 -> ((unit -> string) -> ((unit -> string) -> unit))) = closure3()
let trace x = v16 x
()

00:00:04 d #52 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite
00:00:04 d #52 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite
00:00:04 v #44 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:04 v #45 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:04 d #54 Supervisor.buildFile / takeWhileInclusive / path: threading.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:04 d #55 Supervisor.buildFile / takeWhileInclusive / path: networking.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:04 d #56 Supervisor.buildFile / AsyncSeq.scan / path: threading.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:04 d #57 Supervisor.buildFile / takeWhileInclusive / path: threading.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:04 d #58 Supervisor.buildFile / AsyncSeq.scan / path: networking.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:04 d #59 Supervisor.buildFile / takeWhileInclusive / path: networking.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:04 v #60 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # threading\nopen rust\nopen rust_operators\n\n/// ## rust\n\n/// ### sl..._token x\u0027 : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/threading.spi"}} / result:
00:00:04 v #61 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # networking\nopen rust.rust_operators\n\n/// ## rust\n\n/// ### reqwest..._port x\u0027 : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/networking.spi"}} / result:
00:00:04 v #62 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/threading.spi"}} / result:
00:00:04 v #63 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/networking.spi"}} / result:
00:00:04 d #64 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:04 d #65 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:04 d #66 Supervisor.buildFile / AsyncSeq.scan / path: networking.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:04 d #66 Supervisor.buildFile / AsyncSeq.scan / path: threading.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:04 d #67 Supervisor.buildFile / takeWhileInclusive / path: threading.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:04 d #67 Supervisor.buildFile / takeWhileInclusive / path: networking.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:05 d #69 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:05 d #70 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:05 d #71 Supervisor.buildFile / AsyncSeq.scan / path: threading.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
type Disposable (f : unit -> unit) = interface System.IDisposable with member _.Dispose () = f ()
type [<Struct>] US0 =
    | US0_0 of f0_0 : System.Threading.CancellationToken
    | US0_1
let rec closure1 () (v0 : System.Threading.CancellationToken) : US0 =
    US0_0(v0)
and method0 () : (System.Threading.CancellationToken -> US0) =
    closure1()
and closure2 (v0 : System.Threading.CancellationTokenSource) () : unit =
    (* run_target_args'
    let v1 : unit = ()
    run_target_args' *)
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    null |> unbox<unit>
    #endif
#if FABLE_COMPILER_RUST && WASM
    null |> unbox<unit>
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    null |> unbox<unit...er _.Dispose () = v74 () }
    let _run_target_args'_v63 = v75 
    #endif
#else
    let v76 : (unit -> unit) = method2(v62)
    let v77 : System.IDisposable = { new System.IDisposable with member _.Dispose () = v76 () }
    let _run_target_args'_v63 = v77 
    #endif
    let v78 : System.IDisposable = _run_target_args'_v63 
    let v82 : System.Threading.CancellationToken = v62.Token
    let _run_target_args'_v1 = struct (v82, v78) 
    #endif
    let struct (v83 : System.Threading.CancellationToken, v84 : System.IDisposable) = _run_target_args'_v1 
    struct (v83, v84)
let v0 : (System.Threading.CancellationToken option -> struct (System.Threading.CancellationToken * System.IDisposable)) = closure0()
let new_disposable_token x = v0 x
()

00:00:05 d #72 Supervisor.buildFile / takeWhileInclusive / path: threading.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:
type Disposable (f : unit -> unit) = interface System.IDisposable with member _.Dispose () = f ()
type [<Struct>] US0 =
    | US0_0 of f0_0 : System.Threading.CancellationToken
    | US0_1
let rec closure1 () (v0 : System.Threading.CancellationToken) : US0 =
    US0_0(v0)
and method0 () : (System.Threading.CancellationToken -> US0) =
    closure1()
and closure2 (v0 : System.Threading.CancellationTokenSource) () : unit =
    (* run_target_args'
    let v1 : unit = ()
    run_target_args' *)
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    null |> unbox<unit>
    #endif
#if FABLE_COMPILER_RUST && WASM
    null |> unbox<unit>
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    null |> unbox<unit...er _.Dispose () = v74 () }
    let _run_target_args'_v63 = v75 
    #endif
#else
    let v76 : (unit -> unit) = method2(v62)
    let v77 : System.IDisposable = { new System.IDisposable with member _.Dispose () = v76 () }
    let _run_target_args'_v63 = v77 
    #endif
    let v78 : System.IDisposable = _run_target_args'_v63 
    let v82 : System.Threading.CancellationToken = v62.Token
    let _run_target_args'_v1 = struct (v82, v78) 
    #endif
    let struct (v83 : System.Threading.CancellationToken, v84 : System.IDisposable) = _run_target_args'_v1 
    struct (v83, v84)
let v0 : (System.Threading.CancellationToken option -> struct (System.Threading.CancellationToken * System.IDisposable)) = closure0()
let new_disposable_token x = v0 x
()

00:00:05 d #73 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite
00:00:05 v #46 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:05 d #74 Supervisor.buildFile / takeWhileInclusive / path: crypto.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:05 d #75 Supervisor.buildFile / AsyncSeq.scan / path: crypto.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:05 d #76 Supervisor.buildFile / takeWhileInclusive / path: crypto.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:05 v #77 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # crypto\nopen rust\nopen rust_operators\n\n/// ## fsharp\n\n/// ### sha...h_to_port x\u0027 : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/crypto.spi"}} / result:
00:00:05 v #78 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/crypto.spi"}} / result:
00:00:05 d #79 Supervisor.buildFile / AsyncSeq.scan / path: networking.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:05 d #80 Supervisor.buildFile / takeWhileInclusive / path: networking.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:05 d #81 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:05 d #82 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:05 d #83 Supervisor.buildFile / AsyncSeq.scan / path: crypto.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:05 d #84 Supervisor.buildFile / takeWhileInclusive / path: crypto.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:05 d #85 Supervisor.buildFile / AsyncSeq.scan / path: networking.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:05 d #86 Supervisor.buildFile / takeWhileInclusive / path: networking.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:06 d #87 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:06 d #88 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:06 d #89 Supervisor.buildFile / AsyncSeq.scan / path: crypto.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:06 d #90 Supervisor.buildFile / takeWhileInclusive / path: crypto.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:06 d #91 Supervisor.buildFile / AsyncSeq.scan / path: networking.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:06 d #92 Supervisor.buildFile / takeWhileInclusive / path: networking.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:06 d #93 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:06 d #94 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:06 d #95 Supervisor.buildFile / AsyncSeq.scan / path: crypto.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:06 d #96 Supervisor.buildFile / takeWhileInclusive / path: crypto.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:06 d #97 Supervisor.buildFile / AsyncSeq.scan / path: networking.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:06 d #98 Supervisor.buildFile / takeWhileInclusive / path: networking.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:07 d #99 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:07 d #100 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:07 d #101 Supervisor.buildFile / AsyncSeq.scan / path: crypto.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("Vec<$0>")>]
#endif
type Vec<'T> = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::io::Cursor<$0>")>]
#endif
type std_io_Cursor<'T> = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::io::BufReader<$0>")>]
#endif
type std_io_BufReader<'T> = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("sha2::Sha256")>]
#endif
type sha2_Sha256 = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("_")>]
#endif
type Slice'<'T> = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("&$0")>]
type Ref<'T> = class end
#else
type Ref<'T> = 'T
#endif

#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::string::Stri...let _run_target_args'_v2 = v38 
    #endif
#else
    let v45 : int32 = System.Char.ConvertToUtf32 (string v1, 0)
    let _run_target_args'_v2 = v45 
    #endif
    let v46 : int32 = _run_target_args'_v2 
    let v57 : string = v0.[int 0..int 7]
    let v60 : int32 = System.Convert.ToInt32 (v57, 16)
    let v63 : int32 = v60 + v46
    let v64 : (int32 -> uint16) = uint16
    let v65 : uint16 = v64 v63
    let v68 : unit = ()
    let v69 : (unit -> unit) = closure2(v46, v57, v65)
    let v70 : unit = (fun () -> v69 (); v68) ()
    let v110 : uint16 = v65 % 48128us
    let v111 : uint16 = v110 + 1024us
    v111
let v0 : (string -> string) = closure0()
let hash_text x = v0 x
let v1 : (string -> uint16) = closure1()
let hash_to_port x = v1 x
()

00:00:07 d #102 Supervisor.buildFile / takeWhileInclusive / path: crypto.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("Vec<$0>")>]
#endif
type Vec<'T> = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::io::Cursor<$0>")>]
#endif
type std_io_Cursor<'T> = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::io::BufReader<$0>")>]
#endif
type std_io_BufReader<'T> = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("sha2::Sha256")>]
#endif
type sha2_Sha256 = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("_")>]
#endif
type Slice'<'T> = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("&$0")>]
type Ref<'T> = class end
#else
type Ref<'T> = 'T
#endif

#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::string::Stri...let _run_target_args'_v2 = v38 
    #endif
#else
    let v45 : int32 = System.Char.ConvertToUtf32 (string v1, 0)
    let _run_target_args'_v2 = v45 
    #endif
    let v46 : int32 = _run_target_args'_v2 
    let v57 : string = v0.[int 0..int 7]
    let v60 : int32 = System.Convert.ToInt32 (v57, 16)
    let v63 : int32 = v60 + v46
    let v64 : (int32 -> uint16) = uint16
    let v65 : uint16 = v64 v63
    let v68 : unit = ()
    let v69 : (unit -> unit) = closure2(v46, v57, v65)
    let v70 : unit = (fun () -> v69 (); v68) ()
    let v110 : uint16 = v65 % 48128us
    let v111 : uint16 = v110 + 1024us
    v111
let v0 : (string -> string) = closure0()
let hash_text x = v0 x
let v1 : (string -> uint16) = closure1()
let hash_to_port x = v1 x
()

00:00:07 d #103 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite
00:00:07 v #47 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:07 d #104 Supervisor.buildFile / takeWhileInclusive / path: common.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:07 d #105 Supervisor.buildFile / AsyncSeq.scan / path: common.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:07 d #106 Supervisor.buildFile / takeWhileInclusive / path: common.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:07 v #107 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # common\n\n/// ## common\n\n/// ### retry_fn\u0027\ninl retry_fn\u0027 ... !memoize x\u0027 : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/common.spi"}} / result:
00:00:07 v #108 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/common.spi"}} / result:
00:00:07 d #109 Supervisor.buildFile / AsyncSeq.scan / path: networking.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:07 d #110 Supervisor.buildFile / takeWhileInclusive / path: networking.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:07 d #111 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:07 d #112 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:07 d #113 Supervisor.buildFile / AsyncSeq.scan / path: common.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:07 d #114 Supervisor.buildFile / takeWhileInclusive / path: common.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:07 d #115 Supervisor.buildFile / AsyncSeq.scan / path: networking.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:07 d #116 Supervisor.buildFile / takeWhileInclusive / path: networking.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:08 d #117 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:08 d #118 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:08 d #119 Supervisor.buildFile / AsyncSeq.scan / path: common.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:08 d #120 Supervisor.buildFile / takeWhileInclusive / path: common.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:08 d #121 Supervisor.buildFile / AsyncSeq.scan / path: networking.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:08 d #122 Supervisor.buildFile / takeWhileInclusive / path: networking.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:08 d #123 Supervisor.buildFile / AsyncSeq.scan / path: common.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>]
type std_string_String = class end
#else
type std_string_String = string
#endif

#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("&$0")>]
type Ref<'T> = class end
#else
type Ref<'T> = 'T
#endif

#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("mut $0")>]
#endif
type Mut<'T> = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("Vec<$0>")>]
#endif
type Vec<'T> = class end
module TraceState = let mutable trace_state = None
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::env::VarError")>]
#endif
type std_env_VarError = class end
type IOsEnviron = abstract environ: x: unit -> obj
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Co...ion = Some () 
        v4
and closure4 () (v0 : int32) : ((unit -> unit) -> unit option) =
    closure5(v0)
and method22 (v0 : (unit -> unit)) : (unit -> unit) =
    v0
and closure16 (v0 : Lazy<unit>) () : unit =
    v0.Value
    ()
and closure15 () (v0 : (unit -> unit)) : (unit -> unit) =
    let v1 : (unit -> unit) = method22(v0)
    let v2 : Lazy<unit> = lazy v1 ()
    closure16(v2)
let v0 : unit = ()
let v1 : (unit -> unit) = closure0()
let v2 : unit = (fun () -> v1 (); v0) ()
let v16 : ((unit -> unit) -> System.IDisposable) = closure3()
let new_disposable x = v16 x
let v17 : (int32 -> ((unit -> unit) -> unit option)) = closure4()
let retry_fn x = v17 x
let v18 : ((unit -> unit) -> (unit -> unit)) = closure15()
let memoize x = v18 x
()

00:00:08 d #124 Supervisor.buildFile / takeWhileInclusive / path: common.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>]
type std_string_String = class end
#else
type std_string_String = string
#endif

#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("&$0")>]
type Ref<'T> = class end
#else
type Ref<'T> = 'T
#endif

#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("mut $0")>]
#endif
type Mut<'T> = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("Vec<$0>")>]
#endif
type Vec<'T> = class end
module TraceState = let mutable trace_state = None
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::env::VarError")>]
#endif
type std_env_VarError = class end
type IOsEnviron = abstract environ: x: unit -> obj
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Co...ion = Some () 
        v4
and closure4 () (v0 : int32) : ((unit -> unit) -> unit option) =
    closure5(v0)
and method22 (v0 : (unit -> unit)) : (unit -> unit) =
    v0
and closure16 (v0 : Lazy<unit>) () : unit =
    v0.Value
    ()
and closure15 () (v0 : (unit -> unit)) : (unit -> unit) =
    let v1 : (unit -> unit) = method22(v0)
    let v2 : Lazy<unit> = lazy v1 ()
    closure16(v2)
let v0 : unit = ()
let v1 : (unit -> unit) = closure0()
let v2 : unit = (fun () -> v1 (); v0) ()
let v16 : ((unit -> unit) -> System.IDisposable) = closure3()
let new_disposable x = v16 x
let v17 : (int32 -> ((unit -> unit) -> unit option)) = closure4()
let retry_fn x = v17 x
let v18 : ((unit -> unit) -> (unit -> unit)) = closure15()
let memoize x = v18 x
()

00:00:08 d #125 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite
00:00:08 v #48 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:08 d #126 Supervisor.buildFile / takeWhileInclusive / path: date_time.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:08 d #127 Supervisor.buildFile / AsyncSeq.scan / path: date_time.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:08 d #128 Supervisor.buildFile / takeWhileInclusive / path: date_time.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:08 v #129 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # date_time\nopen rust.rust_operators\nopen sm\u0027_operators\n\n/// ##...so8601 x\u0027 : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/date_time.spi"}} / result:
00:00:08 v #130 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/date_time.spi"}} / result:
00:00:08 d #131 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:08 d #132 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:08 d #133 Supervisor.buildFile / AsyncSeq.scan / path: networking.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:08 d #134 Supervisor.buildFile / takeWhileInclusive / path: networking.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:08 d #135 Supervisor.buildFile / AsyncSeq.scan / path: date_time.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:08 d #136 Supervisor.buildFile / takeWhileInclusive / path: date_time.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:09 d #137 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:09 d #138 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:09 d #139 Supervisor.buildFile / AsyncSeq.scan / path: networking.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:09 d #140 Supervisor.buildFile / takeWhileInclusive / path: networking.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:09 d #141 Supervisor.buildFile / AsyncSeq.scan / path: date_time.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:09 d #142 Supervisor.buildFile / takeWhileInclusive / path: date_time.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:09 d #143 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:09 d #144 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:09 d #145 Supervisor.buildFile / AsyncSeq.scan / path: date_time.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("chrono::DateTime<$0>")>]
#endif
type chrono_DateTime<'T> = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("chrono::NaiveDateTime")>]
#endif
type chrono_NaiveDateTime = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("&$0")>]
type Ref<'T> = class end
#else
type Ref<'T> = 'T
#endif

#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>]
type std_string_String = class end
#else
type std_string_String = string
#endif

#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("chrono::Utc")>]
#endif
type chrono_Utc = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("chrono::Local")>]
#endif
type chrono_Local = class en...HH-mm-ss.fff"
    v1 v2
let v0 : (System.Guid -> (System.DateTime -> System.Guid)) = closure0()
let date_time_guid_from_date_time x = v0 x
let v1 : (System.Guid -> System.DateTime) = closure3()
let date_time_from_guid x = v1 x
let v2 : (System.Guid -> (int64 -> System.Guid)) = closure5()
let timestamp_guid_from_timestamp x = v2 x
let v3 : (System.Guid -> int64) = closure8()
let timestamp_from_guid x = v3 x
let v4 : (System.DateTime -> System.Guid) = closure9()
let new_guid_from_date_time x = v4 x
let v5 : (int64 -> System.Guid) = closure10()
let new_guid_from_timestamp x = v5 x
let v6 : (string -> (System.DateTime -> string)) = closure11()
let format x = v6 x
let v7 : (System.DateTime -> string) = closure13()
let format_iso8601 x = v7 x
()

00:00:09 d #146 Supervisor.buildFile / takeWhileInclusive / path: date_time.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("chrono::DateTime<$0>")>]
#endif
type chrono_DateTime<'T> = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("chrono::NaiveDateTime")>]
#endif
type chrono_NaiveDateTime = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("&$0")>]
type Ref<'T> = class end
#else
type Ref<'T> = 'T
#endif

#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>]
type std_string_String = class end
#else
type std_string_String = string
#endif

#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("chrono::Utc")>]
#endif
type chrono_Utc = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("chrono::Local")>]
#endif
type chrono_Local = class en...HH-mm-ss.fff"
    v1 v2
let v0 : (System.Guid -> (System.DateTime -> System.Guid)) = closure0()
let date_time_guid_from_date_time x = v0 x
let v1 : (System.Guid -> System.DateTime) = closure3()
let date_time_from_guid x = v1 x
let v2 : (System.Guid -> (int64 -> System.Guid)) = closure5()
let timestamp_guid_from_timestamp x = v2 x
let v3 : (System.Guid -> int64) = closure8()
let timestamp_from_guid x = v3 x
let v4 : (System.DateTime -> System.Guid) = closure9()
let new_guid_from_date_time x = v4 x
let v5 : (int64 -> System.Guid) = closure10()
let new_guid_from_timestamp x = v5 x
let v6 : (string -> (System.DateTime -> string)) = closure11()
let format x = v6 x
let v7 : (System.DateTime -> string) = closure13()
let format_iso8601 x = v7 x
()

00:00:09 d #147 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite
00:00:09 v #49 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:09 d #148 Supervisor.buildFile / takeWhileInclusive / path: platform.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:09 d #149 Supervisor.buildFile / AsyncSeq.scan / path: platform.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:09 d #150 Supervisor.buildFile / takeWhileInclusive / path: platform.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:09 v #151 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # platform\nopen rust.rust_operators\n\n/// ## fsharp\n\n/// ### os_plat...suffix ()\u0027 : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/platform.spi"}} / result:
00:00:09 v #152 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/platform.spi"}} / result:
00:00:09 d #153 Supervisor.buildFile / AsyncSeq.scan / path: networking.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:09 d #154 Supervisor.buildFile / takeWhileInclusive / path: networking.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:10 d #155 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:10 d #156 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:10 d #157 Supervisor.buildFile / AsyncSeq.scan / path: platform.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:10 d #158 Supervisor.buildFile / takeWhileInclusive / path: platform.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:10 d #159 Supervisor.buildFile / AsyncSeq.scan / path: networking.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:10 d #160 Supervisor.buildFile / takeWhileInclusive / path: networking.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:10 d #161 Supervisor.buildFile / AsyncSeq.scan / path: platform.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
type [<Struct>] US0 =
    | US0_0
    | US0_1
    | US0_2
and [<Struct>] US1 =
    | US1_0 of f0_0 : US0
    | US1_1 of f1_0 : US0
    | US1_2 of f2_0 : US0
    | US1_3 of f3_0 : US0
    | US1_4 of f4_0 : US0
let rec closure0 () () : bool =
    (* run_target_args'
    let v0 : unit = ()
    run_target_args' *)
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v1 : string = "cfg!(windows)"
    let v2 : bool = Fable.Core.RustInterop.emitRustExpr () v1 
    let _run_target_args'_v0 = v2 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v3 : string = "cfg!(windows)"
    let v4 : bool = Fable.Core.RustInterop.emitRustExpr () v3 
    let _run_target_args'_v0 = v4 
    #endif
#if FABLE_COMPILE...untime.InteropServices.RuntimeInformation.IsOSPlatform
    let v17 : bool = v16 v15
    let _run_target_args'_v0 = v17 
    #endif
#else
    let v18 : System.Runtime.InteropServices.OSPlatform = System.Runtime.InteropServices.OSPlatform.Windows
    let v19 : (System.Runtime.InteropServices.OSPlatform -> bool) = System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform
    let v20 : bool = v19 v18
    let _run_target_args'_v0 = v20 
    #endif
    let v21 : bool = _run_target_args'_v0 
    if v21 then
        let v27 : string = ".exe"
        v27
    else
        let v28 : string = ""
        v28
let v0 : (unit -> bool) = closure0()
let is_windows () = v0 ()
let v1 : (unit -> string) = closure1()
let get_executable_suffix () = v1 ()
()

00:00:10 d #162 Supervisor.buildFile / takeWhileInclusive / path: platform.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:
type [<Struct>] US0 =
    | US0_0
    | US0_1
    | US0_2
and [<Struct>] US1 =
    | US1_0 of f0_0 : US0
    | US1_1 of f1_0 : US0
    | US1_2 of f2_0 : US0
    | US1_3 of f3_0 : US0
    | US1_4 of f4_0 : US0
let rec closure0 () () : bool =
    (* run_target_args'
    let v0 : unit = ()
    run_target_args' *)
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v1 : string = "cfg!(windows)"
    let v2 : bool = Fable.Core.RustInterop.emitRustExpr () v1 
    let _run_target_args'_v0 = v2 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v3 : string = "cfg!(windows)"
    let v4 : bool = Fable.Core.RustInterop.emitRustExpr () v3 
    let _run_target_args'_v0 = v4 
    #endif
#if FABLE_COMPILE...untime.InteropServices.RuntimeInformation.IsOSPlatform
    let v17 : bool = v16 v15
    let _run_target_args'_v0 = v17 
    #endif
#else
    let v18 : System.Runtime.InteropServices.OSPlatform = System.Runtime.InteropServices.OSPlatform.Windows
    let v19 : (System.Runtime.InteropServices.OSPlatform -> bool) = System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform
    let v20 : bool = v19 v18
    let _run_target_args'_v0 = v20 
    #endif
    let v21 : bool = _run_target_args'_v0 
    if v21 then
        let v27 : string = ".exe"
        v27
    else
        let v28 : string = ""
        v28
let v0 : (unit -> bool) = closure0()
let is_windows () = v0 ()
let v1 : (unit -> string) = closure1()
let get_executable_suffix () = v1 ()
()

00:00:10 d #163 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite
00:00:10 v #50 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:10 d #164 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:10 d #165 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:10 d #166 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:10 v #167 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # file_system\nopen sm\u0027_operators\nopen rust\nopen rust_operators\n...bine x\u0027 : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/file_system.spi"}} / result:
00:00:10 v #168 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/file_system.spi"}} / result:
00:00:10 d #169 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:10 d #170 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:10 d #171 Supervisor.buildFile / AsyncSeq.scan / path: networking.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:10 d #172 Supervisor.buildFile / takeWhileInclusive / path: networking.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:10 d #173 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:10 d #174 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:11 d #175 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:11 d #176 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:11 d #177 Supervisor.buildFile / AsyncSeq.scan / path: networking.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:11 d #178 Supervisor.buildFile / takeWhileInclusive / path: networking.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:11 d #179 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:11 d #180 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:11 d #181 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:11 d #182 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:11 d #183 Supervisor.buildFile / AsyncSeq.scan / path: networking.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:11 d #184 Supervisor.buildFile / takeWhileInclusive / path: networking.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:11 d #185 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:11 d #186 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:12 d #187 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:12 d #188 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:12 d #189 Supervisor.buildFile / AsyncSeq.scan / path: networking.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:12 d #190 Supervisor.buildFile / takeWhileInclusive / path: networking.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:12 d #191 Supervisor.buildFile / AsyncSeq.scan / path: networking.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>]
type std_string_String = class end
#else
type std_string_String = string
#endif

#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("&$0")>]
type Ref<'T> = class end
#else
type Ref<'T> = 'T
#endif

#if FABLE_COMPILER

type System_Net_Sockets_TcpClient = System.IDisposable
#else
type System_Net_Sockets_TcpClient = System.Net.Sockets.TcpClient
#endif

#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("mut $0")>]
#endif
type Mut<'T> = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("Vec<$0>")>]
#endif
type Vec<'T> = class end
module TraceState = let mutable trace_state = None
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::env...> =
    method41(v0, v1, v2)
and closure25 (v0 : int32 option) (v1 : string) : (int32 -> Async<int32>) =
    closure26(v0, v1)
and closure24 () (v0 : int32 option) : (string -> (int32 -> Async<int32>)) =
    closure25(v0)
let v0 : unit = ()
let v1 : (unit -> unit) = closure0()
let v2 : unit = (fun () -> v1 (); v0) ()
let v16 : (string -> (int32 -> Async<bool>)) = closure3()
let test_port_open x = v16 x
let v17 : (int32 -> (string -> (int32 -> Async<bool>))) = closure11()
let test_port_open_timeout x = v17 x
let v18 : (int32 option -> (bool -> (string -> (int32 -> Async<int64>)))) = closure18()
let wait_for_port_access x = v18 x
let v19 : (int32 option -> (string -> (int32 -> Async<int32>))) = closure24()
let get_available_port x = v19 x
()

00:00:12 d #192 Supervisor.buildFile / takeWhileInclusive / path: networking.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>]
type std_string_String = class end
#else
type std_string_String = string
#endif

#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("&$0")>]
type Ref<'T> = class end
#else
type Ref<'T> = 'T
#endif

#if FABLE_COMPILER

type System_Net_Sockets_TcpClient = System.IDisposable
#else
type System_Net_Sockets_TcpClient = System.Net.Sockets.TcpClient
#endif

#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("mut $0")>]
#endif
type Mut<'T> = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("Vec<$0>")>]
#endif
type Vec<'T> = class end
module TraceState = let mutable trace_state = None
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::env...> =
    method41(v0, v1, v2)
and closure25 (v0 : int32 option) (v1 : string) : (int32 -> Async<int32>) =
    closure26(v0, v1)
and closure24 () (v0 : int32 option) : (string -> (int32 -> Async<int32>)) =
    closure25(v0)
let v0 : unit = ()
let v1 : (unit -> unit) = closure0()
let v2 : unit = (fun () -> v1 (); v0) ()
let v16 : (string -> (int32 -> Async<bool>)) = closure3()
let test_port_open x = v16 x
let v17 : (int32 -> (string -> (int32 -> Async<bool>))) = closure11()
let test_port_open_timeout x = v17 x
let v18 : (int32 option -> (bool -> (string -> (int32 -> Async<int64>)))) = closure18()
let wait_for_port_access x = v18 x
let v19 : (int32 option -> (string -> (int32 -> Async<int32>))) = closure24()
let get_available_port x = v19 x
()

00:00:12 d #193 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite
00:00:12 v #51 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:12 d #194 Supervisor.buildFile / takeWhileInclusive / path: guid.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:12 d #195 Supervisor.buildFile / AsyncSeq.scan / path: guid.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:12 d #196 Supervisor.buildFile / takeWhileInclusive / path: guid.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:12 v #197 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # guid\n\n/// ## guid\n\n/// ### guid\nnominal guid_python =\n    \u0060...ew_raw_guid x\u0027 : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/guid.spi"}} / result:
00:00:12 v #198 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/guid.spi"}} / result:
00:00:12 d #199 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:12 d #200 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:12 d #201 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:12 d #202 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:12 d #203 Supervisor.buildFile / AsyncSeq.scan / path: guid.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:12 d #204 Supervisor.buildFile / takeWhileInclusive / path: guid.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:12 d #205 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:12 d #206 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:13 d #207 Supervisor.buildFile / AsyncSeq.scan / path: guid.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
let rec closure0 () (v0 : string) : System.Guid =
    (* run_target_args'
    let v1 : unit = ()
    run_target_args' *)
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v2 : System.Guid = v0 |> System.Guid 
    let _run_target_args'_v1 = v2 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v5 : System.Guid = v0 |> System.Guid 
    let _run_target_args'_v1 = v5 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v8 : System.Guid = null |> unbox<System.Guid>
    let _run_target_args'_v1 = v8 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v11 : System.Guid = v0 |> System.Guid 
    let _run_target_args'_v1 = v11 
    #endif
#if FABLE_COMPILER_PYTHON
    let v14 : System.Guid = v0 |...PYTHON
    let v743 : System.Guid = v726 |> System.Guid 
    let _run_target_args'_v727 = v743 
    #endif
#else
    let v746 : System.Guid = v726 |> System.Guid 
    let _run_target_args'_v727 = v746 
    #endif
    let v749 : System.Guid = _run_target_args'_v727 
    let _run_target_args'_v12 = v749 
    #endif
    let v754 : System.Guid = _run_target_args'_v12 
    v754
and closure1 () (v0 : string) : System.Guid =
    method0(v0)
and closure3 () () : System.Guid =
    let v0 : (unit -> System.Guid) = System.Guid.NewGuid
    v0 ()
let v0 : (string -> System.Guid) = closure0()
let new_guid x = v0 x
let v1 : (string -> System.Guid) = closure1()
let hash_guid x = v1 x
let v2 : (unit -> System.Guid) = closure3()
let new_raw_guid x = v2 x
()

00:00:13 d #208 Supervisor.buildFile / takeWhileInclusive / path: guid.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:
let rec closure0 () (v0 : string) : System.Guid =
    (* run_target_args'
    let v1 : unit = ()
    run_target_args' *)
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v2 : System.Guid = v0 |> System.Guid 
    let _run_target_args'_v1 = v2 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v5 : System.Guid = v0 |> System.Guid 
    let _run_target_args'_v1 = v5 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v8 : System.Guid = null |> unbox<System.Guid>
    let _run_target_args'_v1 = v8 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v11 : System.Guid = v0 |> System.Guid 
    let _run_target_args'_v1 = v11 
    #endif
#if FABLE_COMPILER_PYTHON
    let v14 : System.Guid = v0 |...PYTHON
    let v743 : System.Guid = v726 |> System.Guid 
    let _run_target_args'_v727 = v743 
    #endif
#else
    let v746 : System.Guid = v726 |> System.Guid 
    let _run_target_args'_v727 = v746 
    #endif
    let v749 : System.Guid = _run_target_args'_v727 
    let _run_target_args'_v12 = v749 
    #endif
    let v754 : System.Guid = _run_target_args'_v12 
    v754
and closure1 () (v0 : string) : System.Guid =
    method0(v0)
and closure3 () () : System.Guid =
    let v0 : (unit -> System.Guid) = System.Guid.NewGuid
    v0 ()
let v0 : (string -> System.Guid) = closure0()
let new_guid x = v0 x
let v1 : (string -> System.Guid) = closure1()
let hash_guid x = v1 x
let v2 : (unit -> System.Guid) = closure3()
let new_raw_guid x = v2 x
()

00:00:13 d #209 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite
00:00:13 v #52 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:13 d #210 Supervisor.buildFile / takeWhileInclusive / path: sm'.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:13 d #211 Supervisor.buildFile / AsyncSeq.scan / path: sm'.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:13 d #212 Supervisor.buildFile / takeWhileInclusive / path: sm'.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:13 v #213 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # sm\u0027\nopen rust\nopen rust_operators\nopen sm\u0027_real\n\n/// ##...ng = from_std_string\n","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/sm\u0027.spi"}} / result:
00:00:13 v #214 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/sm\u0027.spi"}} / result:
00:00:13 d #215 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:13 d #216 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:13 d #217 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>]
type std_string_String = class end
#else
type std_string_String = string
#endif

#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("&$0")>]
type Ref<'T> = class end
#else
type Ref<'T> = 'T
#endif

#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("mut $0")>]
#endif
type Mut<'T> = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("Vec<$0>")>]
#endif
type Vec<'T> = class end
module TraceState = let mutable trace_state = None
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::env::VarError")>]
#endif
type std_env_VarError = class end
type IOsEnviron = abstract environ: x: unit -> obj
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Co... (struct (string * System.Threading.CancellationToken option * (struct (string * string) []) * (struct (int32 * string * bool) -> Async<unit>) option * (std_sync_Arc<std_sync_Mutex<std_process_ChildStdin>> -> unit) option * bool * string option) -> Async<struct (int32 * string)>) = closure27()
let execute_with_options_async x = v18 x
let v19 : ((Heap0 -> Heap0) -> struct (string * System.Threading.CancellationToken option * (struct (string * string) []) * (struct (int32 * string * bool) -> Async<unit>) option * (std_sync_Arc<std_sync_Mutex<std_process_ChildStdin>> -> unit) option * bool * string option)) = closure28()
let execution_options x = v19 x
let v20 : (string -> Result<(string []), string>) = closure29()
let split_args x = v20 x
()

00:00:13 d #218 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>]
type std_string_String = class end
#else
type std_string_String = string
#endif

#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("&$0")>]
type Ref<'T> = class end
#else
type Ref<'T> = 'T
#endif

#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("mut $0")>]
#endif
type Mut<'T> = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("Vec<$0>")>]
#endif
type Vec<'T> = class end
module TraceState = let mutable trace_state = None
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::env::VarError")>]
#endif
type std_env_VarError = class end
type IOsEnviron = abstract environ: x: unit -> obj
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Co... (struct (string * System.Threading.CancellationToken option * (struct (string * string) []) * (struct (int32 * string * bool) -> Async<unit>) option * (std_sync_Arc<std_sync_Mutex<std_process_ChildStdin>> -> unit) option * bool * string option) -> Async<struct (int32 * string)>) = closure27()
let execute_with_options_async x = v18 x
let v19 : ((Heap0 -> Heap0) -> struct (string * System.Threading.CancellationToken option * (struct (string * string) []) * (struct (int32 * string * bool) -> Async<unit>) option * (std_sync_Arc<std_sync_Mutex<std_process_ChildStdin>> -> unit) option * bool * string option)) = closure28()
let execution_options x = v19 x
let v20 : (string -> Result<(string []), string>) = closure29()
let split_args x = v20 x
()

00:00:13 d #219 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite
00:00:13 d #220 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:13 d #221 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:13 d #222 Supervisor.buildFile / AsyncSeq.scan / path: sm'.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:13 d #223 Supervisor.buildFile / takeWhileInclusive / path: sm'.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:13 d #224 Supervisor.buildFile / AsyncSeq.scan / path: sm'.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("regex::Regex")>]
#endif
type regex_Regex = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::borrow::Cow<$0>")>]
#endif
type std_borrow_Cow<'T> = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>]
type std_string_String = class end
#else
type std_string_String = string
#endif

#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("regex::Error")>]
#endif
type regex_Error = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("str")>]
type Str = class end
#else
type Str = string
#endif

type UH0 =
    | UH0_0
    | UH0_1 of char * UH0
and Mut0 = {mutable l0 : int32; mutable l1 : string; mutable l2 : string}
and Mut...= closure31()
let trim x = v13 x
let v14 : ((char []) -> (string -> string)) = closure32()
let trim_end x = v14 x
let v15 : ((char []) -> (string -> string)) = closure36()
let trim_start x = v15 x
let v16 : (int32 -> (string -> string)) = closure38()
let ellipsis x = v16 x
let v17 : (int64 -> (string -> string)) = closure40()
let ellipsis_end x = v17 x
let v18 : (exn -> string) = closure42()
let format_exception x = v18 x
let v19 : (string -> ((string []) -> string)) = closure43()
let concat_array x = v19 x
let v20 : (string -> (string seq -> string)) = closure45()
let concat x = v20 x
let v21 : (string -> ((string []) -> string)) = closure47()
let join' x = v21 x
let v22 : (string -> (char [])) = closure49()
let to_char_array x = v22 x
()

00:00:13 d #225 Supervisor.buildFile / takeWhileInclusive / path: sm'.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("regex::Regex")>]
#endif
type regex_Regex = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::borrow::Cow<$0>")>]
#endif
type std_borrow_Cow<'T> = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>]
type std_string_String = class end
#else
type std_string_String = string
#endif

#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("regex::Error")>]
#endif
type regex_Error = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("str")>]
type Str = class end
#else
type Str = string
#endif

type UH0 =
    | UH0_0
    | UH0_1 of char * UH0
and Mut0 = {mutable l0 : int32; mutable l1 : string; mutable l2 : string}
and Mut...= closure31()
let trim x = v13 x
let v14 : ((char []) -> (string -> string)) = closure32()
let trim_end x = v14 x
let v15 : ((char []) -> (string -> string)) = closure36()
let trim_start x = v15 x
let v16 : (int32 -> (string -> string)) = closure38()
let ellipsis x = v16 x
let v17 : (int64 -> (string -> string)) = closure40()
let ellipsis_end x = v17 x
let v18 : (exn -> string) = closure42()
let format_exception x = v18 x
let v19 : (string -> ((string []) -> string)) = closure43()
let concat_array x = v19 x
let v20 : (string -> (string seq -> string)) = closure45()
let concat x = v20 x
let v21 : (string -> ((string []) -> string)) = closure47()
let join' x = v21 x
let v22 : (string -> (char [])) = closure49()
let to_char_array x = v22 x
()

00:00:13 d #226 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite
00:00:13 d #227 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:13 d #228 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:14 d #229 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:14 d #230 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:14 d #231 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:14 d #232 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:15 d #233 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:15 d #234 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:15 d #235 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:15 d #236 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:16 d #237 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:16 d #238 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:16 d #239 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:16 d #240 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:17 d #241 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:17 d #242 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:17 d #243 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:17 d #244 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:18 d #245 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:18 d #246 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:18 d #247 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:18 d #248 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:19 d #249 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:19 d #250 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:19 d #251 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:19 d #252 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:20 d #253 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>]
type std_string_String = class end
#else
type std_string_String = string
#endif

#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("&$0")>]
type Ref<'T> = class end
#else
type Ref<'T> = 'T
#endif

#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::path::PathBuf")>]
type std_path_PathBuf = class end
#else
type std_path_PathBuf = string
#endif

#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::ffi::OsString")>]
#endif
type std_ffi_OsString = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("mut $0")>]
#endif
type Mut<'T> = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("Vec<$0>")>]
#endif
type Vec<'T> = c...osable)) = closure38()
let create_temp_dir () = v27 ()
let v28 : (string -> struct (string * System.IDisposable)) = closure47()
let create_temp_dir' x = v28 x
let v29 : (unit -> string) = closure49()
let get_source_directory () = v29 ()
let v30 : (string -> string) = closure50()
let normalize_path x = v30 x
let v31 : (string -> string) = closure58()
let new_file_uri x = v31 x
let v32 : (unit -> string) = closure59()
let get_workspace_root () = v32 ()
let v33 : (string -> unit) = closure61()
let trace_file x = v33 x
let v34 : (bool -> unit) = closure63()
let init_trace_file x = v34 x
let v35 : (string -> (string -> unit)) = closure64()
let link_directory x = v35 x
let v36 : (string -> (string -> string)) = closure66()
let (</>) x = v36 x
()

00:00:20 d #254 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>]
type std_string_String = class end
#else
type std_string_String = string
#endif

#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("&$0")>]
type Ref<'T> = class end
#else
type Ref<'T> = 'T
#endif

#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::path::PathBuf")>]
type std_path_PathBuf = class end
#else
type std_path_PathBuf = string
#endif

#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::ffi::OsString")>]
#endif
type std_ffi_OsString = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("mut $0")>]
#endif
type Mut<'T> = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("Vec<$0>")>]
#endif
type Vec<'T> = c...osable)) = closure38()
let create_temp_dir () = v27 ()
let v28 : (string -> struct (string * System.IDisposable)) = closure47()
let create_temp_dir' x = v28 x
let v29 : (unit -> string) = closure49()
let get_source_directory () = v29 ()
let v30 : (string -> string) = closure50()
let normalize_path x = v30 x
let v31 : (string -> string) = closure58()
let new_file_uri x = v31 x
let v32 : (unit -> string) = closure59()
let get_workspace_root () = v32 ()
let v33 : (string -> unit) = closure61()
let trace_file x = v33 x
let v34 : (bool -> unit) = closure63()
let init_trace_file x = v34 x
let v35 : (string -> (string -> unit)) = closure64()
let link_directory x = v35 x
let v36 : (string -> (string -> string)) = closure66()
let (</>) x = v36 x
()

00:00:20 d #255 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite
00:00:20 v #53 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
In [ ]:
{ pwsh ../apps/scheduler/build.ps1 } | Invoke-Block
00:00:00 v #1 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"; options = { command = dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = Some <fun:compiler@87-4>; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:00:00 v #2 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #2 > 00:00:00 d #1 pwd: /home/runner/work/polyglot/polyglot
00:00:00 v #3 > 00:00:00 d #2 dllPath: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release
00:00:00 v #4 > 00:00:00 d #3 targetDir: /home/runner/work/polyglot/polyglot/target/spiral_Eval
00:00:00 v #3 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #4 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #5 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #6 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #7 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #8 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #9 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #10 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #11 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #12 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #13 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #14 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #15 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #16 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #17 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #18 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #19 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #20 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #21 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #22 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #23 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #24 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #25 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #26 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #27 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #28 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #29 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #30 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #31 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #32 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #33 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #34 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #35 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #5 > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:00 v #36 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:01 v #37 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:01 v #38 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:01 v #39 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:01 v #1 Supervisor.sendJson / port: 13805 / json: {"Ping":true} / result:
00:00:01 v #2 Supervisor.awaitCompiler / Ping / result: 'Some null' / port: 13805 / retry: 1
00:00:01 v #6 > Server bound to: http://localhost:13805
00:00:01 d #7 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path Tasks.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path Tasks.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:01 v #8 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "Tasks.dib", "--retries", "3"])) }
00:00:01 v #9 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib", "--output-path", "/home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:00:02 v #10 > >
00:00:02 v #11 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:02 v #12 > > │ ## Tasks (Polyglot)
00:00:05 v #13 > >
00:00:05 v #14 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:05 v #15 > > //// test
00:00:05 v #16 > >
00:00:05 v #17 > > open testing
00:00:08 v #18 > >
00:00:08 v #19 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 v #20 > > │ ## task_name
00:00:08 v #21 > >
00:00:08 v #22 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 v #23 > > nominal task_name = string
00:00:08 v #24 > >
00:00:08 v #25 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 v #26 > > │ ## manual_scheduling
00:00:08 v #27 > >
00:00:08 v #28 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 v #29 > > union manual_scheduling =
00:00:08 v #30 > >     | WithSuggestion
00:00:08 v #31 > >     | WithoutSuggestion
00:00:09 v #32 > >
00:00:09 v #33 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:09 v #34 > > │ ## recurrency_offset
00:00:09 v #35 > >
00:00:09 v #36 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 v #37 > > union recurrency_offset =
00:00:09 v #38 > >     | Days : i32
00:00:09 v #39 > >     | Weeks : i32
00:00:09 v #40 > >     | Months : i32
00:00:09 v #41 > >
00:00:09 v #42 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:09 v #43 > > │ ## day_of_week
00:00:09 v #44 > >
00:00:09 v #45 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 v #46 > > union day_of_week =
00:00:09 v #47 > >     | Sunday
00:00:09 v #48 > >     | Monday
00:00:09 v #49 > >     | Tuesday
00:00:09 v #50 > >     | Wednesday
00:00:09 v #51 > >     | Thursday
00:00:09 v #52 > >     | Friday
00:00:09 v #53 > >     | Saturday
00:00:09 v #54 > >
00:00:09 v #55 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:09 v #56 > > │ ## month
00:00:09 v #57 > >
00:00:09 v #58 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 v #59 > > union month =
00:00:09 v #60 > >     | January
00:00:09 v #61 > >     | February
00:00:09 v #62 > >     | March
00:00:09 v #63 > >     | April
00:00:09 v #64 > >     | May
00:00:09 v #65 > >     | June
00:00:09 v #66 > >     | July
00:00:09 v #67 > >     | August
00:00:09 v #68 > >     | September
00:00:09 v #69 > >     | October
00:00:09 v #70 > >     | November
00:00:09 v #71 > >     | December
00:00:09 v #72 > >
00:00:09 v #73 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:09 v #74 > > │ ## day
00:00:09 v #75 > >
00:00:09 v #76 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 v #77 > > nominal day = i32
00:00:09 v #78 > >
00:00:09 v #79 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:09 v #80 > > │ ## year
00:00:09 v #81 > >
00:00:09 v #82 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 v #83 > > nominal year = i32
00:00:10 v #84 > >
00:00:10 v #85 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:10 v #86 > > │ ## fixed_recurrency
00:00:10 v #87 > >
00:00:10 v #88 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 v #89 > > union fixed_recurrency =
00:00:10 v #90 > >     | Weekly : day_of_week
00:00:10 v #91 > >     | Monthly : day
00:00:10 v #92 > >     | Yearly : day * month
00:00:10 v #93 > >
00:00:10 v #94 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:10 v #95 > > │ ## recurrency
00:00:10 v #96 > >
00:00:10 v #97 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 v #98 > > union recurrency =
00:00:10 v #99 > >     | Offset : recurrency_offset
00:00:10 v #100 > >     | Fixed : list fixed_recurrency
00:00:10 v #101 > >
00:00:10 v #102 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:10 v #103 > > │ ## scheduling
00:00:10 v #104 > >
00:00:10 v #105 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 v #106 > > union scheduling =
00:00:10 v #107 > >     | Manual : manual_scheduling
00:00:10 v #108 > >     | Recurrent : recurrency
00:00:10 v #109 > >
00:00:10 v #110 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:10 v #111 > > │ ## task
00:00:10 v #112 > >
00:00:10 v #113 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 v #114 > > type task =
00:00:10 v #115 > >     {
00:00:10 v #116 > >         name : task_name
00:00:10 v #117 > >         scheduling : scheduling
00:00:10 v #118 > >     }
00:00:11 v #119 > >
00:00:11 v #120 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:11 v #121 > > │ ## date
00:00:11 v #122 > >
00:00:11 v #123 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 v #124 > > type date =
00:00:11 v #125 > >     {
00:00:11 v #126 > >         year : year
00:00:11 v #127 > >         month : month
00:00:11 v #128 > >         day : day
00:00:11 v #129 > >     }
00:00:11 v #130 > >
00:00:11 v #131 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:11 v #132 > > │ ## status
00:00:11 v #133 > >
00:00:11 v #134 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 v #135 > > union status =
00:00:11 v #136 > >     | Postponed : option ()
00:00:11 v #137 > >
00:00:11 v #138 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:11 v #139 > > │ ## event
00:00:11 v #140 > >
00:00:11 v #141 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 v #142 > > type event =
00:00:11 v #143 > >     {
00:00:11 v #144 > >         date : date
00:00:11 v #145 > >         status : status
00:00:11 v #146 > >     }
00:00:11 v #147 > >
00:00:11 v #148 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:11 v #149 > > │ ## task_template
00:00:11 v #150 > >
00:00:11 v #151 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 v #152 > > type task_template =
00:00:11 v #153 > >     {
00:00:11 v #154 > >         task : task
00:00:11 v #155 > >         events : list event
00:00:11 v #156 > >     }
00:00:11 v #157 > >
00:00:11 v #158 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:11 v #159 > > │ ## get_tasks (test)
00:00:11 v #160 > >
00:00:11 v #161 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 v #162 > > //// test
00:00:11 v #163 > >
00:00:11 v #164 > > inl get_tasks () : list task_template =
00:00:11 v #165 > >     [[
00:00:11 v #166 > >         {
00:00:11 v #167 > >             task =
00:00:11 v #168 > >                 {
00:00:11 v #169 > >                     name = task_name "01"
00:00:11 v #170 > >                     scheduling = Manual WithSuggestion
00:00:11 v #171 > >                 }
00:00:11 v #172 > >             events = [[]]
00:00:11 v #173 > >         }
00:00:11 v #174 > >         {
00:00:11 v #175 > >             task =
00:00:11 v #176 > >                 {
00:00:11 v #177 > >                     name = task_name "02"
00:00:11 v #178 > >                     scheduling = Manual WithSuggestion
00:00:11 v #179 > >                 }
00:00:11 v #180 > >             events = [[]]
00:00:11 v #181 > >         }
00:00:11 v #182 > >         {
00:00:11 v #183 > >             task =
00:00:11 v #184 > >                 {
00:00:11 v #185 > >                     name = task_name "03"
00:00:11 v #186 > >                     scheduling = Manual WithSuggestion
00:00:11 v #187 > >                 }
00:00:11 v #188 > >             events = [[]]
00:00:11 v #189 > >         }
00:00:11 v #190 > >     ]]
00:00:12 v #191 > >
00:00:12 v #192 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:12 v #193 > > //// test
00:00:12 v #194 > > ///! fsharp
00:00:12 v #195 > > ///! cuda
00:00:12 v #196 > > ///! rust
00:00:12 v #197 > > ///! typescript
00:00:12 v #198 > > ///! python
00:00:12 v #199 > >
00:00:12 v #200 > > get_tasks ()
00:00:12 v #201 > > |> sm'.format_debug
00:00:12 v #202 > > |> _assert sm'.contains "01"
00:00:21 v #203 > >
00:00:21 v #204 > > ── [ 9.83s - return value ] ────────────────────────────────────────────────────
00:00:21 v #205 > > │ .py output (Cuda):
00:00:21 v #206 > > │ __assert / actual: 01 / expected: UH2_1(v0='01',
00:00:21 v #207 > > v1=US1_0(v0=US0_0()), v2=UH1_0(), v3=UH2_1(v0='02', v1=US1_0(v0=US0_0()),
00:00:21 v #208 > > v2=UH1_0(), v3=UH2_1(v0='03', v1=US1_0(v0=US0_0()), v2=UH1_0(), v3=UH2_0())))
00:00:21 v #209 > > │
00:00:21 v #210 > > │ .rs output:
00:00:21 v #211 > > │ __assert / actual: "01" / expected: "UH2_1("01",
00:00:21 v #212 > > US1_0(US0_0), UH1_0, UH2_1("02", US1_0(US0_0), UH1_0, UH2_1("03", US1_0(US0_0),
00:00:21 v #213 > > UH1_0, UH2_0)))"
00:00:21 v #214 > > │
00:00:21 v #215 > > │ .ts output:
00:00:21 v #216 > > │ __assert / actual: 01 / expected: UH2_1 (01, US1_0 US0_0,
00:00:21 v #217 > > UH1_0, UH2_1 (02, US1_0 US0_0, UH1_0, UH2_1 (03, US1_0 US0_0, UH1_0, UH2_0)))
00:00:21 v #218 > > │
00:00:21 v #219 > > │ .py output:
00:00:21 v #220 > > │ __assert / actual: 01 / expected: UH2_1 ("01", US1_0 US0_0,
00:00:21 v #221 > > UH1_0, UH2_1 ("02", US1_0 US0_0, UH1_0, UH2_1 ("03", US1_0 US0_0, UH1_0,
00:00:21 v #222 > > UH2_0)))
00:00:21 v #223 > > │
00:00:21 v #224 > > │
00:00:21 v #225 > >
00:00:21 v #226 > > ── [ 9.84s - stdout ] ──────────────────────────────────────────────────────────
00:00:21 v #227 > > │ .fsx output:
00:00:21 v #228 > > │ __assert / actual: "01" / expected: "UH2_1
00:00:21 v #229 > > │   ("01", US1_0 US0_0, UH1_0,
00:00:21 v #230 > > │    UH2_1 ("02", US1_0 US0_0, UH1_0, UH2_1 ("03", US1_0 US0_0,
00:00:21 v #231 > > UH1_0, UH2_0)))"
00:00:21 v #232 > > │
00:00:21 v #233 > >
00:00:21 v #234 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:21 v #235 > > //// test
00:00:21 v #236 > > ///! fsharp
00:00:21 v #237 > > ///! cuda
00:00:21 v #238 > > ///! rust
00:00:21 v #239 > > ///! typescript
00:00:21 v #240 > > ///! python
00:00:21 v #241 > >
00:00:21 v #242 > > get_tasks ()
00:00:21 v #243 > > |> listm'.try_item 0i32
00:00:21 v #244 > > |> fun (Some task) => task.task.name
00:00:21 v #245 > > |> _assert_eq (task_name "01")
00:00:29 v #246 > >
00:00:29 v #247 > > ── [ 7.31s - return value ] ────────────────────────────────────────────────────
00:00:29 v #248 > > │ .py output (Cuda):
00:00:29 v #249 > > │ __assert_eq / actual: 01 / expected: 01
00:00:29 v #250 > > │
00:00:29 v #251 > > │ .rs output:
00:00:29 v #252 > > │ __assert_eq / actual: "01" / expected: "01"
00:00:29 v #253 > > │
00:00:29 v #254 > > │ .ts output:
00:00:29 v #255 > > │ __assert_eq / actual: 01 / expected: 01
00:00:29 v #256 > > │
00:00:29 v #257 > > │ .py output:
00:00:29 v #258 > > │ __assert_eq / actual: 01 / expected: 01
00:00:29 v #259 > > │
00:00:29 v #260 > > │
00:00:29 v #261 > >
00:00:29 v #262 > > ── [ 7.31s - stdout ] ──────────────────────────────────────────────────────────
00:00:29 v #263 > > │ .fsx output:
00:00:29 v #264 > > │ __assert_eq / actual: "01" / expected: "01"
00:00:29 v #265 > > │
00:00:29 v #266 > >
00:00:29 v #267 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:29 v #268 > > //// test
00:00:29 v #269 > > ///! fsharp
00:00:29 v #270 > > ////! cuda
00:00:29 v #271 > > ////! typescript
00:00:29 v #272 > > ////! python
00:00:29 v #273 > > ///// print_code
00:00:29 v #274 > >
00:00:29 v #275 > > inl print padding cols =
00:00:29 v #276 > >     ({ lines = [[]]; last_lines = [[]]; max_acc = 0i32 }, cols)
00:00:29 v #277 > >     ||> listm.fold fun { last_lines max_acc } lines =>
00:00:29 v #278 > >         inl { count max } =
00:00:29 v #279 > >             (lines, { count = 0i32; max = 0i32 })
00:00:29 v #280 > >             ||> listm.foldBack fun line { count max } => {
00:00:29 v #281 > >                 count = count + 1
00:00:29 v #282 > >                 max =
00:00:29 v #283 > >                     inl len = line |> sm'.length
00:00:29 v #284 > >                     if len > max
00:00:29 v #285 > >                     then len
00:00:29 v #286 > >                     else max
00:00:29 v #287 > >             }
00:00:29 v #288 > >         inl { lines } =
00:00:29 v #289 > >             (lines, { lines = [[]]; i = 0i32 })
00:00:29 v #290 > >             ||> listm.foldBack fun line { lines i } => {
00:00:29 v #291 > >                 lines =
00:00:29 v #292 > >                     inl last_line =
00:00:29 v #293 > >                         last_lines
00:00:29 v #294 > >                         |> listm'.try_item (count - i - 1)
00:00:29 v #295 > >                         |> optionm'.default_with fun () =>
00:00:29 v #296 > >                             " " |> sm'.replicate max_acc
00:00:29 v #297 > >                     inl line =
00:00:29 v #298 > >                         if padding = 0
00:00:29 v #299 > >                         then line
00:00:29 v #300 > >                         else
00:00:29 v #301 > >                             inl padding = " " |> sm'.replicate padding
00:00:29 v #302 > >                             $'$"{!line}{!padding}"'
00:00:29 v #303 > >                     inl line = line |> sm'.pad_right (max + padding) ' '
00:00:29 v #304 > >                     $'$"{!last_line}{!line}"' :: lines
00:00:29 v #305 > >                 i = i + 1
00:00:29 v #306 > >             }
00:00:29 v #307 > >         {
00:00:29 v #308 > >             lines
00:00:29 v #309 > >             last_lines = lines
00:00:29 v #310 > >             max_acc = max_acc + max + padding
00:00:29 v #311 > >         }
00:00:29 v #312 > >     |> fun x => x.lines
00:00:29 v #313 > >     |> listm'.box
00:00:29 v #314 > >     |> seq.of_list'
00:00:29 v #315 > >     |> sm'.concat "\n"
00:00:29 v #316 > >
00:00:29 v #317 > > inl col () =
00:00:29 v #318 > >     [[ "Task" ]]
00:00:29 v #319 > >     ++ (
00:00:29 v #320 > >         get_tasks ()
00:00:29 v #321 > >         |> listm.map fun task =>
00:00:29 v #322 > >             inl (task_name name) = task.task.name
00:00:29 v #323 > >             name
00:00:29 v #324 > >     )
00:00:29 v #325 > >
00:00:29 v #326 > > inl cols () =
00:00:29 v #327 > >     [[
00:00:29 v #328 > >         col ()
00:00:29 v #329 > >         col ()
00:00:29 v #330 > >         [[ "a"; "b"; "c"; "d"; "e" ]]
00:00:29 v #331 > >     ]]
00:00:29 v #332 > >
00:00:29 v #333 > > inl main () =
00:00:29 v #334 > >     cols ()
00:00:29 v #335 > >     |> print 1i32
00:00:29 v #336 > >     |> console.write_line
00:00:29 v #337 > >
00:00:29 v #338 > > ── [ 365.98ms - stdout ] ───────────────────────────────────────────────────────
00:00:29 v #339 > > │ Task Task a
00:00:29 v #340 > > │ 01   01   b
00:00:29 v #341 > > │ 02   02   c
00:00:29 v #342 > > │ 03   03   d
00:00:29 v #343 > > │           e
00:00:29 v #344 > > │
00:00:29 v #345 > 00:00:28 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 10901 }
00:00:29 v #346 > 00:00:28 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:30 v #347 > 00:00:28 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib.ipynb to html
00:00:30 v #348 > 00:00:28 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:30 v #349 > 00:00:28 v #7 !   validate(nb)
00:00:30 v #350 > 00:00:29 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:30 v #351 > 00:00:29 v #9 !   return _pygments_highlight(
00:00:30 v #352 > 00:00:29 v #10 ! [NbConvertApp] Writing 309952 bytes to /home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib.html
00:00:31 v #353 > 00:00:29 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 902 }
00:00:31 v #354 > 00:00:29 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 902 }
00:00:31 v #355 > 00:00:29 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:31 v #356 > 00:00:29 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:00:31 v #357 > 00:00:29 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:00:31 v #358 > 00:00:29 d #16 spiral.run / dib / { exit_code = 0; result_length = 11862 }
00:00:31 d #359 runtime.execute_with_options_async / { exit_code = 0; output_length = 15210 }
00:00:31 d #3 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path Tasks.dib --retries 3
00:00:31 v #40 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 d #1 writeDibCode / output: Spi / path: Tasks.dib
00:00:00 d #2 parseDibCode / output: Spi / file: Tasks.dib
In [ ]:
{ pwsh ../apps/chat/build.ps1 } | Invoke-Block
00:00:00 v #1 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"; options = { command = dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = Some <fun:compiler@87-4>; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:00:00 v #2 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #2 > 00:00:00 d #1 pwd: /home/runner/work/polyglot/polyglot
00:00:00 v #3 > 00:00:00 d #2 dllPath: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release
00:00:00 v #4 > 00:00:00 d #3 targetDir: /home/runner/work/polyglot/polyglot/target/spiral_Eval
00:00:00 v #3 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #4 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #5 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #6 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #7 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #8 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #9 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #10 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #11 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #12 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #13 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #14 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #15 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #16 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #17 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #18 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #19 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #20 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #21 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #22 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #23 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #24 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #25 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #26 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #27 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #28 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #29 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #30 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #31 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #32 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #33 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #34 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #5 > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:00 v #35 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #36 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #37 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #38 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:01 v #1 Supervisor.sendJson / port: 13805 / json: {"Ping":true} / result:
00:00:01 v #2 Supervisor.awaitCompiler / Ping / result: 'Some null' / port: 13805 / retry: 1
00:00:01 v #6 > Server bound to: http://localhost:13805
00:00:01 d #7 runtime.execute_with_options_async / { file_name = ../../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path chat_contract.dib --retries 5"; options = { command = ../../../deps/spiral/workspace/target/release/spiral dib --path chat_contract.dib --retries 5; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:01 v #8 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "chat_contract.dib", "--retries", "5"])) }
00:00:01 v #9 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/apps/chat/contract/chat_contract.dib", "--output-path", "/home/runner/work/polyglot/polyglot/apps/chat/contract/chat_contract.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/chat/contract/chat_contract.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/chat/contract/chat_contract.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:00:02 v #10 > >
00:00:02 v #11 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:02 v #12 > > │ # chat_contract
00:00:05 v #13 > >
00:00:05 v #14 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:05 v #15 > > open rust
00:00:05 v #16 > > open rust.rust_operators
00:00:08 v #17 > >
00:00:08 v #18 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 v #19 > > //// test
00:00:08 v #20 > >
00:00:08 v #21 > > open testing
00:00:08 v #22 > >
00:00:08 v #23 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 v #24 > > │ ## chat_contract
00:00:08 v #25 > >
00:00:08 v #26 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 v #27 > > │ ### state
00:00:08 v #28 > >
00:00:08 v #29 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 v #30 > > type state =
00:00:08 v #31 > >     {
00:00:08 v #32 > >         version : u32
00:00:08 v #33 > >         account_set : near.iterable_set near.account_id
00:00:08 v #34 > >         alias_set : near.iterable_set sm'.std_string
00:00:08 v #35 > >         account_map : near.lookup_map near.account_id sm'.std_string
00:00:08 v #36 > >         alias_map : near.lookup_map sm'.std_string (mapm.hash_map
00:00:08 v #37 > > near.account_id (u64 * u32))
00:00:08 v #38 > >     }
00:00:09 v #39 > >
00:00:09 v #40 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 v #41 > > //// test
00:00:09 v #42 > > ///! rust -c
00:00:09 v #43 > >
00:00:09 v #44 > > ()
00:01:02 v #45 > >
00:01:02 v #46 > > ── [ 53.41s - return value ] ───────────────────────────────────────────────────
00:01:02 v #47 > > │ Installed near-sandbox into
00:01:02 v #48 > > /home/runner/work/polyglot/spiral/workspace/target/release/build/near-sandbox-ut
00:01:02 v #49 > > ils-c39df2faf0b47791/out/.near/near-sandbox-1.40.0_7dd0b5993577f592be15eb102e5a3
00:01:02 v #50 > > da37be66271/near-sandbox
00:01:02 v #51 > > │
00:01:02 v #52 > > │ 00:00:03 i #2 near_workspaces.print_usd / { retry = 1;
00:01:02 v #53 > > total_gas_burnt_usd = +0.000808; total_gas_burnt = 1209326779756 }
00:01:02 v #54 > > │ 00:00:03 i #3 near_workspaces.print_usd / outcome / {
00:01:02 v #55 > > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206;
00:01:02 v #56 > > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
00:01:02 v #57 > > │ 00:00:03 i #4 near_workspaces.print_usd / outcome / {
00:01:02 v #58 > > is_success = true; gas_burnt_usd = +0.000602; tokens_burnt_usd = +0.000602;
00:01:02 v #59 > > gas_burnt = 901244920416; tokens_burnt = 90124492041600000000 }
00:01:02 v #60 > > │ 00:00:03 w #5 spiral_wasm.run / Error error / { retry =
00:01:02 v #61 > > 1; error = "{ receipt_outcomes_len = 1; retry = 1; receipt_failures = [] }" }
00:01:02 v #62 > > │
00:01:02 v #63 > > │
00:01:02 v #64 > > │
00:01:02 v #65 > > │ 00:00:05 i #8 near_workspaces.print_usd / { retry = 2;
00:01:02 v #66 > > total_gas_burnt_usd = +0.000808; total_gas_burnt = 1209326779756 }
00:01:02 v #67 > > │ 00:00:05 i #9 near_workspaces.print_usd / outcome / {
00:01:02 v #68 > > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206;
00:01:02 v #69 > > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
00:01:02 v #70 > > │ 00:00:05 i #10 near_workspaces.print_usd / outcome / {
00:01:02 v #71 > > is_success = true; gas_burnt_usd = +0.000602; tokens_burnt_usd = +0.000602;
00:01:02 v #72 > > gas_burnt = 901244920416; tokens_burnt = 90124492041600000000 }
00:01:02 v #73 > > │ 00:00:05 w #11 spiral_wasm.run / Error error ...n
00:01:02 v #74 > > Error error / { retry = 13; error = "{ receipt_outcomes_len = 1; retry = 13;
00:01:02 v #75 > > receipt_failures = [] }" }
00:01:02 v #76 > > │
00:01:02 v #77 > > │
00:01:02 v #78 > > │
00:01:02 v #79 > > │ 00:00:29 i #80 near_workspaces.print_usd / { retry =
00:01:02 v #80 > > 14; total_gas_burnt_usd = +0.000808; total_gas_burnt = 1209326779756 }
00:01:02 v #81 > > │ 00:00:29 i #81 near_workspaces.print_usd / outcome / {
00:01:02 v #82 > > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206;
00:01:02 v #83 > > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
00:01:02 v #84 > > │ 00:00:29 i #82 near_workspaces.print_usd / outcome / {
00:01:02 v #85 > > is_success = true; gas_burnt_usd = +0.000602; tokens_burnt_usd = +0.000602;
00:01:02 v #86 > > gas_burnt = 901244920416; tokens_burnt = 90124492041600000000 }
00:01:02 v #87 > > │ 00:00:29 w #83 spiral_wasm.run / Error error / { retry
00:01:02 v #88 > > = 14; error = "{ receipt_outcomes_len = 1; retry = 14; receipt_failures = [] }"
00:01:02 v #89 > > }
00:01:02 v #90 > > │
00:01:02 v #91 > > │
00:01:02 v #92 > > │
00:01:02 v #93 > > │ 00:00:31 i #86 near_workspaces.print_usd / { retry =
00:01:02 v #94 > > 15; total_gas_burnt_usd = +0.000808; total_gas_burnt = 1209326779756 }
00:01:02 v #95 > > │ 00:00:31 i #87 near_workspaces.print_usd / outcome / {
00:01:02 v #96 > > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206;
00:01:02 v #97 > > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
00:01:02 v #98 > > │ 00:00:31 i #88 near_workspaces.print_usd / outcome / {
00:01:02 v #99 > > is_success = true; gas_burnt_usd = +0.000602; tokens_burnt_usd = +0.000602;
00:01:02 v #100 > > gas_burnt = 901244920416; tokens_burnt = 90124492041600000000 }
00:01:02 v #101 > > │ 00:00:31 w #89 spiral_wasm.run / Error error / { retry
00:01:02 v #102 > > = 15; error = "{ receipt_outcomes_len = 1; retry = 15; receipt_failures = [] }"
00:01:02 v #103 > > }
00:01:02 v #104 > > │
00:01:02 v #105 > > │
00:01:02 v #106 > > │
00:01:02 v #107 > >
00:01:02 v #108 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:02 v #109 > > //// test
00:01:02 v #110 > > ///! rust -c
00:01:02 v #111 > >
00:01:02 v #112 > > trace Verbose (fun () => "") id
00:01:42 v #113 > >
00:01:42 v #114 > > ── [ 39.76s - return value ] ───────────────────────────────────────────────────
00:01:42 v #115 > > │
00:01:42 v #116 > > │ 00:00:02 i #2 near_workspaces.print_usd / { retry = 1;
00:01:42 v #117 > > total_gas_burnt_usd = +0.000885; total_gas_burnt = 1324628208595 }
00:01:42 v #118 > > │ 00:00:02 i #3 near_workspaces.print_usd / outcome / {
00:01:42 v #119 > > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206;
00:01:42 v #120 > > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
00:01:42 v #121 > > │ 00:00:02 i #4 near_workspaces.print_usd / outcome / {
00:01:42 v #122 > > is_success = true; gas_burnt_usd = +0.000679; tokens_burnt_usd = +0.000679;
00:01:42 v #123 > > gas_burnt = 1016546349255; tokens_burnt = 101654634925500000000 }
00:01:42 v #124 > > │ 00:00:02 w #5 spiral_wasm.run / Error error / { retry =
00:01:42 v #125 > > 1; error = "{ receipt_outcomes_len = 1; retry = 1; receipt_failures = [] }" }
00:01:42 v #126 > > │
00:01:42 v #127 > > │
00:01:42 v #128 > > │
00:01:42 v #129 > > │ 00:00:04 i #8 near_workspaces.print_usd / { retry = 2;
00:01:42 v #130 > > total_gas_burnt_usd = +0.000885; total_gas_burnt = 1324628208595 }
00:01:42 v #131 > > │ 00:00:04 i #9 near_workspaces.print_usd / outcome / {
00:01:42 v #132 > > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206;
00:01:42 v #133 > > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
00:01:42 v #134 > > │ 00:00:04 i #10 near_workspaces.print_usd / outcome / {
00:01:42 v #135 > > is_success = true; gas_burnt_usd = +0.000679; tokens_burnt_usd = +0.000679;
00:01:42 v #136 > > gas_burnt = 1016546349255; tokens_burnt = 101654634925500000000 }
00:01:42 v #137 > > │ 00:00:04 w #11 spiral_wasm.run / Error error / { retry
00:01:42 v #138 > > = 2; error = "{ receipt_outcomes_len = 1; retry = 2; receipt_failures = [] }" }
00:01:42 v #139 > > │
00:01:42 v #140 > > │
00:01:42 v #141 > > │
00:01:42 v #142 > > │ 00:00:06 i #14 near_workspaces.print_usd / { retry = 3;
00:01:42 v #143 > > total_gas_burnt_usd = +0.000885; total_gas_burnt ...Error error / { retry = 13;
00:01:42 v #144 > > error = "{ receipt_outcomes_len = 1; retry = 13; receipt_failures = [] }" }
00:01:42 v #145 > > │
00:01:42 v #146 > > │
00:01:42 v #147 > > │
00:01:42 v #148 > > │ 00:00:28 i #80 near_workspaces.print_usd / { retry =
00:01:42 v #149 > > 14; total_gas_burnt_usd = +0.000885; total_gas_burnt = 1324628208595 }
00:01:42 v #150 > > │ 00:00:28 i #81 near_workspaces.print_usd / outcome / {
00:01:42 v #151 > > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206;
00:01:42 v #152 > > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
00:01:42 v #153 > > │ 00:00:28 i #82 near_workspaces.print_usd / outcome / {
00:01:42 v #154 > > is_success = true; gas_burnt_usd = +0.000679; tokens_burnt_usd = +0.000679;
00:01:42 v #155 > > gas_burnt = 1016546349255; tokens_burnt = 101654634925500000000 }
00:01:42 v #156 > > │ 00:00:28 w #83 spiral_wasm.run / Error error / { retry
00:01:42 v #157 > > = 14; error = "{ receipt_outcomes_len = 1; retry = 14; receipt_failures = [] }"
00:01:42 v #158 > > }
00:01:42 v #159 > > │
00:01:42 v #160 > > │
00:01:42 v #161 > > │
00:01:42 v #162 > > │ 00:00:30 i #86 near_workspaces.print_usd / { retry =
00:01:42 v #163 > > 15; total_gas_burnt_usd = +0.000885; total_gas_burnt = 1324628208595 }
00:01:42 v #164 > > │ 00:00:30 i #87 near_workspaces.print_usd / outcome / {
00:01:42 v #165 > > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206;
00:01:42 v #166 > > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
00:01:42 v #167 > > │ 00:00:30 i #88 near_workspaces.print_usd / outcome / {
00:01:42 v #168 > > is_success = true; gas_burnt_usd = +0.000679; tokens_burnt_usd = +0.000679;
00:01:42 v #169 > > gas_burnt = 1016546349255; tokens_burnt = 101654634925500000000 }
00:01:42 v #170 > > │ 00:00:30 w #89 spiral_wasm.run / Error error / { retry
00:01:42 v #171 > > = 15; error = "{ receipt_outcomes_len = 1; retry = 15; receipt_failures = [] }"
00:01:42 v #172 > > }
00:01:42 v #173 > > │
00:01:42 v #174 > > │
00:01:42 v #175 > > │
00:01:42 v #176 > >
00:01:42 v #177 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:42 v #178 > > │ ### new
00:01:42 v #179 > >
00:01:42 v #180 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:42 v #181 > > inl new () : state =
00:01:42 v #182 > >     {
00:01:42 v #183 > >         version = 2
00:01:42 v #184 > >         account_set = "account_set" |> sm'.byte_slice |> near.new_iterable_set
00:01:42 v #185 > >         alias_set = "alias_set" |> sm'.byte_slice |> near.new_iterable_set
00:01:42 v #186 > >         account_map = "account_map" |> sm'.byte_slice |> near.new_lookup_map
00:01:42 v #187 > >         alias_map = "alias_map" |> sm'.byte_slice |> near.new_lookup_map
00:01:42 v #188 > >     }
00:01:42 v #189 > >
00:01:42 v #190 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:42 v #191 > > //// test
00:01:42 v #192 > > ///! rust -c
00:01:42 v #193 > >
00:01:42 v #194 > > inl state = new ()
00:01:42 v #195 > > trace Verbose (fun () => "chat_contract") fun () => { state = state |>
00:01:42 v #196 > > sm'.format_debug }
00:01:42 v #197 > > trace Verbose (fun () => "") id
00:02:22 v #198 > >
00:02:22 v #199 > > ── [ 40.52s - return value ] ───────────────────────────────────────────────────
00:02:22 v #200 > > │ 00:00:00 v #1 chat_contract / { state = (2, IterableSet
00:02:22 v #201 > > { elements: Vector { len: 0, prefix: [97, 99, 99, 111, 117, 110, 116, 95, 115,
00:02:22 v #202 > > 101, 116, 118] }, index: LookupMap { prefix: [97, 99, 99, 111, 117, 110, 116,
00:02:22 v #203 > > 95, 115, 101, 116, 109] } }, IterableSet { elements: Vector { len: 0, prefix:
00:02:22 v #204 > > [97, 108, 105, 97, 115, 95, 115, 101, 116, 118] }, index: LookupMap { prefix:
00:02:22 v #205 > > [97, 108, 105, 97, 115, 95, 115, 101, 116, 109] } }, LookupMap { prefix: [97,
00:02:22 v #206 > > 99, 99, 111, 117, 110, 116, 95, 109, 97, 112] }, LookupMap { prefix: [97, 108,
00:02:22 v #207 > > 105, 97, 115, 95, 109, 97, 112] }) }
00:02:22 v #208 > > │
00:02:22 v #209 > > │ 00:00:02 i #2 near_workspaces.print_usd / { retry = 1;
00:02:22 v #210 > > total_gas_burnt_usd = +0.001326; total_gas_burnt = 1984602906022 }
00:02:22 v #211 > > │ 00:00:02 i #3 near_workspaces.print_usd / outcome / {
00:02:22 v #212 > > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206;
00:02:22 v #213 > > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
00:02:22 v #214 > > │ 00:00:02 i #4 near_workspaces.print_usd / outcome / {
00:02:22 v #215 > > is_success = true; gas_burnt_usd = +0.001120; tokens_burnt_usd = +0.001120;
00:02:22 v #216 > > gas_burnt = 1676521046682; tokens_burnt = 167652104668200000000 }
00:02:22 v #217 > > │ 00:00:02 w #5 spiral_wasm.run / Error error / { retry =
00:02:22 v #218 > > 1; error = "{ receipt_outcomes_len = 1; retry = 1; receipt_failures = [] }" }
00:02:22 v #219 > > │
00:02:22 v #220 > > │
00:02:22 v #221 > > │ 00:00:00 v #1 chat_contract / { state = (2, IterableSet
00:02:22 v #222 > > { elements: Vector { len: 0, prefix: [97, 99, 99, 111, 117, 110, 116, 95, 115,
00:02:22 v #223 > > 101, 116, 118] }, index: LookupMap { prefix: [97, 99, 99, 111, 117, 110, 116,
00:02:22 v #224 > > 95, 115, 101,...d = +0.001120; gas_burnt = 1676521046682; tokens_burnt =
00:02:22 v #225 > > 167652104668200000000 }
00:02:22 v #226 > > │ 00:00:28 w #83 spiral_wasm.run / Error error / { retry
00:02:22 v #227 > > = 14; error = "{ receipt_outcomes_len = 1; retry = 14; receipt_failures = [] }"
00:02:22 v #228 > > }
00:02:22 v #229 > > │
00:02:22 v #230 > > │
00:02:22 v #231 > > │ 00:00:00 v #1 chat_contract / { state = (2, IterableSet
00:02:22 v #232 > > { elements: Vector { len: 0, prefix: [97, 99, 99, 111, 117, 110, 116, 95, 115,
00:02:22 v #233 > > 101, 116, 118] }, index: LookupMap { prefix: [97, 99, 99, 111, 117, 110, 116,
00:02:22 v #234 > > 95, 115, 101, 116, 109] } }, IterableSet { elements: Vector { len: 0, prefix:
00:02:22 v #235 > > [97, 108, 105, 97, 115, 95, 115, 101, 116, 118] }, index: LookupMap { prefix:
00:02:22 v #236 > > [97, 108, 105, 97, 115, 95, 115, 101, 116, 109] } }, LookupMap { prefix: [97,
00:02:22 v #237 > > 99, 99, 111, 117, 110, 116, 95, 109, 97, 112] }, LookupMap { prefix: [97, 108,
00:02:22 v #238 > > 105, 97, 115, 95, 109, 97, 112] }) }
00:02:22 v #239 > > │
00:02:22 v #240 > > │ 00:00:30 i #86 near_workspaces.print_usd / { retry =
00:02:22 v #241 > > 15; total_gas_burnt_usd = +0.001326; total_gas_burnt = 1984602906022 }
00:02:22 v #242 > > │ 00:00:30 i #87 near_workspaces.print_usd / outcome / {
00:02:22 v #243 > > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206;
00:02:22 v #244 > > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
00:02:22 v #245 > > │ 00:00:30 i #88 near_workspaces.print_usd / outcome / {
00:02:22 v #246 > > is_success = true; gas_burnt_usd = +0.001120; tokens_burnt_usd = +0.001120;
00:02:22 v #247 > > gas_burnt = 1676521046682; tokens_burnt = 167652104668200000000 }
00:02:22 v #248 > > │ 00:00:30 w #89 spiral_wasm.run / Error error / { retry
00:02:22 v #249 > > = 15; error = "{ receipt_outcomes_len = 1; retry = 15; receipt_failures = [] }"
00:02:22 v #250 > > }
00:02:22 v #251 > > │
00:02:22 v #252 > > │
00:02:22 v #253 > > │
00:02:22 v #254 > >
00:02:22 v #255 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:22 v #256 > > │ ### is_valid_alias
00:02:22 v #257 > >
00:02:22 v #258 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:22 v #259 > > inl is_valid_alias (alias : sm'.std_string) : bool =
00:02:22 v #260 > >     inl alias' = alias |> sm'.from_std_string
00:02:22 v #261 > >     inl alias_len = alias' |> sm'.length
00:02:22 v #262 > >
00:02:22 v #263 > >     alias_len > 0i32
00:02:22 v #264 > >         && alias_len < 64
00:02:22 v #265 > >         && (alias' |> sm'.starts_with "-" |> not)
00:02:22 v #266 > >         && (alias' |> sm'.ends_with "-" |> not)
00:02:22 v #267 > >         && (alias' |> sm'.as_str |> sm'.chars |> iter.all (fun c => (c |>
00:02:22 v #268 > > sm'.char_is_alphanumeric) || c = '-'))
00:02:23 v #269 > >
00:02:23 v #270 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:23 v #271 > > //// test
00:02:23 v #272 > > ///! rust -c
00:02:23 v #273 > >
00:02:23 v #274 > > ""
00:02:23 v #275 > > |> sm'.to_std_string
00:02:23 v #276 > > |> is_valid_alias
00:02:23 v #277 > > |> _assert_eq false
00:03:01 v #278 > >
00:03:01 v #279 > > ── [ 38.58s - return value ] ───────────────────────────────────────────────────
00:03:01 v #280 > > │
00:03:01 v #281 > > │ 00:00:02 i #2 near_workspaces.print_usd / { retry = 1;
00:03:01 v #282 > > total_gas_burnt_usd = +0.000822; total_gas_burnt = 1230893822073 }
00:03:01 v #283 > > │ 00:00:02 i #3 near_workspaces.print_usd / outcome / {
00:03:01 v #284 > > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206;
00:03:01 v #285 > > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
00:03:01 v #286 > > │ 00:00:02 i #4 near_workspaces.print_usd / outcome / {
00:03:01 v #287 > > is_success = true; gas_burnt_usd = +0.000616; tokens_burnt_usd = +0.000616;
00:03:01 v #288 > > gas_burnt = 922811962733; tokens_burnt = 92281196273300000000 }
00:03:01 v #289 > > │ 00:00:02 w #5 spiral_wasm.run / Error error / { retry =
00:03:01 v #290 > > 1; error = "{ receipt_outcomes_len = 1; retry = 1; receipt_failures = [] }" }
00:03:01 v #291 > > │
00:03:01 v #292 > > │
00:03:01 v #293 > > │
00:03:01 v #294 > > │ 00:00:04 i #8 near_workspaces.print_usd / { retry = 2;
00:03:01 v #295 > > total_gas_burnt_usd = +0.000822; total_gas_burnt = 1230893822073 }
00:03:01 v #296 > > │ 00:00:04 i #9 near_workspaces.print_usd / outcome / {
00:03:01 v #297 > > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206;
00:03:01 v #298 > > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
00:03:01 v #299 > > │ 00:00:04 i #10 near_workspaces.print_usd / outcome / {
00:03:01 v #300 > > is_success = true; gas_burnt_usd = +0.000616; tokens_burnt_usd = +0.000616;
00:03:01 v #301 > > gas_burnt = 922811962733; tokens_burnt = 92281196273300000000 }
00:03:01 v #302 > > │ 00:00:04 w #11 spiral_wasm.run / Error error / { retry
00:03:01 v #303 > > = 2; error = "{ receipt_outcomes_len = 1; retry = 2; receipt_failures = [] }" }
00:03:01 v #304 > > │
00:03:01 v #305 > > │
00:03:01 v #306 > > │
00:03:01 v #307 > > │ 00:00:06 i #14 near_workspaces.print_usd / { retry = 3;
00:03:01 v #308 > > total_gas_burnt_usd = +0.000822; total_gas_burnt = 12...n / Error error / {
00:03:01 v #309 > > retry = 13; error = "{ receipt_outcomes_len = 1; retry = 13; receipt_failures =
00:03:01 v #310 > > [] }" }
00:03:01 v #311 > > │
00:03:01 v #312 > > │
00:03:01 v #313 > > │
00:03:01 v #314 > > │ 00:00:28 i #80 near_workspaces.print_usd / { retry =
00:03:01 v #315 > > 14; total_gas_burnt_usd = +0.000822; total_gas_burnt = 1230893822073 }
00:03:01 v #316 > > │ 00:00:28 i #81 near_workspaces.print_usd / outcome / {
00:03:01 v #317 > > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206;
00:03:01 v #318 > > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
00:03:01 v #319 > > │ 00:00:28 i #82 near_workspaces.print_usd / outcome / {
00:03:01 v #320 > > is_success = true; gas_burnt_usd = +0.000616; tokens_burnt_usd = +0.000616;
00:03:01 v #321 > > gas_burnt = 922811962733; tokens_burnt = 92281196273300000000 }
00:03:01 v #322 > > │ 00:00:28 w #83 spiral_wasm.run / Error error / { retry
00:03:01 v #323 > > = 14; error = "{ receipt_outcomes_len = 1; retry = 14; receipt_failures = [] }"
00:03:01 v #324 > > }
00:03:01 v #325 > > │
00:03:01 v #326 > > │
00:03:01 v #327 > > │
00:03:01 v #328 > > │ 00:00:30 i #86 near_workspaces.print_usd / { retry =
00:03:01 v #329 > > 15; total_gas_burnt_usd = +0.000822; total_gas_burnt = 1230893822073 }
00:03:01 v #330 > > │ 00:00:30 i #87 near_workspaces.print_usd / outcome / {
00:03:01 v #331 > > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206;
00:03:01 v #332 > > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
00:03:01 v #333 > > │ 00:00:30 i #88 near_workspaces.print_usd / outcome / {
00:03:01 v #334 > > is_success = true; gas_burnt_usd = +0.000616; tokens_burnt_usd = +0.000616;
00:03:01 v #335 > > gas_burnt = 922811962733; tokens_burnt = 92281196273300000000 }
00:03:01 v #336 > > │ 00:00:30 w #89 spiral_wasm.run / Error error / { retry
00:03:01 v #337 > > = 15; error = "{ receipt_outcomes_len = 1; retry = 15; receipt_failures = [] }"
00:03:01 v #338 > > }
00:03:01 v #339 > > │
00:03:01 v #340 > > │
00:03:01 v #341 > > │
00:03:01 v #342 > >
00:03:01 v #343 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:01 v #344 > > //// test
00:03:01 v #345 > > ///! rust -c
00:03:01 v #346 > >
00:03:01 v #347 > > "a-"
00:03:01 v #348 > > |> sm'.to_std_string
00:03:01 v #349 > > |> is_valid_alias
00:03:01 v #350 > > |> _assert_eq false
00:03:40 v #351 > >
00:03:40 v #352 > > ── [ 38.49s - return value ] ───────────────────────────────────────────────────
00:03:40 v #353 > > │
00:03:40 v #354 > > │ 00:00:02 i #2 near_workspaces.print_usd / { retry = 1;
00:03:40 v #355 > > total_gas_burnt_usd = +0.000824; total_gas_burnt = 1232860139496 }
00:03:40 v #356 > > │ 00:00:02 i #3 near_workspaces.print_usd / outcome / {
00:03:40 v #357 > > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206;
00:03:40 v #358 > > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
00:03:40 v #359 > > │ 00:00:02 i #4 near_workspaces.print_usd / outcome / {
00:03:40 v #360 > > is_success = true; gas_burnt_usd = +0.000618; tokens_burnt_usd = +0.000618;
00:03:40 v #361 > > gas_burnt = 924778280156; tokens_burnt = 92477828015600000000 }
00:03:40 v #362 > > │ 00:00:02 w #5 spiral_wasm.run / Error error / { retry =
00:03:40 v #363 > > 1; error = "{ receipt_outcomes_len = 1; retry = 1; receipt_failures = [] }" }
00:03:40 v #364 > > │
00:03:40 v #365 > > │
00:03:40 v #366 > > │
00:03:40 v #367 > > │ 00:00:04 i #8 near_workspaces.print_usd / { retry = 2;
00:03:40 v #368 > > total_gas_burnt_usd = +0.000824; total_gas_burnt = 1232860139496 }
00:03:40 v #369 > > │ 00:00:04 i #9 near_workspaces.print_usd / outcome / {
00:03:40 v #370 > > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206;
00:03:40 v #371 > > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
00:03:40 v #372 > > │ 00:00:04 i #10 near_workspaces.print_usd / outcome / {
00:03:40 v #373 > > is_success = true; gas_burnt_usd = +0.000618; tokens_burnt_usd = +0.000618;
00:03:40 v #374 > > gas_burnt = 924778280156; tokens_burnt = 92477828015600000000 }
00:03:40 v #375 > > │ 00:00:04 w #11 spiral_wasm.run / Error error / { retry
00:03:40 v #376 > > = 2; error = "{ receipt_outcomes_len = 1; retry = 2; receipt_failures = [] }" }
00:03:40 v #377 > > │
00:03:40 v #378 > > │
00:03:40 v #379 > > │
00:03:40 v #380 > > │ 00:00:06 i #14 near_workspaces.print_usd / { retry = 3;
00:03:40 v #381 > > total_gas_burnt_usd = +0.000824; total_gas_burnt = 12...n / Error error / {
00:03:40 v #382 > > retry = 13; error = "{ receipt_outcomes_len = 1; retry = 13; receipt_failures =
00:03:40 v #383 > > [] }" }
00:03:40 v #384 > > │
00:03:40 v #385 > > │
00:03:40 v #386 > > │
00:03:40 v #387 > > │ 00:00:28 i #80 near_workspaces.print_usd / { retry =
00:03:40 v #388 > > 14; total_gas_burnt_usd = +0.000824; total_gas_burnt = 1232860139496 }
00:03:40 v #389 > > │ 00:00:28 i #81 near_workspaces.print_usd / outcome / {
00:03:40 v #390 > > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206;
00:03:40 v #391 > > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
00:03:40 v #392 > > │ 00:00:28 i #82 near_workspaces.print_usd / outcome / {
00:03:40 v #393 > > is_success = true; gas_burnt_usd = +0.000618; tokens_burnt_usd = +0.000618;
00:03:40 v #394 > > gas_burnt = 924778280156; tokens_burnt = 92477828015600000000 }
00:03:40 v #395 > > │ 00:00:28 w #83 spiral_wasm.run / Error error / { retry
00:03:40 v #396 > > = 14; error = "{ receipt_outcomes_len = 1; retry = 14; receipt_failures = [] }"
00:03:40 v #397 > > }
00:03:40 v #398 > > │
00:03:40 v #399 > > │
00:03:40 v #400 > > │
00:03:40 v #401 > > │ 00:00:30 i #86 near_workspaces.print_usd / { retry =
00:03:40 v #402 > > 15; total_gas_burnt_usd = +0.000824; total_gas_burnt = 1232860139496 }
00:03:40 v #403 > > │ 00:00:30 i #87 near_workspaces.print_usd / outcome / {
00:03:40 v #404 > > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206;
00:03:40 v #405 > > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
00:03:40 v #406 > > │ 00:00:30 i #88 near_workspaces.print_usd / outcome / {
00:03:40 v #407 > > is_success = true; gas_burnt_usd = +0.000618; tokens_burnt_usd = +0.000618;
00:03:40 v #408 > > gas_burnt = 924778280156; tokens_burnt = 92477828015600000000 }
00:03:40 v #409 > > │ 00:00:30 w #89 spiral_wasm.run / Error error / { retry
00:03:40 v #410 > > = 15; error = "{ receipt_outcomes_len = 1; retry = 15; receipt_failures = [] }"
00:03:40 v #411 > > }
00:03:40 v #412 > > │
00:03:40 v #413 > > │
00:03:40 v #414 > > │
00:03:40 v #415 > >
00:03:40 v #416 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:40 v #417 > > //// test
00:03:40 v #418 > > ///! rust -c
00:03:40 v #419 > >
00:03:40 v #420 > > "a-a"
00:03:40 v #421 > > |> sm'.to_std_string
00:03:40 v #422 > > |> is_valid_alias
00:03:40 v #423 > > |> _assert_eq true
00:04:18 v #424 > >
00:04:18 v #425 > > ── [ 38.37s - return value ] ───────────────────────────────────────────────────
00:04:18 v #426 > > │
00:04:18 v #427 > > │ 00:00:02 i #2 near_workspaces.print_usd / { retry = 1;
00:04:18 v #428 > > total_gas_burnt_usd = +0.000825; total_gas_burnt = 1234458256475 }
00:04:18 v #429 > > │ 00:00:02 i #3 near_workspaces.print_usd / outcome / {
00:04:18 v #430 > > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206;
00:04:18 v #431 > > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
00:04:18 v #432 > > │ 00:00:02 i #4 near_workspaces.print_usd / outcome / {
00:04:18 v #433 > > is_success = true; gas_burnt_usd = +0.000619; tokens_burnt_usd = +0.000619;
00:04:18 v #434 > > gas_burnt = 926376397135; tokens_burnt = 92637639713500000000 }
00:04:18 v #435 > > │ 00:00:02 w #5 spiral_wasm.run / Error error / { retry =
00:04:18 v #436 > > 1; error = "{ receipt_outcomes_len = 1; retry = 1; receipt_failures = [] }" }
00:04:18 v #437 > > │
00:04:18 v #438 > > │
00:04:18 v #439 > > │
00:04:18 v #440 > > │ 00:00:04 i #8 near_workspaces.print_usd / { retry = 2;
00:04:18 v #441 > > total_gas_burnt_usd = +0.000825; total_gas_burnt = 1234458256475 }
00:04:18 v #442 > > │ 00:00:04 i #9 near_workspaces.print_usd / outcome / {
00:04:18 v #443 > > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206;
00:04:18 v #444 > > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
00:04:18 v #445 > > │ 00:00:04 i #10 near_workspaces.print_usd / outcome / {
00:04:18 v #446 > > is_success = true; gas_burnt_usd = +0.000619; tokens_burnt_usd = +0.000619;
00:04:18 v #447 > > gas_burnt = 926376397135; tokens_burnt = 92637639713500000000 }
00:04:18 v #448 > > │ 00:00:04 w #11 spiral_wasm.run / Error error / { retry
00:04:18 v #449 > > = 2; error = "{ receipt_outcomes_len = 1; retry = 2; receipt_failures = [] }" }
00:04:18 v #450 > > │
00:04:18 v #451 > > │
00:04:18 v #452 > > │
00:04:18 v #453 > > │ 00:00:06 i #14 near_workspaces.print_usd / { retry = 3;
00:04:18 v #454 > > total_gas_burnt_usd = +0.000825; total_gas_burnt = 12...n / Error error / {
00:04:18 v #455 > > retry = 13; error = "{ receipt_outcomes_len = 1; retry = 13; receipt_failures =
00:04:18 v #456 > > [] }" }
00:04:18 v #457 > > │
00:04:18 v #458 > > │
00:04:18 v #459 > > │
00:04:18 v #460 > > │ 00:00:28 i #80 near_workspaces.print_usd / { retry =
00:04:18 v #461 > > 14; total_gas_burnt_usd = +0.000825; total_gas_burnt = 1234458256475 }
00:04:18 v #462 > > │ 00:00:28 i #81 near_workspaces.print_usd / outcome / {
00:04:18 v #463 > > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206;
00:04:18 v #464 > > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
00:04:18 v #465 > > │ 00:00:28 i #82 near_workspaces.print_usd / outcome / {
00:04:18 v #466 > > is_success = true; gas_burnt_usd = +0.000619; tokens_burnt_usd = +0.000619;
00:04:18 v #467 > > gas_burnt = 926376397135; tokens_burnt = 92637639713500000000 }
00:04:18 v #468 > > │ 00:00:28 w #83 spiral_wasm.run / Error error / { retry
00:04:18 v #469 > > = 14; error = "{ receipt_outcomes_len = 1; retry = 14; receipt_failures = [] }"
00:04:18 v #470 > > }
00:04:18 v #471 > > │
00:04:18 v #472 > > │
00:04:18 v #473 > > │
00:04:18 v #474 > > │ 00:00:30 i #86 near_workspaces.print_usd / { retry =
00:04:18 v #475 > > 15; total_gas_burnt_usd = +0.000825; total_gas_burnt = 1234458256475 }
00:04:18 v #476 > > │ 00:00:30 i #87 near_workspaces.print_usd / outcome / {
00:04:18 v #477 > > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206;
00:04:18 v #478 > > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
00:04:18 v #479 > > │ 00:00:30 i #88 near_workspaces.print_usd / outcome / {
00:04:18 v #480 > > is_success = true; gas_burnt_usd = +0.000619; tokens_burnt_usd = +0.000619;
00:04:18 v #481 > > gas_burnt = 926376397135; tokens_burnt = 92637639713500000000 }
00:04:18 v #482 > > │ 00:00:30 w #89 spiral_wasm.run / Error error / { retry
00:04:18 v #483 > > = 15; error = "{ receipt_outcomes_len = 1; retry = 15; receipt_failures = [] }"
00:04:18 v #484 > > }
00:04:18 v #485 > > │
00:04:18 v #486 > > │
00:04:18 v #487 > > │
00:04:18 v #488 > >
00:04:18 v #489 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:18 v #490 > > │ ### generate_cid
00:04:18 v #491 > >
00:04:18 v #492 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:18 v #493 > > inl generate_cid (content : am'.vec u8) : sm'.std_string =
00:04:18 v #494 > >     !\($'"  fn encode_u64(value: u64) -> Vec<u8> { //"') : ()
00:04:18 v #495 > >     !\($'"    let mut buffer = unsigned_varint::encode::u64_buffer(); //"') : ()
00:04:18 v #496 > >     !\($'"    unsigned_varint::encode::u64(value, &mut buffer).to_vec() //"') :
00:04:18 v #497 > > ()
00:04:18 v #498 > >     !\($'"  } //"') : ()
00:04:18 v #499 > >
00:04:18 v #500 > >     !\($'"  fn sha256_hash(content: &[[u8]]) -> Vec<u8> { //"') : ()
00:04:18 v #501 > >     !\($'"    let mut hasher: sha2::Sha256 = sha2::Digest::new(); //"') : ()
00:04:18 v #502 > >     !\($'"    sha2::Digest::update(&mut hasher, content); //"') : ()
00:04:18 v #503 > >     !\($'"    sha2::Digest::finalize(hasher).to_vec() //"') : ()
00:04:18 v #504 > >     !\($'"  } //"') : ()
00:04:18 v #505 > >
00:04:18 v #506 > >     !\($'"  let version: u8 = 1; //"') : ()
00:04:18 v #507 > >     !\($'"  let codec_raw: u64 = 0x55; //"') : ()
00:04:18 v #508 > >
00:04:18 v #509 > >     !\($'"  let codec_bytes = encode_u64(codec_raw); //"') : ()
00:04:18 v #510 > >     !\($'"  let hash_result = sha256_hash(&!content); //"') : ()
00:04:18 v #511 > >     !\($'"  let multihash = std::iter::once(0x12) //"') : ()
00:04:18 v #512 > >     !\($'"    .chain(std::iter::once(32)) //"') : ()
00:04:18 v #513 > >     !\($'"    .chain(hash_result.into_iter()) //"') : ()
00:04:18 v #514 > >     !\($'"    .collect(); //"') : ()
00:04:18 v #515 > >     !\($'"  let cid_bytes = [[vec\![[version]], codec_bytes,
00:04:18 v #516 > > multihash]].concat(); //"') : ()
00:04:18 v #517 > >     !\($'"  let result = multibase::encode(multibase::Base::Base32Lower,
00:04:18 v #518 > > &cid_bytes); //"') : ()
00:04:18 v #519 > >     !\($'"result"')
00:04:18 v #520 > >
00:04:18 v #521 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:18 v #522 > > //// test
00:04:18 v #523 > > ///! rust -c -d multibase sha2 unsigned-varint
00:04:18 v #524 > >
00:04:18 v #525 > > ;[[]]
00:04:18 v #526 > > |> am'.to_vec
00:04:18 v #527 > > |> generate_cid
00:04:18 v #528 > > |> sm'.from_std_string
00:04:18 v #529 > > |> _assert_eq "bafkreihdwdcefgh4dqkjv67uzcmw7ojee6xedzdetojuzjevtenxquvyku"
00:04:59 v #530 > >
00:04:59 v #531 > > ── [ 40.50s - return value ] ───────────────────────────────────────────────────
00:04:59 v #532 > > │
00:04:59 v #533 > > │ 00:00:02 i #2 near_workspaces.print_usd / { retry = 1;
00:04:59 v #534 > > total_gas_burnt_usd = +0.000876; total_gas_burnt = 1311896780117 }
00:04:59 v #535 > > │ 00:00:02 i #3 near_workspaces.print_usd / outcome / {
00:04:59 v #536 > > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206;
00:04:59 v #537 > > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
00:04:59 v #538 > > │ 00:00:02 i #4 near_workspaces.print_usd / outcome / {
00:04:59 v #539 > > is_success = true; gas_burnt_usd = +0.000671; tokens_burnt_usd = +0.000671;
00:04:59 v #540 > > gas_burnt = 1003814920777; tokens_burnt = 100381492077700000000 }
00:04:59 v #541 > > │ 00:00:02 w #5 spiral_wasm.run / Error error / { retry =
00:04:59 v #542 > > 1; error = "{ receipt_outcomes_len = 1; retry = 1; receipt_failures = [] }" }
00:04:59 v #543 > > │
00:04:59 v #544 > > │
00:04:59 v #545 > > │
00:04:59 v #546 > > │ 00:00:04 i #8 near_workspaces.print_usd / { retry = 2;
00:04:59 v #547 > > total_gas_burnt_usd = +0.000876; total_gas_burnt = 1311896780117 }
00:04:59 v #548 > > │ 00:00:04 i #9 near_workspaces.print_usd / outcome / {
00:04:59 v #549 > > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206;
00:04:59 v #550 > > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
00:04:59 v #551 > > │ 00:00:04 i #10 near_workspaces.print_usd / outcome / {
00:04:59 v #552 > > is_success = true; gas_burnt_usd = +0.000671; tokens_burnt_usd = +0.000671;
00:04:59 v #553 > > gas_burnt = 1003814920777; tokens_burnt = 100381492077700000000 }
00:04:59 v #554 > > │ 00:00:04 w #11 spiral_wasm.run / Error error / { retry
00:04:59 v #555 > > = 2; error = "{ receipt_outcomes_len = 1; retry = 2; receipt_failures = [] }" }
00:04:59 v #556 > > │
00:04:59 v #557 > > │
00:04:59 v #558 > > │
00:04:59 v #559 > > │ 00:00:06 i #14 near_workspaces.print_usd / { retry = 3;
00:04:59 v #560 > > total_gas_burnt_usd = +0.000876; total_gas_burnt ...Error error / { retry = 13;
00:04:59 v #561 > > error = "{ receipt_outcomes_len = 1; retry = 13; receipt_failures = [] }" }
00:04:59 v #562 > > │
00:04:59 v #563 > > │
00:04:59 v #564 > > │
00:04:59 v #565 > > │ 00:00:28 i #80 near_workspaces.print_usd / { retry =
00:04:59 v #566 > > 14; total_gas_burnt_usd = +0.000876; total_gas_burnt = 1311896780117 }
00:04:59 v #567 > > │ 00:00:28 i #81 near_workspaces.print_usd / outcome / {
00:04:59 v #568 > > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206;
00:04:59 v #569 > > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
00:04:59 v #570 > > │ 00:00:28 i #82 near_workspaces.print_usd / outcome / {
00:04:59 v #571 > > is_success = true; gas_burnt_usd = +0.000671; tokens_burnt_usd = +0.000671;
00:04:59 v #572 > > gas_burnt = 1003814920777; tokens_burnt = 100381492077700000000 }
00:04:59 v #573 > > │ 00:00:28 w #83 spiral_wasm.run / Error error / { retry
00:04:59 v #574 > > = 14; error = "{ receipt_outcomes_len = 1; retry = 14; receipt_failures = [] }"
00:04:59 v #575 > > }
00:04:59 v #576 > > │
00:04:59 v #577 > > │
00:04:59 v #578 > > │
00:04:59 v #579 > > │ 00:00:30 i #86 near_workspaces.print_usd / { retry =
00:04:59 v #580 > > 15; total_gas_burnt_usd = +0.000876; total_gas_burnt = 1311896780117 }
00:04:59 v #581 > > │ 00:00:30 i #87 near_workspaces.print_usd / outcome / {
00:04:59 v #582 > > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206;
00:04:59 v #583 > > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
00:04:59 v #584 > > │ 00:00:30 i #88 near_workspaces.print_usd / outcome / {
00:04:59 v #585 > > is_success = true; gas_burnt_usd = +0.000671; tokens_burnt_usd = +0.000671;
00:04:59 v #586 > > gas_burnt = 1003814920777; tokens_burnt = 100381492077700000000 }
00:04:59 v #587 > > │ 00:00:30 w #89 spiral_wasm.run / Error error / { retry
00:04:59 v #588 > > = 15; error = "{ receipt_outcomes_len = 1; retry = 15; receipt_failures = [] }"
00:04:59 v #589 > > }
00:04:59 v #590 > > │
00:04:59 v #591 > > │
00:04:59 v #592 > > │
00:04:59 v #593 > >
00:04:59 v #594 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:59 v #595 > > │ ### claim_alias
00:04:59 v #596 > >
00:04:59 v #597 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:59 v #598 > > inl claim_alias (state : rust.ref (rust.mut' state)) (alias : sm'.std_string) :
00:04:59 v #599 > > () =
00:04:59 v #600 > >     inl account_set : rust.ref (rust.mut' (near.iterable_set near.account_id)) =
00:04:59 v #601 > >         !\($'$"&mut !state.1"')
00:04:59 v #602 > >
00:04:59 v #603 > >     inl alias_set : rust.ref (rust.mut' (near.iterable_set sm'.std_string)) =
00:04:59 v #604 > >         !\($'$"&mut !state.2"')
00:04:59 v #605 > >
00:04:59 v #606 > >     inl account_map : rust.ref (rust.mut' (near.lookup_map near.account_id
00:04:59 v #607 > > sm'.std_string)) =
00:04:59 v #608 > >         !\($'$"&mut !state.3"')
00:04:59 v #609 > >
00:04:59 v #610 > >     inl alias_map : rust.ref (rust.mut' (near.lookup_map sm'.std_string
00:04:59 v #611 > > (mapm.hash_map near.account_id (u64 * u32)))) =
00:04:59 v #612 > >         !\($'$"&mut !state.4"')
00:04:59 v #613 > >
00:04:59 v #614 > >     inl signer_account_id = near.signer_account_id ()
00:04:59 v #615 > >     inl predecessor_account_id = near.predecessor_account_id ()
00:04:59 v #616 > >     inl block_timestamp = near.block_timestamp ()
00:04:59 v #617 > >
00:04:59 v #618 > >     trace Debug
00:04:59 v #619 > >         fun () => "chat_contract.claim_alias"
00:04:59 v #620 > >         fun () => {
00:04:59 v #621 > >             alias
00:04:59 v #622 > >             block_timestamp
00:04:59 v #623 > >             signer_account_id = signer_account_id |> sm'.to_string'
00:04:59 v #624 > >             predecessor_account_id = predecessor_account_id |> sm'.to_string'
00:04:59 v #625 > >         }
00:04:59 v #626 > >
00:04:59 v #627 > >     if alias |> is_valid_alias |> not
00:04:59 v #628 > >     then near.panic_str "chat_contract.claim_alias / invalid alias" . true
00:04:59 v #629 > >     else false
00:04:59 v #630 > >     |> ignore
00:04:59 v #631 > >
00:04:59 v #632 > >     inl account_alias =
00:04:59 v #633 > >         account_map
00:04:59 v #634 > >         |> near.lookup_get signer_account_id
00:04:59 v #635 > >         |> optionm'.cloned
00:04:59 v #636 > >
00:04:59 v #637 > >     match account_alias |> optionm'.unbox with
00:04:59 v #638 > >     | Some account_alias when account_alias =. alias =>
00:04:59 v #639 > >         trace Warning
00:04:59 v #640 > >             fun () => "chat_contract.claim_alias / alias already claimed"
00:04:59 v #641 > >             fun () => { account_alias = account_alias |> sm'.format_debug }
00:04:59 v #642 > >     | account_alias' =>
00:04:59 v #643 > >         trace Debug
00:04:59 v #644 > >             fun () => "chat_contract.claim_alias"
00:04:59 v #645 > >             fun () => { account_alias = account_alias |> sm'.format_debug }
00:04:59 v #646 > >
00:04:59 v #647 > >         match account_alias' with
00:04:59 v #648 > >         | Some account_alias =>
00:04:59 v #649 > >             !\($'"    !alias_map //"') : ()
00:04:59 v #650 > >             !\($'"      .get_mut(&!account_alias) //"') : ()
00:04:59 v #651 > >             !\($'"      .unwrap() //"') : ()
00:04:59 v #652 > >             !\\(signer_account_id, $'"      .remove(&$0); //"') : ()
00:04:59 v #653 > >         | None => ()
00:04:59 v #654 > >
00:04:59 v #655 > >         !\\((signer_account_id, alias), $'"  !account_map.insert($0.clone(),
00:04:59 v #656 > > $1.clone()); //"') : ()
00:04:59 v #657 > >
00:04:59 v #658 > >         account_set |> near.iterable_set_insert signer_account_id |> ignore
00:04:59 v #659 > >         alias_set |> near.iterable_set_insert alias |> ignore
00:04:59 v #660 > >
00:04:59 v #661 > >         !\\(alias, $'"  let new_alias_account_map = match !alias_map.get(&$0) {
00:04:59 v #662 > > //"') : ()
00:04:59 v #663 > >         !\($'"    None => { //"') : ()
00:04:59 v #664 > >         !\($'"      let mut new_map = std::collections::HashMap::new(); //"') :
00:04:59 v #665 > > ()
00:04:59 v #666 > >         !\\((signer_account_id, block_timestamp), $'"      new_map.insert($0,
00:04:59 v #667 > > ($1, 0u32)); //"') : ()
00:04:59 v #668 > >         !\($'"      new_map //"') : ()
00:04:59 v #669 > >         !\($'"    } //"') : ()
00:04:59 v #670 > >         !\($'"    Some(accounts) => { //"') : ()
00:04:59 v #671 > >         !\($'"      let mut accounts_vec = accounts.iter().collect::<Vec<_>>();
00:04:59 v #672 > > //"') : ()
00:04:59 v #673 > >         !\($'"      accounts_vec.sort_unstable_by_key(|(_, (_, index))| index);
00:04:59 v #674 > > //"') : ()
00:04:59 v #675 > >         !\($'"      let mut new_map = accounts_vec //"') : ()
00:04:59 v #676 > >         !\($'"        .iter() //"') : ()
00:04:59 v #677 > >         !\($'"        .enumerate() //"') : ()
00:04:59 v #678 > >         !\($'"        .map(|(i, (signer_account_id, (timestamp, _)))| { //"') :
00:04:59 v #679 > > ()
00:04:59 v #680 > >         !\($'"          ((*signer_account_id).clone(), (*timestamp, i as u32))
00:04:59 v #681 > > //"') : ()
00:04:59 v #682 > >         !\($'"        }) //"') : ()
00:04:59 v #683 > >         !\($'"        .collect::<std::collections::HashMap<_, _>>(); //"') : ()
00:04:59 v #684 > >         !\\(signer_account_id, $'"      new_map.insert($0, (!block_timestamp,
00:04:59 v #685 > > accounts_vec.len() as u32)); //"') : ()
00:04:59 v #686 > >         !\($'"      new_map //"') : ()
00:04:59 v #687 > >         !\($'"    } //"') : ()
00:04:59 v #688 > >         !\($'"  }; //"') : ()
00:04:59 v #689 > >
00:04:59 v #690 > >         !\\(alias, $'"  !alias_map.insert($0, new_alias_account_map); //"') : ()
00:04:59 v #691 > >
00:04:59 v #692 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:59 v #693 > > //// test
00:04:59 v #694 > > ///! rust -c
00:04:59 v #695 > >
00:04:59 v #696 > > inl state = new ()
00:04:59 v #697 > > inl version = state.version
00:04:59 v #698 > > inl account_set = state.account_set
00:04:59 v #699 > > inl alias_set = state.alias_set
00:04:59 v #700 > > inl account_map = state.account_map
00:04:59 v #701 > > inl alias_map = state.alias_map
00:04:59 v #702 > > inl version = join version
00:04:59 v #703 > > inl account_set = join account_set
00:04:59 v #704 > > inl alias_set = join alias_set
00:04:59 v #705 > > inl account_map = join account_map
00:04:59 v #706 > > inl alias_map = join alias_map
00:04:59 v #707 > > inl state : rust.ref (rust.mut' state) =
00:04:59 v #708 > >     !\\(
00:04:59 v #709 > >         version,
00:04:59 v #710 > >         $'$"&mut ($0, !account_set, !alias_set, !account_map, !alias_map)"'
00:04:59 v #711 > >     )
00:04:59 v #712 > >
00:04:59 v #713 > > "alias1"
00:04:59 v #714 > > |> sm'.to_std_string
00:04:59 v #715 > > |> claim_alias state
00:04:59 v #716 > >
00:04:59 v #717 > > trace Verbose
00:04:59 v #718 > >     fun () => "chat_contract"
00:04:59 v #719 > >     fun () => { state = state |> sm'.format_debug }
00:04:59 v #720 > >
00:04:59 v #721 > > trace Debug (fun () => "") id
00:05:40 v #722 > >
00:05:40 v #723 > > ── [ 41.45s - return value ] ───────────────────────────────────────────────────
00:05:40 v #724 > > │ 00:00:00 d #1 chat_contract.claim_alias / { alias =
00:05:40 v #725 > > "alias1"; block_timestamp = 1736808156477304668; signer_account_id =
00:05:40 v #726 > > "dev-20250113224235-73562106161573"; predecessor_account_id =
00:05:40 v #727 > > "dev-20250113224235-73562106161573" }
00:05:40 v #728 > > │ 00:00:00 d #2 chat_contract.claim_alias / {
00:05:40 v #729 > > account_alias = None }
00:05:40 v #730 > > │ 00:00:00 v #3 chat_contract / { state = (2, IterableSet
00:05:40 v #731 > > { elements: Vector { len: 1, prefix: [97, 99, 99, 111, 117, 110, 116, 95, 115,
00:05:40 v #732 > > 101, 116, 118] }, index: LookupMap { prefix: [97, 99, 99, 111, 117, 110, 116,
00:05:40 v #733 > > 95, 115, 101, 116, 109] } }, IterableSet { elements: Vector { len: 1, prefix:
00:05:40 v #734 > > [97, 108, 105, 97, 115, 95, 115, 101, 116, 118] }, index: LookupMap { prefix:
00:05:40 v #735 > > [97, 108, 105, 97, 115, 95, 115, 101, 116, 109] } }, LookupMap { prefix: [97,
00:05:40 v #736 > > 99, 99, 111, 117, 110, 116, 95, 109, 97, 112] }, LookupMap { prefix: [97, 108,
00:05:40 v #737 > > 105, 97, 115, 95, 109, 97, 112] }) }
00:05:40 v #738 > > │
00:05:40 v #739 > > │ 00:00:02 i #2 near_workspaces.print_usd / { retry = 1;
00:05:40 v #740 > > total_gas_burnt_usd = +0.002571; total_gas_burnt = 3849353054976 }
00:05:40 v #741 > > │ 00:00:02 i #3 near_workspaces.print_usd / outcome / {
00:05:40 v #742 > > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206;
00:05:40 v #743 > > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
00:05:40 v #744 > > │ 00:00:02 i #4 near_workspaces.print_usd / outcome / {
00:05:40 v #745 > > is_success = true; gas_burnt_usd = +0.002366; tokens_burnt_usd = +0.002366;
00:05:40 v #746 > > gas_burnt = 3541271195636; tokens_burnt = 354127119563600000000 }
00:05:40 v #747 > > │ 00:00:02 w #5 spiral_wasm.run / Error error / { retry =
00:05:40 v #748 > > 1; error...timestamp = 1736808184961569092; signer_account_id =
00:05:40 v #749 > > "dev-20250113224304-36994169758120"; predecessor_account_id =
00:05:40 v #750 > > "dev-20250113224304-36994169758120" }
00:05:40 v #751 > > │ 00:00:00 d #2 chat_contract.claim_alias / {
00:05:40 v #752 > > account_alias = None }
00:05:40 v #753 > > │ 00:00:00 v #3 chat_contract / { state = (2, IterableSet
00:05:40 v #754 > > { elements: Vector { len: 1, prefix: [97, 99, 99, 111, 117, 110, 116, 95, 115,
00:05:40 v #755 > > 101, 116, 118] }, index: LookupMap { prefix: [97, 99, 99, 111, 117, 110, 116,
00:05:40 v #756 > > 95, 115, 101, 116, 109] } }, IterableSet { elements: Vector { len: 1, prefix:
00:05:40 v #757 > > [97, 108, 105, 97, 115, 95, 115, 101, 116, 118] }, index: LookupMap { prefix:
00:05:40 v #758 > > [97, 108, 105, 97, 115, 95, 115, 101, 116, 109] } }, LookupMap { prefix: [97,
00:05:40 v #759 > > 99, 99, 111, 117, 110, 116, 95, 109, 97, 112] }, LookupMap { prefix: [97, 108,
00:05:40 v #760 > > 105, 97, 115, 95, 109, 97, 112] }) }
00:05:40 v #761 > > │
00:05:40 v #762 > > │ 00:00:30 i #86 near_workspaces.print_usd / { retry =
00:05:40 v #763 > > 15; total_gas_burnt_usd = +0.002571; total_gas_burnt = 3849353054976 }
00:05:40 v #764 > > │ 00:00:30 i #87 near_workspaces.print_usd / outcome / {
00:05:40 v #765 > > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206;
00:05:40 v #766 > > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
00:05:40 v #767 > > │ 00:00:30 i #88 near_workspaces.print_usd / outcome / {
00:05:40 v #768 > > is_success = true; gas_burnt_usd = +0.002366; tokens_burnt_usd = +0.002366;
00:05:40 v #769 > > gas_burnt = 3541271195636; tokens_burnt = 354127119563600000000 }
00:05:40 v #770 > > │ 00:00:30 w #89 spiral_wasm.run / Error error / { retry
00:05:40 v #771 > > = 15; error = "{ receipt_outcomes_len = 1; retry = 15; receipt_failures = [] }"
00:05:40 v #772 > > }
00:05:40 v #773 > > │
00:05:40 v #774 > > │
00:05:40 v #775 > > │
00:05:40 v #776 > >
00:05:40 v #777 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:40 v #778 > > //// test
00:05:40 v #779 > > ///! rust \"-c=-e=\\\"chat_contract.claim_alias / invalid alias\\\"\"
00:05:40 v #780 > >
00:05:40 v #781 > > ""
00:05:40 v #782 > > |> sm'.to_std_string
00:05:40 v #783 > > |> claim_alias (
00:05:40 v #784 > >     inl state = new ()
00:05:40 v #785 > >     inl version = state.version
00:05:40 v #786 > >     inl account_set = state.account_set
00:05:40 v #787 > >     inl alias_set = state.alias_set
00:05:40 v #788 > >     inl account_map = state.account_map
00:05:40 v #789 > >     inl alias_map = state.alias_map
00:05:40 v #790 > >     !\\(version, $'$"&mut ($0, !account_set, !alias_set, !account_map,
00:05:40 v #791 > > !alias_map)"')
00:05:40 v #792 > > )
00:05:40 v #793 > > trace Debug (fun () => "") id
00:05:53 v #794 > >
00:05:53 v #795 > > ── [ 13.00s - return value ] ───────────────────────────────────────────────────
00:05:53 v #796 > > │
00:05:53 v #797 > > │ 00:00:02 i #2 near_workspaces.print_usd / { retry = 1;
00:05:53 v #798 > > total_gas_burnt_usd = +0.001159; total_gas_burnt = 1735018704150 }
00:05:53 v #799 > > │ 00:00:02 i #3 near_workspaces.print_usd / outcome / {
00:05:53 v #800 > > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206;
00:05:53 v #801 > > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
00:05:53 v #802 > > │ 00:00:02 i #4 near_workspaces.print_usd / outcome / {
00:05:53 v #803 > > is_success = false; gas_burnt_usd = +0.000953; tokens_burnt_usd = +0.000953;
00:05:53 v #804 > > gas_burnt = 1426936844810; tokens_burnt = 142693684481000000000 }
00:05:53 v #805 > > │ 00:00:02 c #5 spiral_wasm.run / Ok (Some error) / {
00:05:53 v #806 > > retry = 1; error = { receipt_outcomes_len = 1; retry = 1; receipt_failures = [
00:05:53 v #807 > > │     ExecutionOutcome {
00:05:53 v #808 > > │         transaction_hash:
00:05:53 v #809 > > BN85Kef12Jzmpy4637Sogt4xJVUat5YLacLRpeYnNXx,
00:05:53 v #810 > > │         block_hash:
00:05:53 v #811 > > 81zTMiF64gYq85pQ5uX9tzVzXgciq9GjRJENCqiZY6od,
00:05:53 v #812 > > │         logs: [],
00:05:53 v #813 > > │         receipt_ids: [
00:05:53 v #814 > > │             8mvG668PoPWZfm8qZg693j8Fx27gFeSzsrtrfckFbyCV,
00:05:53 v #815 > > │         ],
00:05:53 v #816 > > │         gas_burnt: NearGas {
00:05:53 v #817 > > │             inner: 1426936844810,
00:05:53 v #818 > > │         },
00:05:53 v #819 > > │         tokens_burnt: NearToken {
00:05:53 v #820 > > │             inner: 142693684481000000000,
00:05:53 v #821 > > │         },
00:05:53 v #822 > > │         executor_id: AccountId(
00:05:53 v #823 > > │             "dev-20250113224317-55964255535868",
00:05:53 v #824 > > │         ),
00:05:53 v #825 > > │         status: Failure(ActionError(ActionError { index:
00:05:53 v #826 > > Some(0), kind: FunctionCallError(ExecutionError("Smart contract panicked:
00:05:53 v #827 > > chat_contract.claim_alias / invalid alias")) })),
00:05:53 v #828 > > │     },
00:05:53 v #829 > > │ ] } }
00:05:53 v #830 > > │
00:05:53 v #831 > >
00:05:53 v #832 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:53 v #833 > > //// test
00:05:53 v #834 > > ///! rust -cd borsh
00:05:53 v #835 > >
00:05:53 v #836 > > inl state' = new ()
00:05:53 v #837 > > inl state = state'
00:05:53 v #838 > > inl version = state.version
00:05:53 v #839 > > inl account_set = state.account_set
00:05:53 v #840 > > inl alias_set = state.alias_set
00:05:53 v #841 > > inl account_map = state.account_map
00:05:53 v #842 > > inl alias_map = state.alias_map
00:05:53 v #843 > > inl version = join version
00:05:53 v #844 > > inl account_set = join account_set
00:05:53 v #845 > > inl alias_set = join alias_set
00:05:53 v #846 > > inl account_map = join account_map
00:05:53 v #847 > > inl alias_map = join alias_map
00:05:53 v #848 > >
00:05:53 v #849 > > inl state =
00:05:53 v #850 > >     !\\(
00:05:53 v #851 > >         (version, account_set, alias_set),
00:05:53 v #852 > >         $'$"&mut ($0, $1, $2, !account_map, !alias_map)"'
00:05:53 v #853 > >     )
00:05:53 v #854 > >
00:05:53 v #855 > > "alias1"
00:05:53 v #856 > > |> sm'.to_std_string
00:05:53 v #857 > > |> claim_alias state
00:05:53 v #858 > >
00:05:53 v #859 > > "alias1"
00:05:53 v #860 > > |> sm'.to_std_string
00:05:53 v #861 > > |> claim_alias state
00:05:53 v #862 > >
00:05:53 v #863 > > "alias1"
00:05:53 v #864 > > |> sm'.to_std_string
00:05:53 v #865 > > |> claim_alias state
00:05:53 v #866 > >
00:05:53 v #867 > > inl account_set' : rust.ref (near.iterable_set near.account_id) =
00:05:53 v #868 > >     !\($'$"&!state.1"')
00:05:53 v #869 > >
00:05:53 v #870 > > inl alias_set' : rust.ref (near.iterable_set sm'.std_string) =
00:05:53 v #871 > >     !\($'$"&!state.2"')
00:05:53 v #872 > >
00:05:53 v #873 > > inl account_set' =
00:05:53 v #874 > >     account_set'
00:05:53 v #875 > >     |> iter.iter_ref''
00:05:53 v #876 > >     |> iter.cloned
00:05:53 v #877 > >     |> iter_collect
00:05:53 v #878 > >
00:05:53 v #879 > > inl alias_set' =
00:05:53 v #880 > >     alias_set'
00:05:53 v #881 > >     |> iter.iter_ref''
00:05:53 v #882 > >     |> iter.cloned
00:05:53 v #883 > >     |> iter_collect
00:05:53 v #884 > >     |> am'.vec_map sm'.from_std_string
00:05:53 v #885 > >
00:05:53 v #886 > > trace Verbose
00:05:53 v #887 > >     fun () => "chat_contract"
00:05:53 v #888 > >     fun () => {
00:05:53 v #889 > >         account_set' = account_set' |> sm'.format_debug
00:05:53 v #890 > >         alias_set' = alias_set' |> sm'.format_debug
00:05:53 v #891 > >         state = state |> sm'.format_debug
00:05:53 v #892 > >     }
00:05:53 v #893 > >
00:05:53 v #894 > > trace Debug (fun () => "") id
00:05:53 v #895 > >
00:05:53 v #896 > > account_set'
00:05:53 v #897 > > |> am'.vec_len
00:05:53 v #898 > > |> convert
00:05:53 v #899 > > |> _assert_eq 1u32
00:05:53 v #900 > >
00:05:53 v #901 > > alias_set'
00:05:53 v #902 > > |> am'.from_vec_base
00:05:53 v #903 > > |> _assert_eq' ;[[ "alias1" ]]
00:06:36 v #904 > >
00:06:36 v #905 > > ── [ 42.37s - return value ] ───────────────────────────────────────────────────
00:06:36 v #906 > > │ 00:00:00 d #1 chat_contract.claim_alias / { alias =
00:06:36 v #907 > > "alias1"; block_timestamp = 1736808211864600438; signer_account_id =
00:06:36 v #908 > > "dev-20250113224331-85460436760992"; predecessor_account_id =
00:06:36 v #909 > > "dev-20250113224331-85460436760992" }
00:06:36 v #910 > > │ 00:00:00 d #2 chat_contract.claim_alias / {
00:06:36 v #911 > > account_alias = None }
00:06:36 v #912 > > │ 00:00:00 d #3 chat_contract.claim_alias / { alias =
00:06:36 v #913 > > "alias1"; block_timestamp = 1736808211864600438; signer_account_id =
00:06:36 v #914 > > "dev-20250113224331-85460436760992"; predecessor_account_id =
00:06:36 v #915 > > "dev-20250113224331-85460436760992" }
00:06:36 v #916 > > │ 00:00:00 d #4 chat_contract.claim_alias / {
00:06:36 v #917 > > account_alias = Some("alias1") }
00:06:36 v #918 > > │ 00:00:00 d #5 chat_contract.claim_alias / { alias =
00:06:36 v #919 > > "alias1"; block_timestamp = 1736808211864600438; signer_account_id =
00:06:36 v #920 > > "dev-20250113224331-85460436760992"; predecessor_account_id =
00:06:36 v #921 > > "dev-20250113224331-85460436760992" }
00:06:36 v #922 > > │ 00:00:00 d #6 chat_contract.claim_alias / {
00:06:36 v #923 > > account_alias = Some("alias1") }
00:06:36 v #924 > > │ 00:00:00 v #7 chat_contract / { account_set' =
00:06:36 v #925 > > [AccountId("dev-20250113224331-85460436760992")]; alias_set' = ["alias1"]; state
00:06:36 v #926 > > = (2, IterableSet { elements: Vector { len: 1, prefix: [97, 99, 99, 111, 117,
00:06:36 v #927 > > 110, 116, 95, 115, 101, 116, 118] }, index: LookupMap { prefix: [97, 99, 99,
00:06:36 v #928 > > 111, 117, 110, 116, 95, 115, 101, 116, 109] } }, IterableSet { elements: Vector
00:06:36 v #929 > > { len: 1, prefix: [97, 108, 105, 97, 115, 95, 115, 101, 116, 118] }, index:
00:06:36 v #930 > > LookupMap { prefix: [97, 108, 105, 97, 115, 95, 115, 101, 116, 109] } },
00:06:36 v #931 > > LookupMap { prefix: [97, 99, 99, ...r_account_id =
00:06:36 v #932 > > "dev-20250113224359-65348817317122" }
00:06:36 v #933 > > │ 00:00:00 d #6 chat_contract.claim_alias / {
00:06:36 v #934 > > account_alias = Some("alias1") }
00:06:36 v #935 > > │ 00:00:00 v #7 chat_contract / { account_set' =
00:06:36 v #936 > > [AccountId("dev-20250113224359-65348817317122")]; alias_set' = ["alias1"]; state
00:06:36 v #937 > > = (2, IterableSet { elements: Vector { len: 1, prefix: [97, 99, 99, 111, 117,
00:06:36 v #938 > > 110, 116, 95, 115, 101, 116, 118] }, index: LookupMap { prefix: [97, 99, 99,
00:06:36 v #939 > > 111, 117, 110, 116, 95, 115, 101, 116, 109] } }, IterableSet { elements: Vector
00:06:36 v #940 > > { len: 1, prefix: [97, 108, 105, 97, 115, 95, 115, 101, 116, 118] }, index:
00:06:36 v #941 > > LookupMap { prefix: [97, 108, 105, 97, 115, 95, 115, 101, 116, 109] } },
00:06:36 v #942 > > LookupMap { prefix: [97, 99, 99, 111, 117, 110, 116, 95, 109, 97, 112] },
00:06:36 v #943 > > LookupMap { prefix: [97, 108, 105, 97, 115, 95, 109, 97, 112] }) }
00:06:36 v #944 > > │
00:06:36 v #945 > > │ 00:00:30 i #86 near_workspaces.print_usd / { retry =
00:06:36 v #946 > > 15; total_gas_burnt_usd = +0.004515; total_gas_burnt = 6758361564674 }
00:06:36 v #947 > > │ 00:00:30 i #87 near_workspaces.print_usd / outcome / {
00:06:36 v #948 > > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206;
00:06:36 v #949 > > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 }
00:06:36 v #950 > > │ 00:00:30 i #88 near_workspaces.print_usd / outcome / {
00:06:36 v #951 > > is_success = true; gas_burnt_usd = +0.004309; tokens_burnt_usd = +0.004309;
00:06:36 v #952 > > gas_burnt = 6450279705334; tokens_burnt = 645027970533400000000 }
00:06:36 v #953 > > │ 00:00:30 w #89 spiral_wasm.run / Error error / { retry
00:06:36 v #954 > > = 15; error = "{ receipt_outcomes_len = 1; retry = 15; receipt_failures = [] }"
00:06:36 v #955 > > }
00:06:36 v #956 > > │
00:06:36 v #957 > > │
00:06:36 v #958 > > │
00:06:36 v #959 > >
00:06:36 v #960 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:36 v #961 > > │ ### get_account_info
00:06:36 v #962 > >
00:06:36 v #963 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:36 v #964 > > inl get_account_info
00:06:36 v #965 > >     (state : rust.ref state)
00:06:36 v #966 > >     (account_id : near.account_id)
00:06:36 v #967 > >     : optionm'.option' (sm'.std_string * (u64 * u32))
00:06:36 v #968 > >     =
00:06:36 v #969 > >     inl account_map : rust.ref (near.lookup_map near.account_id sm'.std_string)
00:06:36 v #970 > > =
00:06:36 v #971 > >         !\($'$"&!state.3"')
00:06:36 v #972 > >
00:06:36 v #973 > >     inl alias_map : rust.ref (near.lookup_map sm'.std_string (mapm.hash_map
00:06:36 v #974 > > near.account_id (u64 * u32))) =
00:06:36 v #975 > >         !\($'$"&!state.4"')
00:06:36 v #976 > >
00:06:36 v #977 > >     !\\(account_id, $'"let result = !account_map.get(&$0).and_then(|alias| {
00:06:36 v #978 > > //"') : ()
00:06:36 v #979 > >     !\($'"    !alias_map //"') : ()
00:06:36 v #980 > >     !\($'"      .get(alias) //"') : ()
00:06:36 v #981 > >     !\($'"      .map(|accounts| { //"') : ()
00:06:36 v #982 > >     !\($'"          let result = (alias.clone(),
00:06:36 v #983 > > *accounts.get(&!account_id).unwrap()); //"') : ()
00:06:36 v #984 > >     !\($'"          (result.0, result.1.0, result.1.1) //"') : ()
00:06:36 v #985 > >     !\($'"      }) //"') : ()
00:06:36 v #986 > >     !\($'"}); //"') : ()
00:06:36 v #987 > >
00:06:36 v #988 > >     inl result = !\($'"result"')
00:06:36 v #989 > >
00:06:36 v #990 > >     trace Debug
00:06:36 v #991 > >         fun () => "chat_contract.get_account_info"
00:06:36 v #992 > >         fun () => { account_id result }
00:06:36 v #993 > >
00:06:36 v #994 > >     trace Debug (fun () => "") id
00:06:36 v #995 > >
00:06:36 v #996 > >     result
00:06:36 v #997 > >
00:06:36 v #998 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:36 v #999 > > │ ### main
00:06:36 v #1000 > >
00:06:36 v #1001 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:36 v #1002 > > ///! _
00:06:36 v #1003 > >
00:06:36 v #1004 > > inl main () =
00:06:36 v #1005 > >     !\($'"} //"') : ()
00:06:36 v #1006 > >
00:06:36 v #1007 > >     !\($'"#[[near_sdk::near_bindgen]] //"') : ()
00:06:36 v #1008 > >
00:06:36 v #1009 > >     !\($'"#[[derive( //"') : ()
00:06:36 v #1010 > >     !\($'"  near_sdk::PanicOnDefault, //"') : ()
00:06:36 v #1011 > >     !\($'"  borsh::BorshDeserialize, //"') : ()
00:06:36 v #1012 > >     !\($'"  borsh::BorshSerialize, //"') : ()
00:06:36 v #1013 > >     !\($'")]] //"') : ()
00:06:36 v #1014 > >
00:06:36 v #1015 > >     !\($'"pub struct State ( //"') : ()
00:06:36 v #1016 > >
00:06:36 v #1017 > >     !\($'"/*"') : ()
00:06:36 v #1018 > >     (null () : rust.type_emit state) |> ignore
00:06:36 v #1019 > >     !\($'"*/ )"') : ()
00:06:36 v #1020 > >
00:06:36 v #1021 > >     inl new_ () =
00:06:36 v #1022 > >         !\($'"#[[init]] //"') : ()
00:06:36 v #1023 > >         !\($'"pub fn new() -> Self { // 1"') : ()
00:06:36 v #1024 > >
00:06:36 v #1025 > >         (!\($'"true; /*"') : bool) |> ignore
00:06:36 v #1026 > >
00:06:36 v #1027 > >         (null () : rust.type_emit ()) |> ignore
00:06:36 v #1028 > >
00:06:36 v #1029 > >         (!\($'"true; */"') : bool) |> ignore
00:06:36 v #1030 > >
00:06:36 v #1031 > >         inl result = new ()
00:06:36 v #1032 > >
00:06:36 v #1033 > >         $'let _result = !result in _result |> (fun x ->
00:06:36 v #1034 > > Fable.Core.RustInterop.emitRustExpr x $"Self($0) // x") // 2' : ()
00:06:36 v #1035 > >
00:06:36 v #1036 > >         !\($'"} // 2."') : ()
00:06:36 v #1037 > >
00:06:36 v #1038 > >         !\($'"} // 1."') : ()
00:06:36 v #1039 > >
00:06:36 v #1040 > >         2
00:06:36 v #1041 > >
00:06:36 v #1042 > >     inl is_valid_alias () =
00:06:36 v #1043 > >         !\($'"fn is_valid_alias(alias: String) -> bool { //"') : ()
00:06:36 v #1044 > >         inl alias = !\($'$"alias"')
00:06:36 v #1045 > >         inl result = alias |> is_valid_alias
00:06:36 v #1046 > >         $'let _result = !result in _result |> (fun x ->
00:06:36 v #1047 > > Fable.Core.RustInterop.emitRustExpr x "$0 }") // 2' : ()
00:06:36 v #1048 > >         !\($'"} //"') : ()
00:06:36 v #1049 > >         1
00:06:36 v #1050 > >
00:06:36 v #1051 > >     inl generate_cid () =
00:06:36 v #1052 > >         !\($'"pub fn generate_cid( //"') : ()
00:06:36 v #1053 > >         !\($'"  &self, //"') : ()
00:06:36 v #1054 > >         !\($'"  content: Vec<u8>, //"') : ()
00:06:36 v #1055 > >         !\($'") -> String { //"') : ()
00:06:36 v #1056 > >         inl content = !\($'$"content"')
00:06:36 v #1057 > >         inl result = generate_cid content
00:06:36 v #1058 > >         $'let _result = !result in _result |> (fun x ->
00:06:36 v #1059 > > Fable.Core.RustInterop.emitRustExpr x "$0 }") // 2' : ()
00:06:36 v #1060 > >         !\($'"} //"') : ()
00:06:36 v #1061 > >         2
00:06:36 v #1062 > >
00:06:36 v #1063 > >     inl generate_cid_borsh () =
00:06:36 v #1064 > >         !\($'"#[[result_serializer(borsh)]] //"') : ()
00:06:36 v #1065 > >         !\($'"pub fn generate_cid_borsh( //"') : ()
00:06:36 v #1066 > >         !\($'"  &self, //"') : ()
00:06:36 v #1067 > >         !\($'"  #[[serializer(borsh)]] content: Vec<u8>, //"') : ()
00:06:36 v #1068 > >         !\($'") -> String { //"') : ()
00:06:36 v #1069 > >         !\($'"  self.generate_cid(content) //"') : ()
00:06:36 v #1070 > >         !\($'"} //"') : ()
00:06:36 v #1071 > >         1
00:06:36 v #1072 > >
00:06:36 v #1073 > >     inl claim_alias () =
00:06:36 v #1074 > >         !\($'"pub fn claim_alias( //"') : ()
00:06:36 v #1075 > >         !\($'"  &mut self, //"') : ()
00:06:36 v #1076 > >         !\($'"  alias: String, //"') : ()
00:06:36 v #1077 > >         !\($'") { //"') : ()
00:06:36 v #1078 > >
00:06:36 v #1079 > >         inl state = !\($'$"&mut self.0"')
00:06:36 v #1080 > >         inl alias = !\($'$"alias"')
00:06:36 v #1081 > >
00:06:36 v #1082 > >         inl result = claim_alias state alias
00:06:36 v #1083 > >         trace Debug (fun () => "") (join id)
00:06:36 v #1084 > >
00:06:36 v #1085 > >         !\($'"} //"') : ()
00:06:36 v #1086 > >
00:06:36 v #1087 > >         !\($'"} //"') : ()
00:06:36 v #1088 > >
00:06:36 v #1089 > >         !\($'"} //"') : ()
00:06:36 v #1090 > >
00:06:36 v #1091 > >         3
00:06:36 v #1092 > >
00:06:36 v #1093 > >     inl get_account_info () =
00:06:36 v #1094 > >         !\($'"pub fn get_account_info( //"') : ()
00:06:36 v #1095 > >         !\($'"  &self, //"') : ()
00:06:36 v #1096 > >         !\($'"  account_id: near_sdk::AccountId, //"') : ()
00:06:36 v #1097 > >         !\($'") -> Option<(String, u64, u32)> { //"') : ()
00:06:36 v #1098 > >
00:06:36 v #1099 > >         inl state = !\($'$"&self.0"')
00:06:36 v #1100 > >         inl account_id : near.account_id = !\($'$"account_id"')
00:06:36 v #1101 > >
00:06:36 v #1102 > >         inl result = account_id |> get_account_info state
00:06:36 v #1103 > >         $'let _result = !result in _result |> (fun x ->
00:06:36 v #1104 > > Fable.Core.RustInterop.emitRustExpr x "$0 } // 4") // 3' : ()
00:06:36 v #1105 > >
00:06:36 v #1106 > >         !\($'"} // 2"') : ()
00:06:36 v #1107 > >
00:06:36 v #1108 > >         !\($'"} // 1"') : ()
00:06:36 v #1109 > >
00:06:36 v #1110 > >         2
00:06:36 v #1111 > >
00:06:36 v #1112 > >     inl get_alias_map () =
00:06:36 v #1113 > >         !\($'"pub fn get_alias_map( //"') : ()
00:06:36 v #1114 > >         !\($'"  &self, //"') : ()
00:06:36 v #1115 > >         !\($'"  alias: String, //"') : ()
00:06:36 v #1116 > >         !\($'") -> Option<std::collections::HashMap<near_sdk::AccountId, (u64,
00:06:36 v #1117 > > u32)>> { //"') : ()
00:06:36 v #1118 > >
00:06:36 v #1119 > >         inl alias_map : rust.ref (near.lookup_map sm'.std_string (mapm.hash_map
00:06:36 v #1120 > > near.account_id (u64 * u32))) =
00:06:36 v #1121 > >             !\($'$"&self.0.4"')
00:06:36 v #1122 > >
00:06:36 v #1123 > >         inl alias : sm'.std_string = !\($'$"alias"')
00:06:36 v #1124 > >
00:06:36 v #1125 > >         trace Debug
00:06:36 v #1126 > >             fun () => "chat_contract.get_alias_map"
00:06:36 v #1127 > >             fun () => { alias }
00:06:36 v #1128 > >
00:06:36 v #1129 > >         trace Debug (fun () => "") (join id)
00:06:36 v #1130 > >
00:06:36 v #1131 > >         !\\(alias, $'"  !alias_map.get(&$0).cloned() //"') : ()
00:06:36 v #1132 > >         !\($'"} //"') : ()
00:06:36 v #1133 > >
00:06:36 v #1134 > >         !\($'"} //"') : ()
00:06:36 v #1135 > >
00:06:36 v #1136 > >         2
00:06:36 v #1137 > >
00:06:36 v #1138 > >     inl get_alias_map_borsh () =
00:06:36 v #1139 > >         !\($'"#[[result_serializer(borsh)]] //"') : ()
00:06:36 v #1140 > >         !\($'"pub fn get_alias_map_borsh( //"') : ()
00:06:36 v #1141 > >         !\($'"  &self, //"') : ()
00:06:36 v #1142 > >         !\($'"  #[[serializer(borsh)]] alias: String, //"') : ()
00:06:36 v #1143 > >         !\($'") -> Option<std::collections::HashMap<near_sdk::AccountId, (u64,
00:06:36 v #1144 > > u32)>> { //"') : ()
00:06:36 v #1145 > >         !\($'"  self.get_alias_map(alias) //"') : ()
00:06:36 v #1146 > >         !\($'"} //"') : ()
00:06:36 v #1147 > >         1
00:06:36 v #1148 > >
00:06:36 v #1149 > >     inl fns =
00:06:36 v #1150 > >         [[
00:06:36 v #1151 > >             new_
00:06:36 v #1152 > >             is_valid_alias
00:06:36 v #1153 > >             generate_cid
00:06:36 v #1154 > >             generate_cid_borsh
00:06:36 v #1155 > >             claim_alias
00:06:36 v #1156 > >             get_account_info
00:06:36 v #1157 > >             get_alias_map
00:06:36 v #1158 > >             get_alias_map_borsh
00:06:36 v #1159 > >         ]]
00:06:36 v #1160 > >
00:06:36 v #1161 > >     inl rec loop acc fns i =
00:06:36 v #1162 > >         match fns with
00:06:36 v #1163 > >         | [[]] => acc
00:06:36 v #1164 > >         | x :: xs =>
00:06:36 v #1165 > >             !\($'"#[[near_sdk::near_bindgen]] //"') : ()
00:06:36 v #1166 > >             !\($'"impl State { //"') : ()
00:06:36 v #1167 > >             inl n = x ()
00:06:36 v #1168 > >             !\($'"} /* c"') : ()
00:06:36 v #1169 > >             inl rec loop' i' =
00:06:36 v #1170 > >                 if i' <> 1 // <= n
00:06:36 v #1171 > >                 then (!\($'"true; */ // ???? / i: !i / i\': !i' / acc: !acc / n:
00:06:36 v #1172 > > !n"') : bool) |> ignore
00:06:36 v #1173 > >                 else
00:06:36 v #1174 > >                     (!\($'"true; // ??? / i: !i / i\': !i' / acc: !acc / n:
00:06:36 v #1175 > > !n"') : bool) |> ignore
00:06:36 v #1176 > >                     loop' (i' + 1)
00:06:36 v #1177 > >             loop' 1u8
00:06:36 v #1178 > >             loop (acc + n) xs (i + 1)
00:06:36 v #1179 > >     inl n = loop 0u8 fns 1u8
00:06:36 v #1180 > >
00:06:36 v #1181 > >
00:06:36 v #1182 > >     // !\($'"/* a"') : ()
00:06:36 v #1183 > >
00:06:36 v #1184 > >     // !\($'"} // b"') : ()
00:06:36 v #1185 > >
00:06:36 v #1186 > >     !\($'"fn _main() //"') : ()
00:06:36 v #1187 > >     !\($'"{ { //"') : ()
00:06:36 v #1188 > >
00:06:36 v #1189 > >     inl rec loop' i' =
00:06:36 v #1190 > >         if i' <= n
00:06:36 v #1191 > >         then
00:06:36 v #1192 > >             (!\($'"true; { (); // ?? / i\': !i' / n: !n"') : bool) |> ignore
00:06:36 v #1193 > >             loop' (i' + 1)
00:06:36 v #1194 > >         else
00:06:36 v #1195 > >             (!\($'"true; { { (); // ? / i\': !i' / n: !n"') : bool) |> ignore
00:06:36 v #1196 > >             // (!\($'"true; */ // ?? / i\': !i' / n: !n"') : bool) |> ignore
00:06:36 v #1197 > >     loop' 1u8
00:06:36 v #1198 > >
00:06:36 v #1199 > > inl main () =
00:06:36 v #1200 > >     $'!main |> ignore' : ()
00:06:36 v #1201 > 00:06:35 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 55113 }
00:06:36 v #1202 > 00:06:35 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/apps/chat/contract/chat_contract.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/chat/contract/chat_contract.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:06:37 v #1203 > 00:06:36 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/chat/contract/chat_contract.dib.ipynb to html
00:06:37 v #1204 > 00:06:36 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:06:37 v #1205 > 00:06:36 v #7 !   validate(nb)
00:06:37 v #1206 > 00:06:36 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:06:37 v #1207 > 00:06:36 v #9 !   return _pygments_highlight(
00:06:38 v #1208 > 00:06:36 v #10 ! [NbConvertApp] Writing 522634 bytes to /home/runner/work/polyglot/polyglot/apps/chat/contract/chat_contract.dib.html
00:06:38 v #1209 > 00:06:37 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 926 }
00:06:38 v #1210 > 00:06:37 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 926 }
00:06:38 v #1211 > 00:06:37 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/chat/contract/chat_contract.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/chat/contract/chat_contract.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:06:38 v #1212 > 00:06:37 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:06:38 v #1213 > 00:06:37 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:06:38 v #1214 > 00:06:37 d #16 spiral.run / dib / { exit_code = 0; result_length = 56098 }
00:06:38 d #1215 runtime.execute_with_options_async / { exit_code = 0; output_length = 61262 }
00:06:38 d #3 main / executeCommand / exitCode: 0 / command: ../../../deps/spiral/workspace/target/release/spiral dib --path chat_contract.dib --retries 5
00:06:38 v #39 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 d #1 writeDibCode / output: Spi / path: chat_contract.dib
00:00:00 d #2 parseDibCode / output: Spi / file: chat_contract.dib
00:00:00 v #1 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"; options = { command = dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = Some <fun:compiler@87-4>; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:00:00 v #2 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #2 > 00:00:00 d #1 pwd: /home/runner/work/polyglot/polyglot
00:00:00 v #3 > 00:00:00 d #2 dllPath: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release
00:00:00 v #4 > 00:00:00 d #3 targetDir: /home/runner/work/polyglot/polyglot/target/spiral_Eval
00:00:00 v #3 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #4 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #5 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #6 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #7 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #8 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #9 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #10 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #11 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #12 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #13 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #14 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #15 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #16 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #17 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #18 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #19 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #20 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #21 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #22 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #23 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #24 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #25 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #26 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #27 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #28 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #29 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #30 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #31 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #32 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #33 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #34 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #5 > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:00 v #35 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #36 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #37 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #38 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:01 v #1 Supervisor.sendJson / port: 13805 / json: {"Ping":true} / result:
00:00:01 v #2 Supervisor.awaitCompiler / Ping / result: 'Some null' / port: 13805 / retry: 1
00:00:01 v #6 > Server bound to: http://localhost:13805
00:00:01 v #39 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:01 d #3 Supervisor.buildFile / takeWhileInclusive / path: chat_contract.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:01 d #4 Supervisor.buildFile / AsyncSeq.scan / path: chat_contract.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:01 d #5 Supervisor.buildFile / takeWhileInclusive / path: chat_contract.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:01 v #6 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # chat_contract\nopen rust\nopen rust.rust_operators\n\n/// ## chat_cont...27 : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/apps/chat/contract/chat_contract.spi"}} / result:
00:00:01 v #7 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/apps/chat/contract/chat_contract.spi"}} / result:
00:00:01 d #8 Supervisor.buildFile / AsyncSeq.scan / path: chat_contract.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:01 d #9 Supervisor.buildFile / takeWhileInclusive / path: chat_contract.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:02 d #10 Supervisor.buildFile / AsyncSeq.scan / path: chat_contract.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:02 d #11 Supervisor.buildFile / takeWhileInclusive / path: chat_contract.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:02 d #12 Supervisor.buildFile / AsyncSeq.scan / path: chat_contract.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:02 d #13 Supervisor.buildFile / takeWhileInclusive / path: chat_contract.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:03 d #14 Supervisor.buildFile / AsyncSeq.scan / path: chat_contract.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:03 d #15 Supervisor.buildFile / takeWhileInclusive / path: chat_contract.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:03 d #16 Supervisor.buildFile / AsyncSeq.scan / path: chat_contract.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:03 d #17 Supervisor.buildFile / takeWhileInclusive / path: chat_contract.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:04 d #18 Supervisor.buildFile / AsyncSeq.scan / path: chat_contract.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:04 d #19 Supervisor.buildFile / takeWhileInclusive / path: chat_contract.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:04 d #20 Supervisor.buildFile / AsyncSeq.scan / path: chat_contract.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("*/ $0 /*")>]
#endif
type TypeEmit<'T> = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("&$0")>]
type Ref<'T> = class end
#else
type Ref<'T> = 'T
#endif

#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("near_sdk::store::IterableSet<$0>")>]
#endif
type near_sdk_store_IterableSet<'T> = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("near_sdk::store::LookupMap<$0, $1>")>]
#endif
type near_sdk_store_LookupMap<'K, 'V> = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>]
type std_string_String = class end
#else
type std_string_String = string
#endif

#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("mut $0...nterop.emitRustExpr () v802 
    let v804 : string = "true; { (); // ?? / i': 11uy / n: 14uy"
    let v805 : bool = Fable.Core.RustInterop.emitRustExpr () v804 
    let v806 : string = "true; { (); // ?? / i': 12uy / n: 14uy"
    let v807 : bool = Fable.Core.RustInterop.emitRustExpr () v806 
    let v808 : string = "true; { (); // ?? / i': 13uy / n: 14uy"
    let v809 : bool = Fable.Core.RustInterop.emitRustExpr () v808 
    let v810 : string = "true; { (); // ?? / i': 14uy / n: 14uy"
    let v811 : bool = Fable.Core.RustInterop.emitRustExpr () v810 
    let v812 : string = "true; { { (); // ? / i': 15uy / n: 14uy"
    let v813 : bool = Fable.Core.RustInterop.emitRustExpr () v812 
    ()
let v0 : (unit -> unit) = closure0()
v0 |> ignore
()

00:00:04 d #21 Supervisor.buildFile / takeWhileInclusive / path: chat_contract.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("*/ $0 /*")>]
#endif
type TypeEmit<'T> = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("&$0")>]
type Ref<'T> = class end
#else
type Ref<'T> = 'T
#endif

#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("near_sdk::store::IterableSet<$0>")>]
#endif
type near_sdk_store_IterableSet<'T> = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("near_sdk::store::LookupMap<$0, $1>")>]
#endif
type near_sdk_store_LookupMap<'K, 'V> = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>]
type std_string_String = class end
#else
type std_string_String = string
#endif

#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("mut $0...nterop.emitRustExpr () v802 
    let v804 : string = "true; { (); // ?? / i': 11uy / n: 14uy"
    let v805 : bool = Fable.Core.RustInterop.emitRustExpr () v804 
    let v806 : string = "true; { (); // ?? / i': 12uy / n: 14uy"
    let v807 : bool = Fable.Core.RustInterop.emitRustExpr () v806 
    let v808 : string = "true; { (); // ?? / i': 13uy / n: 14uy"
    let v809 : bool = Fable.Core.RustInterop.emitRustExpr () v808 
    let v810 : string = "true; { (); // ?? / i': 14uy / n: 14uy"
    let v811 : bool = Fable.Core.RustInterop.emitRustExpr () v810 
    let v812 : string = "true; { { (); // ? / i': 15uy / n: 14uy"
    let v813 : bool = Fable.Core.RustInterop.emitRustExpr () v812 
    ()
let v0 : (unit -> unit) = closure0()
v0 |> ignore
()

00:00:04 d #22 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite
00:00:04 v #40 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 d #1 persistCodeProject / packages: [Fable.Core] / modules: [lib/spiral/common.fsx; lib/spiral/sm.fsx; lib/spiral/crypto.fsx; ... ] / name: chat_contract / hash:  / code.Length: 144141
00:00:00 d #2 buildProject / fullPath: /home/runner/work/polyglot/polyglot/target/Builder/chat_contract/chat_contract.fsproj
00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  "publish "/home/runner/work/polyglot/polyglot/target/Builder/chat_contract/chat_contract.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/apps/chat/contract/dist" --runtime linux-x64"; options = { command = dotnet publish "/home/runner/work/polyglot/polyglot/target/Builder/chat_contract/chat_contract.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/apps/chat/contract/dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot/target/Builder/chat_contract" } }
00:00:00 v #2 >   Determining projects to restore...
00:00:01 v #3 >   Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
00:00:01 v #4 >   The last full restore is still up to date. Nothing left to do.
00:00:01 v #5 >   Total time taken: 0 milliseconds
00:00:01 v #6 >   Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
00:00:01 v #7 >   Restoring /home/runner/work/polyglot/polyglot/target/Builder/chat_contract/chat_contract.fsproj
00:00:01 v #8 >   Starting restore process.
00:00:01 v #9 >   Total time taken: 0 milliseconds
00:00:02 v #10 >   Restored /home/runner/work/polyglot/polyglot/target/Builder/chat_contract/chat_contract.fsproj (in 297 ms).
00:00:07 v #11 > /home/runner/work/polyglot/polyglot/target/Builder/chat_contract/chat_contract.fs(3284,15): warning FS0025: Incomplete pattern matches on this expression. For example, the value 'US6_0 (_)' may indicate a case not covered by the pattern(s). [/home/runner/work/polyglot/polyglot/target/Builder/chat_contract/chat_contract.fsproj]
00:00:11 v #12 >   chat_contract -> /home/runner/work/polyglot/polyglot/target/Builder/chat_contract/bin/Release/net9.0/linux-x64/chat_contract.dll
00:00:12 v #13 >   chat_contract -> /home/runner/work/polyglot/polyglot/apps/chat/contract/dist
00:00:12 d #14 runtime.execute_with_options_async / { exit_code = 0; output_length = 1073 }
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/chat_contract
polyglot/lib/spiral/lib.ps1/GetTargetDir / targetDir: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/chat_contract
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../..
polyglot/lib/spiral/lib.ps1/BuildFable / TargetDir: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/chat_contract / ProjectName: chat_contract / Language: rs / Runtime: CONTRACT / root: /home/runner/work/polyglot/polyglot/lib/spiral/../..
Fable 5.0.0-alpha.2: F# to Rust compiler (status: alpha)

Thanks to the contributor! @johannesegger
Stand with Ukraine! https://standwithukraine.com.ua/

Parsing target/Builder/chat_contract/chat_contract.fsproj...
Project and references (14 source files) parsed in 2360ms

Started Fable compilation...

Fable compilation finished in 7496ms

./target/Builder/chat_contract/chat_contract.fs(3284,15): (3284,19) warning FSHARP: Incomplete pattern matches on this expression. For example, the value 'US6_0 (_)' may indicate a case not covered by the pattern(s). (code 25)
./lib/spiral/common.fsx(2117,0): (2117,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/sm.fsx(556,0): (556,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/async_.fsx(250,0): (250,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/threading.fsx(139,0): (139,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/date_time.fsx(2527,0): (2527,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/crypto.fsx(2344,0): (2344,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/platform.fsx(120,0): (120,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/networking.fsx(4935,0): (4935,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/trace.fsx(2150,0): (2150,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/runtime.fsx(7101,0): (7101,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/file_system.fsx(17438,0): (17438,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./target/Builder/chat_contract/chat_contract.fs(3502,6): (3502,12) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/fsharp/Common_contract.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/chat_contract/target/rs/lib/fsharp/Common.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/fsharp/Common_contract.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/common_contract.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/chat_contract/target/rs/lib/spiral/common.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/common_contract.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/date_time_contract.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/chat_contract/target/rs/lib/spiral/date_time.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/date_time_contract.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/async__contract.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/chat_contract/target/rs/lib/spiral/async_.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/async__contract.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/platform_contract.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/chat_contract/target/rs/lib/spiral/platform.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/platform_contract.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/runtime_contract.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/chat_contract/target/rs/lib/spiral/runtime.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/runtime_contract.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/threading_contract.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/chat_contract/target/rs/lib/spiral/threading.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/threading_contract.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/networking_contract.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/chat_contract/target/rs/lib/spiral/networking.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/networking_contract.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/file_system_contract.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/chat_contract/target/rs/lib/spiral/file_system.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/file_system_contract.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/sm_contract.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/chat_contract/target/rs/lib/spiral/sm.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/sm_contract.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/crypto_contract.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/chat_contract/target/rs/lib/spiral/crypto.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/crypto_contract.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/trace_contract.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/chat_contract/target/rs/lib/spiral/trace.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/trace_contract.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/lib_contract.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/chat_contract/target/rs/lib/spiral/lib.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/lib_contract.rs
 Downloading crates ...
  Downloaded js-sys v0.3.76
  Downloaded wasm-bindgen-macro v0.2.99
  Downloaded wasm-bindgen-backend v0.2.99
  Downloaded serde_derive v1.0.216
  Downloaded wasm-bindgen-macro-support v0.2.99
  Downloaded wasm-bindgen v0.2.99
  Downloaded near-sdk-macros v5.6.0
  Downloaded rustversion v1.0.18
  Downloaded near-sdk v5.6.0
  Downloaded wasm-bindgen-shared v0.2.99
   Compiling proc-macro2 v1.0.92
   Compiling unicode-ident v1.0.14
   Compiling wasm-bindgen-shared v0.2.99
   Compiling equivalent v1.0.1
   Compiling hashbrown v0.15.2
   Compiling winnow v0.6.20
   Compiling toml_datetime v0.6.8
   Compiling serde v1.0.216
   Compiling indexmap v2.7.0
   Compiling cfg_aliases v0.2.1
   Compiling quote v1.0.37
   Compiling syn v2.0.90
   Compiling bumpalo v3.16.0
   Compiling typenum v1.17.0
   Compiling log v0.4.22
   Compiling borsh v1.5.3
   Compiling serde_json v1.0.133
   Compiling once_cell v1.20.2
   Compiling ident_case v1.0.1
   Compiling toml_edit v0.22.22
   Compiling syn v1.0.109
   Compiling cfg-if v1.0.0
   Compiling fnv v1.0.7
   Compiling wasm-bindgen v0.2.99
   Compiling rustversion v1.0.18
   Compiling hybrid-array v0.2.3
   Compiling proc-macro-crate v3.2.0
   Compiling itoa v1.0.14
   Compiling data-encoding v2.6.0
   Compiling wee_alloc v0.4.5
   Compiling near-sdk-macros v5.6.0
   Compiling memchr v2.7.4
   Compiling wasm-bindgen-backend v0.2.99
   Compiling darling_core v0.20.10
   Compiling ryu v1.0.18
   Compiling heck v0.5.0
   Compiling data-encoding-macro-internal v0.1.13
   Compiling wasm-bindgen-macro-support v0.2.99
   Compiling block-buffer v0.11.0-rc.3
   Compiling crypto-common v0.2.0-rc.1
   Compiling const-oid v0.10.0-rc.3
   Compiling serde_derive v1.0.216
   Compiling borsh-derive v1.5.3
   Compiling wasm-bindgen-macro v0.2.99
   Compiling darling_macro v0.20.10
   Compiling darling v0.20.10
   Compiling strum_macros v0.26.4
   Compiling Inflector v0.11.4
   Compiling js-sys v0.3.76
   Compiling memory_units v0.4.0
   Compiling strum v0.26.3
   Compiling cfg-if v0.1.10
   Compiling data-encoding-macro v0.1.15
   Compiling digest v0.11.0-pre.9
   Compiling base-x v0.2.11
   Compiling bs58 v0.5.1
   Compiling near-sys v0.2.2
   Compiling base64 v0.22.1
   Compiling multibase v0.9.1
   Compiling sha2 v0.11.0-pre.4
   Compiling inline_colorization v0.1.6
   Compiling unsigned-varint v0.8.0
   Compiling near-token v0.3.0
   Compiling near-account-id v1.0.0
   Compiling near-gas v0.3.0
   Compiling getrandom v0.2.15
   Compiling fable_library_rust v0.1.0 (/home/runner/work/polyglot/polyglot/lib/rust/fable/fable_modules/fable-library-rust)
   Compiling near-sdk v5.6.0
   Compiling chat_contract v0.0.1 (/home/runner/work/polyglot/polyglot/apps/chat/contract)
    Finished `release` profile [optimized] target(s) in 20.76s
 Downloading crates ...
  Downloaded near-sandbox-utils v0.12.0
  Downloaded anyhow v1.0.94
  Downloaded ordered-float v4.5.0
  Downloaded pin-project-internal v1.1.7
  Downloaded tokio-macros v2.4.0
  Downloaded tempfile v3.14.0
  Downloaded xml-rs v0.8.24
  Downloaded pin-project v1.1.7
  Downloaded cc v1.2.4
  Downloaded open v5.3.1
  Downloaded reqwest v0.12.9
  Downloaded hyper-rustls v0.27.3
  Downloaded serde_with v3.11.0
  Downloaded hyper v1.5.1
  Downloaded hyper v0.14.31
  Downloaded async-trait v0.1.83
  Downloaded serde_with_macros v3.11.0
  Downloaded rustix v0.37.27
  Downloaded tokio v1.42.0
   Compiling proc-macro2 v1.0.92
   Compiling unicode-ident v1.0.14
   Compiling libc v0.2.168
   Compiling serde v1.0.216
   Compiling version_check v0.9.5
   Compiling shlex v1.3.0
   Compiling once_cell v1.20.2
   Compiling quote v1.0.37
   Compiling jobserver v0.1.32
   Compiling typenum v1.17.0
   Compiling syn v2.0.90
   Compiling cc v1.2.4
   Compiling generic-array v0.14.7
   Compiling smallvec v1.13.2
   Compiling pkg-config v0.3.31
   Compiling futures-core v0.3.31
   Compiling lock_api v0.4.12
   Compiling parking_lot_core v0.9.10
   Compiling scopeguard v1.2.0
   Compiling byteorder v1.5.0
   Compiling log v0.4.22
   Compiling bytes v1.9.0
   Compiling parking_lot v0.12.3
   Compiling signal-hook-registry v1.4.2
   Compiling getrandom v0.2.15
   Compiling hashbrown v0.15.2
   Compiling equivalent v1.0.1
   Compiling toml_datetime v0.6.8
   Compiling tracing-core v0.1.33
   Compiling futures-io v0.3.31
   Compiling mio v1.0.3
   Compiling indexmap v2.7.0
   Compiling socket2 v0.5.8
   Compiling futures-sink v0.3.31
   Compiling subtle v2.6.1
   Compiling rand_core v0.6.4
   Compiling crypto-common v0.1.6
   Compiling synstructure v0.13.1
   Compiling futures-channel v0.3.31
   Compiling anyhow v1.0.94
   Compiling block-buffer v0.10.4
   Compiling num-traits v0.2.19
   Compiling syn v1.0.109
   Compiling cfg_aliases v0.2.1
   Compiling fnv v1.0.7
   Compiling digest v0.10.7
   Compiling winnow v0.6.20
   Compiling zstd-sys v2.0.13+zstd.1.5.6
   Compiling rustversion v1.0.18
   Compiling crossbeam-utils v0.8.21
   Compiling serde_derive v1.0.216
   Compiling zerofrom-derive v0.1.5
   Compiling yoke-derive v0.7.5
   Compiling zerovec-derive v0.10.3
   Compiling tokio-macros v2.4.0
   Compiling tracing-attributes v0.1.28
   Compiling tokio v1.42.0
   Compiling tracing v0.1.41
   Compiling displaydoc v0.2.5
   Compiling futures-macro v0.3.31
   Compiling zerocopy-derive v0.7.35
   Compiling futures-util v0.3.31
   Compiling zerocopy v0.7.35
   Compiling toml_edit v0.22.22
   Compiling icu_provider_macros v1.5.0
   Compiling lazy_static v1.5.0
   Compiling bitflags v2.6.0
   Compiling proc-macro-crate v3.2.0
   Compiling thiserror v1.0.69
   Compiling ppv-lite86 v0.2.20
   Compiling thiserror-impl v1.0.69
   Compiling borsh-derive v1.5.3
   Compiling rand_chacha v0.3.1
   Compiling serde_json v1.0.133
   Compiling rand v0.8.5
   Compiling borsh v1.5.3
   Compiling stable_deref_trait v1.2.0
   Compiling tokio-util v0.7.13
   Compiling sha2 v0.10.8
   Compiling semver v1.0.24
   Compiling percent-encoding v2.3.1
   Compiling zerofrom v0.1.5
   Compiling bitflags v1.3.2
   Compiling yoke v0.7.5
   Compiling num-integer v0.1.46
   Compiling httparse v1.9.5
   Compiling memchr v2.7.4
   Compiling zerovec v0.10.4
   Compiling hex v0.4.3
   Compiling ring v0.17.8
   Compiling tower-service v0.3.3
   Compiling try-lock v0.2.5
   Compiling cfg-if v1.0.0
   Compiling want v0.3.1
   Compiling async-trait v0.1.83
   Compiling static_assertions v1.1.0
   Compiling tinystr v0.7.6
   Compiling http v0.2.12
   Compiling thread_local v1.1.8
   Compiling utf8parse v0.2.2
   Compiling writeable v0.5.5
   Compiling litemap v0.7.4
   Compiling regex-syntax v0.6.29
   Compiling powerfmt v0.2.0
   Compiling deranged v0.3.11
   Compiling icu_locid v1.5.0
   Compiling regex-automata v0.1.10
   Compiling openssl-src v300.4.1+3.4.0
   Compiling time-core v0.1.2
   Compiling vcpkg v0.2.15
   Compiling overload v0.1.1
   Compiling num-conv v0.1.0
   Compiling time v0.3.37
   Compiling nu-ansi-term v0.46.0
   Compiling openssl-sys v0.9.104
   Compiling matchers v0.1.0
   Compiling icu_provider v1.5.0
   Compiling http-body v0.4.6
   Compiling aho-corasick v1.1.3
   Compiling rustc_version v0.4.1
   Compiling crossbeam-channel v0.5.14
   Compiling sharded-slab v0.1.7
   Compiling pin-project-internal v1.1.7
   Compiling serde_repr v0.1.19
   Compiling tracing-log v0.2.0
   Compiling bzip2-sys v0.1.11+1.0.8
   Compiling indexmap v1.9.3
   Compiling num-bigint v0.3.3
   Compiling base64 v0.21.7
   Compiling atomic-waker v1.1.2
   Compiling icu_locid_transform_data v1.5.0
   Compiling regex-syntax v0.8.5
   Compiling zstd-safe v5.0.2+zstd.1.5.2
   Compiling pin-project v1.1.7
   Compiling icu_locid_transform v1.5.0
   Compiling tracing-subscriber v0.3.19
   Compiling curve25519-dalek v4.1.3
   Compiling regex-automata v0.4.9
   Compiling h2 v0.3.26
   Compiling icu_collections v1.5.0
   Compiling near-account-id v1.0.0
   Compiling futures-executor v0.3.31
   Compiling axum-core v0.3.4
   Compiling num-rational v0.3.2
   Compiling icu_properties_data v1.5.0
   Compiling httpdate v1.0.3
   Compiling crunchy v0.2.2
   Compiling either v1.13.0
   Compiling base64 v0.22.1
   Compiling strsim v0.11.1
   Compiling ident_case v1.0.1
   Compiling mime v0.3.17
   Compiling convert_case v0.4.0
   Compiling tower-layer v0.3.3
   Compiling hashbrown v0.12.3
   Compiling derive_more v0.99.18
   Compiling darling_core v0.20.10
   Compiling itertools v0.12.1
   Compiling hyper v0.14.31
   Compiling icu_properties v1.5.1
   Compiling regex v1.11.1
   Compiling axum v0.6.20
   Compiling tokio-stream v0.1.17
   Compiling enum-map-derive v0.17.0
   Compiling derive_arbitrary v1.4.1
   Compiling curve25519-dalek-derive v0.1.1
   Compiling secp256k1-sys v0.8.1
   Compiling write16 v1.0.0
   Compiling urlencoding v2.1.3
   Compiling bs58 v0.4.0
   Compiling heck v0.5.0
   Compiling rustls v0.23.20
   Compiling rustls-pki-types v1.10.1
   Compiling utf16_iter v1.0.5
   Compiling utf8_iter v1.0.4
   Compiling schemars v0.8.21
   Compiling heck v0.4.1
   Compiling signature v2.2.0
   Compiling icu_normalizer_data v1.5.0
   Compiling strum_macros v0.24.3
   Compiling icu_normalizer v1.5.0
   Compiling ed25519 v2.2.3
   Compiling opentelemetry v0.22.0
   Compiling arbitrary v1.4.1
   Compiling enum-map v2.7.3
   Compiling prost-derive v0.12.6
   Compiling darling_macro v0.20.10
   Compiling tower v0.4.13
   Compiling anstyle-parse v0.2.6
   Compiling concurrent-queue v2.5.0
   Compiling tokio-io-timeout v1.2.0
   Compiling async-stream-impl v0.3.6
   Compiling ordered-float v4.5.0
   Compiling serde_derive_internals v0.29.1
   Compiling block-padding v0.3.3
   Compiling colorchoice v1.0.3
   Compiling parking v2.2.1
   Compiling matchit v0.7.3
   Compiling foreign-types-shared v0.1.1
   Compiling anstyle v1.0.10
   Compiling anstyle-query v1.1.2
   Compiling glob v0.3.1
   Compiling openssl v0.10.68
   Compiling is_terminal_polyfill v1.70.1
   Compiling sync_wrapper v0.1.2
   Compiling anstream v0.6.18
   Compiling schemars_derive v0.8.21
   Compiling opentelemetry_sdk v0.22.1
   Compiling foreign-types v0.3.2
   Compiling inout v0.1.3
   Compiling async-stream v0.3.6
   Compiling hyper-timeout v0.4.1
   Compiling prost v0.12.6
   Compiling darling v0.20.10
   Compiling uint v0.9.5
   Compiling near-primitives-core v0.23.0
   Compiling ed25519-dalek v2.1.1
   Compiling strum v0.24.1
   Compiling idna_adapter v1.2.0
   Compiling fixed-hash v0.7.0
   Compiling form_urlencoded v1.2.1
   Compiling openssl-macros v0.1.1
   Compiling http v1.2.0
   Compiling json_comments v0.2.2
   Compiling rustix v0.38.42
   Compiling protobuf v2.28.0
   Compiling winnow v0.5.40
   Compiling fastrand v2.3.0
   Compiling near-config-utils v0.23.0
   Compiling idna v1.0.3
   Compiling toml_edit v0.19.15
   Compiling primitive-types v0.10.1
   Compiling tonic v0.11.0
   Compiling secp256k1 v0.27.0
   Compiling cipher v0.4.4
   Compiling actix-rt v2.10.0
   Compiling actix-macros v0.2.4
   Compiling actix_derive v0.6.2
   Compiling blake2 v0.10.6
   Compiling hmac v0.12.1
   Compiling proc-macro-error-attr v1.0.4
   Compiling clap_lex v0.7.4
   Compiling adler2 v2.0.0
   Compiling ryu v1.0.18
   Compiling arrayvec v0.7.6
   Compiling prometheus v0.13.4
   Compiling itoa v1.0.14
   Compiling near-stdx v0.23.0
   Compiling linux-raw-sys v0.4.14
   Compiling zstd-safe v7.2.1
   Compiling near-crypto v0.23.0
   Compiling clap_builder v4.5.23
   Compiling miniz_oxide v0.8.0
   Compiling actix v0.13.5
   Compiling opentelemetry-proto v0.5.0
   Compiling proc-macro-crate v1.3.1
   Compiling url v2.5.4
   Compiling http-body v1.0.1
   Compiling event-listener v5.3.1
   Compiling clap_derive v4.5.18
   Compiling sha1 v0.10.6
   Compiling zvariant_utils v1.0.1
   Compiling proc-macro-error v1.0.4
   Compiling crc32fast v1.4.2
   Compiling io-lifetimes v1.0.11
   Compiling reed-solomon-erasure v4.0.2
   Compiling opentelemetry-semantic-conventions v0.14.0
   Compiling event-listener v2.5.3
   Compiling unsafe-libyaml v0.2.11
   Compiling unicode-width v0.1.14
   Compiling native-tls v0.2.12
   Compiling cpufeatures v0.2.16
   Compiling serde_yaml v0.9.34+deprecated
   Compiling opentelemetry-otlp v0.15.0
   Compiling flate2 v1.0.35
   Compiling clap v4.5.23
   Compiling event-listener-strategy v0.5.3
   Compiling aes v0.8.4
   Compiling h2 v0.4.7
   Compiling serde_with_macros v3.11.0
   Compiling tracing-opentelemetry v0.23.0
   Compiling futures v0.3.31
   Compiling tracing-appender v0.2.3
   Compiling near-time v0.23.0
   Compiling near-rpc-error-core v0.23.0
   Compiling enumflags2_derive v0.7.10
   Compiling futures-lite v2.5.0
   Compiling dirs-sys-next v0.1.2
   Compiling polling v2.8.0
   Compiling memoffset v0.7.1
   Compiling dyn-clone v1.0.17
   Compiling siphasher v0.3.11
   Compiling untrusted v0.9.0
   Compiling rustix v0.37.27
   Compiling openssl-probe v0.1.5
   Compiling fastrand v1.9.0
   Compiling waker-fn v1.2.0
   Compiling keccak v0.1.5
   Compiling spin v0.9.8
   Compiling async-task v4.7.1
   Compiling itertools v0.10.5
   Compiling sha3 v0.10.8
   Compiling futures-lite v1.13.0
   Compiling chrono v0.4.39
   Compiling dirs-next v2.0.0
   Compiling enumflags2 v0.7.10
   Compiling near-rpc-error-macro v0.23.0
   Compiling near-o11y v0.23.0
   Compiling near-performance-metrics v0.23.0
   Compiling hyper v1.5.1
   Compiling serde_with v3.11.0
   Compiling zstd v0.13.2
   Compiling async-channel v2.3.1
   Compiling near-parameters v0.23.0
   Compiling async-lock v2.8.0
   Compiling zvariant_derive v3.15.2
   Compiling piper v0.2.4
   Compiling near-fmt v0.23.0
   Compiling bytesize v1.3.0
   Compiling smart-default v0.6.0
   Compiling near-async-derive v0.23.0
   Compiling filetime v0.2.25
   Compiling async-fs v1.6.0
   Compiling async-io v1.13.0
   Compiling signal-hook v0.3.17
   Compiling linux-raw-sys v0.3.8
   Compiling base64ct v1.6.0
   Compiling easy-ext v0.2.9
   Compiling password-hash v0.4.2
   Compiling near-primitives v0.23.0
   Compiling near-async v0.23.0
   Compiling zvariant v3.15.2
   Compiling blocking v1.6.1
   Compiling hyper-util v0.1.10
   Compiling interactive-clap-derive v0.2.10
   Compiling rustls-webpki v0.102.8
   Compiling Inflector v0.11.4
   Compiling http-body-util v0.1.2
   Compiling num-bigint v0.4.6
   Compiling backtrace v0.3.71
   Compiling socket2 v0.4.10
   Compiling vte_generate_state_changes v0.1.2
   Compiling ahash v0.8.11
   Compiling adler v1.0.2
   Compiling eyre v0.6.12
   Compiling portable-atomic v1.10.0
   Compiling gimli v0.28.1
   Compiling zeroize v1.8.1
   Compiling bitcoin-internals v0.2.0
   Compiling miniz_oxide v0.7.4
   Compiling addr2line v0.21.0
   Compiling vte v0.11.1
   Compiling num-rational v0.4.2
   Compiling near-chain-configs v0.23.0
   Compiling pbkdf2 v0.11.0
   Compiling zstd v0.11.2+zstd.1.5.2
   Compiling nix v0.26.4
   Compiling interactive-clap v0.2.10
   Compiling zbus_names v2.6.1
   Compiling bzip2 v0.4.4
   Compiling xattr v1.3.1
   Compiling async-executor v1.13.1
   Compiling webpki-roots v0.26.7
   Compiling async-broadcast v0.5.1
   Compiling zbus_macros v3.15.2
   Compiling serde_urlencoded v0.7.1
   Compiling rustls-pemfile v2.2.0
   Compiling tracing-error v0.2.1
   Compiling num-iter v0.1.45
   Compiling derivative v2.2.0
   Compiling async-recursion v1.1.1
   Compiling num-complex v0.4.6
   Compiling digest v0.9.0
   Compiling mio v0.8.11
   Compiling sync_wrapper v1.0.2
   Compiling ordered-stream v0.2.0
   Compiling xdg-home v1.3.0
   Compiling object v0.32.2
   Compiling encoding_rs v0.8.35
   Compiling tinyvec_macros v0.1.1
   Compiling owo-colors v3.5.0
   Compiling constant_time_eq v0.1.5
   Compiling rustc-demangle v0.1.24
   Compiling ipnet v2.10.1
   Compiling indenter v0.3.3
   Compiling uuid v0.8.2
   Compiling option-ext v0.2.0
   Compiling radium v0.7.0
   Compiling dirs-sys v0.4.1
   Compiling zip v0.6.6
   Compiling ureq v2.12.1
   Compiling color-spantrace v0.2.1
   Compiling tinyvec v1.8.0
   Compiling zbus v3.15.2
   Compiling signal-hook-mio v0.2.4
   Compiling num v0.4.3
   Compiling tar v0.4.43
   Compiling near-jsonrpc-primitives v0.23.0
   Compiling vt100 v0.15.2
   Compiling near-abi v0.4.3
   Compiling uriparse v0.6.4
   Compiling phf_shared v0.10.0
   Compiling console v0.15.8
   Compiling near_schemafy_core v0.7.0
   Compiling hkdf v0.12.4
   Compiling cbc v0.1.2
   Compiling serde_spanned v0.6.8
   Compiling scroll_derive v0.11.1
   Compiling crypto-mac v0.9.1
   Compiling block-buffer v0.9.0
   Compiling fs2 v0.4.3
   Compiling is-docker v0.2.0
   Compiling csv-core v0.1.11
   Compiling pin-project-lite v0.2.15
   Compiling minimal-lexical v0.2.1
   Compiling iana-time-zone v0.1.61
   Compiling rust_decimal v1.36.0
   Compiling fallible-iterator v0.2.0
   Compiling near-sandbox-utils v0.8.0
   Compiling number_prefix v0.4.0
   Compiling opaque-debug v0.3.1
   Compiling tap v1.0.1
   Compiling camino v1.1.9
   Compiling same-file v1.0.6
   Compiling precomputed-hash v0.1.1
   Compiling is_executable v0.1.2
   Compiling hex v0.3.2
   Compiling new_debug_unreachable v1.0.6
   Compiling hex-conservative v0.1.2
   Compiling unicode-width v0.2.0
   Compiling unicode-segmentation v1.12.0
   Compiling newline-converter v0.3.0
   Compiling indicatif v0.17.9
   Compiling bitcoin_hashes v0.13.0
   Compiling string_cache v0.8.7
   Compiling binary-install v0.2.0
   Compiling walkdir v2.5.0
   Compiling wyz v0.5.1
   Compiling sha2 v0.9.9
   Compiling nom v7.1.3
   Compiling csv v1.3.1
   Compiling is-wsl v0.4.0
   Compiling scroll v0.11.0
   Compiling hmac v0.9.0
   Compiling secret-service v3.1.0
   Compiling near_schemafy_lib v0.7.0
   Compiling hashbrown v0.14.5
   Compiling crossterm v0.25.0
   Compiling unicode-normalization v0.1.22
   Compiling color-eyre v0.6.3
   Compiling dirs v5.0.1
   Compiling debugid v0.7.3
   Compiling near-token v0.2.1
   Compiling term v0.7.0
   Compiling tempfile v3.14.0
   Compiling brownstone v1.1.0
   Compiling fuzzy-matcher v0.3.7
   Compiling linux-keyutils v0.2.4
   Compiling fxhash v0.2.1
   Compiling is-terminal v0.4.13
   Compiling memmap2 v0.5.10
   Compiling prettyplease v0.1.25
   Compiling bs58 v0.5.1
   Compiling joinery v2.1.0
   Compiling xml-rs v0.8.24
   Compiling funty v2.0.0
   Compiling smawk v0.3.2
   Compiling unicode-linebreak v0.1.5
   Compiling shell-escape v0.1.5
   Compiling indent_write v2.2.0
   Compiling pathdiff v0.2.3
   Compiling home v0.5.9
   Compiling encode_unicode v1.0.0
   Compiling plain v0.2.3
   Compiling names v0.14.0
   Compiling scroll v0.10.2
   Compiling prettytable v0.10.0
   Compiling pdb v0.7.0
   Compiling goblin v0.5.4
   Compiling open v5.3.1
   Compiling nom-supreme v0.6.0
   Compiling textwrap v0.16.1
   Compiling elementtree v0.7.0
   Compiling bitvec v1.0.1
   Compiling symbolic-common v8.8.0
   Compiling inquire v0.7.5
   Compiling keyring v2.3.3
   Compiling shellexpand v3.1.0
   Compiling bip39 v2.1.0
   Compiling near-abi-client-impl v0.1.1
   Compiling wasmparser v0.211.1
   Compiling slipped10 v0.4.6
   Compiling toml v0.8.19
   Compiling tracing-indicatif v0.3.8
   Compiling gimli v0.26.2
   Compiling near-gas v0.2.5
   Compiling zip v0.5.13
   Compiling env_filter v0.1.2
   Compiling cargo-platform v0.1.9
   Compiling linked-hash-map v0.5.6
   Compiling smart-default v0.7.1
   Compiling near-sandbox-utils v0.9.0
   Compiling near-sdk-macros v5.6.0
   Compiling lazycell v1.3.0
   Compiling easy-ext v1.0.2
   Compiling shell-words v1.1.0
   Compiling humantime v2.1.0
   Compiling wasmparser v0.83.0
   Compiling dmsort v1.0.2
   Compiling env_logger v0.11.5
   Compiling cargo_metadata v0.18.1
   Compiling symbolic-debuginfo v8.8.0
   Compiling near-abi-client-macros v0.1.1
   Compiling near-workspaces v0.11.1
   Compiling strum_macros v0.26.4
   Compiling jsonptr v0.4.7
   Compiling colored v2.2.0
   Compiling atty v0.2.14
   Compiling libloading v0.8.6
   Compiling near-sandbox-utils v0.12.0
   Compiling convert_case v0.5.0
   Compiling strum v0.26.3
   Compiling dunce v1.0.5
   Compiling near-abi-client v0.1.1
   Compiling json-patch v2.0.0
   Compiling tokio-retry v0.3.0
   Compiling near-token v0.3.0
   Compiling near-gas v0.3.0
   Compiling near-sys v0.2.2
   Compiling near-sdk v5.6.0
   Compiling crypto-hash v0.3.4
   Compiling cargo-util v0.1.2
   Compiling tokio-native-tls v0.3.1
   Compiling hyper-tls v0.6.0
   Compiling reqwest v0.12.9
   Compiling near-jsonrpc-client v0.10.1
   Compiling near-socialdb-client v0.3.2
   Compiling near-cli-rs v0.11.1
   Compiling cargo-near v0.6.4
   Compiling chat_contract_tests v0.0.1 (/home/runner/work/polyglot/polyglot/apps/chat/contract/tests)
    Finished `release` profile [optimized] target(s) in 4m 29s
     Running `/home/runner/work/polyglot/polyglot/workspace/target/release/chat_contract_tests`
Installed near-sandbox into /home/runner/work/polyglot/polyglot/workspace/target/release/build/near-sandbox-utils-c39df2faf0b47791/out/.near/near-sandbox-1.40.0_7dd0b5993577f592be15eb102e5a3da37be66271/near-sandbox


new: ExecutionFinalResult {
    total_gas_burnt: NearGas {
        inner: 1641007093783,
    },
    transaction: ExecutionOutcome {
        transaction_hash: 8ruir2qaApGhPN358CyoSKrz7h14wTn6Bu1MAeh16BWx,
        block_hash: ATVHG7k8YbREFffQiHPNtbum8NWcrWPL4nfhPPTvoj87,
        logs: [],
        receipt_ids: [
            FGFvVCboeuuJEJr5uhcSMUZkuyPJFSzWifP6B8YKYzEj,
        ],
        gas_burnt: NearGas {
            inner: 308066207802,
        },
        tokens_burnt: NearToken {
            inner: 30806620780200000000,
        },
        executor_id: AccountId(
            "dev-20250113224926-42512702960140",
        ),
        status: SuccessReceiptId(FGFvVCboeuuJEJr5uhcSMUZkuyPJFSzWifP6B8YKYzEj),
    },
    receipts: [
        ExecutionOutcome {
            transaction_hash: FGFvVCboeuuJEJr5uhcSMUZkuyPJFSzWifP6B8YKYzEj,
            block_hash: ATVHG7k8YbREFffQiHPNtbum8NWcrWPL4nfhPPTvoj87,
            logs: [],
            receipt_ids: [
                FHoub7G4cXKiqik76bMmwRtEdZciWNaSGqJaszoezwBa,
            ],
            gas_burnt: NearGas {
                inner: 1332940885981,
            },
            tokens_burnt: NearToken {
                inner: 133294088598100000000,
            },
            executor_id: AccountId(
                "dev-20250113224926-42512702960140",
            ),
            status: SuccessValue(''),
        },
    ],
    status: SuccessValue(''),
}
total_gas_burnt_usd: 0.0010961927386470439
outcome (success: true):
  outcome_gas_burnt_usd: 0.000205788226811736
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.0008904045118353079
  outcome_tokens_burnt_usd: 0.0


claim_alias(contract, ''): ExecutionFinalResult {
    total_gas_burnt: NearGas {
        inner: 2162513357756,
    },
    transaction: ExecutionOutcome {
        transaction_hash: 2TRzMriwrYCNjgRc8SwSw49RXpA72FLmCCNwcRep3FmY,
        block_hash: FJPpgq8LXsHYccEb2CLhvpC69zLopjmYXWv61Jkh2W5C,
        logs: [],
        receipt_ids: [
            HNry1mwFMw8aCg8WGLT6xJuJM7ExDEw2H92fXfPxf5nz,
        ],
        gas_burnt: NearGas {
            inner: 308110926482,
        },
        tokens_burnt: NearToken {
            inner: 30811092648200000000,
        },
        executor_id: AccountId(
            "dev-20250113224926-42512702960140",
        ),
        status: SuccessReceiptId(HNry1mwFMw8aCg8WGLT6xJuJM7ExDEw2H92fXfPxf5nz),
    },
    receipts: [
        ExecutionOutcome {
            transaction_hash: HNry1mwFMw8aCg8WGLT6xJuJM7ExDEw2H92fXfPxf5nz,
            block_hash: FJPpgq8LXsHYccEb2CLhvpC69zLopjmYXWv61Jkh2W5C,
            logs: [],
            receipt_ids: [
                2JA6x7XgYwu9FvX4gdJpVEbzExRdXhEVveXJ6jLh8Xbp,
            ],
            gas_burnt: NearGas {
                inner: 1631219868774,
            },
            tokens_burnt: NearToken {
                inner: 163121986877400000000,
            },
            executor_id: AccountId(
                "dev-20250113224926-42512702960140",
            ),
            status: Failure(ActionError(ActionError { index: Some(0), kind: FunctionCallError(ExecutionError("Smart contract panicked: chat_contract.claim_alias / invalid alias")) })),
        },
        ExecutionOutcome {
            transaction_hash: 2JA6x7XgYwu9FvX4gdJpVEbzExRdXhEVveXJ6jLh8Xbp,
            block_hash: 4Q5s6xDEWY1M53k3Ffit6P8LExL8PiX1r7TG8J75uFt2,
            logs: [],
            receipt_ids: [],
            gas_burnt: NearGas {
                inner: 223182562500,
            },
            tokens_burnt: NearToken {
                inner: 0,
            },
            executor_id: AccountId(
                "dev-20250113224926-42512702960140",
            ),
            status: SuccessValue(''),
        },
    ],
    status: Failure(ActionError(ActionError { index: Some(0), kind: FunctionCallError(ExecutionError("Smart contract panicked: chat_contract.claim_alias / invalid alias")) })),
}
total_gas_burnt_usd: 0.001444558922981008
outcome (success: true):
  outcome_gas_burnt_usd: 0.000205818098889976
  outcome_tokens_burnt_usd: 0.0
outcome (success: false):
  outcome_gas_burnt_usd: 0.0010896548723410319
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.00014908595175
  outcome_tokens_burnt_usd: 0.0


dev_create_account(account1): Account {
    id: AccountId(
        "dev-20250113224928-51575239149807",
    ),
}


generate_cid_borsh(account1): ViewResultDetails { result: [59, 0, 0, 0, 98, 97, 102, 107, 114, 101, 105, 104, 100, 119, 100, 99, 101, 102, 103, 104, 52, 100, 113, 107, 106, 118, 54, 55, 117, 122, 99, 109, 119, 55, 111, 106, 101, 101, 54, 120, 101, 100, 122, 100, 101, 116, 111, 106, 117, 122, 106, 101, 118, 116, 101, 110, 120, 113, 117, 118, 121, 107, 117], logs: [] }


claim_alias(account1, alias1): ExecutionFinalResult {
    total_gas_burnt: NearGas {
        inner: 3550509994724,
    },
    transaction: ExecutionOutcome {
        transaction_hash: F8LfTNjFWGrrJgyTXvJH1VuntJgHnwnVNzguSiTmrBz8,
        block_hash: BFSzBwXPnmqB4vrkfPHb9FfACEtxkwcS2uxmB66218Q9,
        logs: [],
        receipt_ids: [
            6M8UZvUbQmc8G5E7NLLuAo2ECodiZ6879ccU2Mso6Ldf,
        ],
        gas_burnt: NearGas {
            inner: 308124342086,
        },
        tokens_burnt: NearToken {
            inner: 30812434208600000000,
        },
        executor_id: AccountId(
            "dev-20250113224928-51575239149807",
        ),
        status: SuccessReceiptId(6M8UZvUbQmc8G5E7NLLuAo2ECodiZ6879ccU2Mso6Ldf),
    },
    receipts: [
        ExecutionOutcome {
            transaction_hash: 6M8UZvUbQmc8G5E7NLLuAo2ECodiZ6879ccU2Mso6Ldf,
            block_hash: 4AVEKWbfNKyqVPCaEjWzRr1tJ9FT3VRMAP9JEtkYiuF5,
            logs: [
                "22:49:29 \u{1b}[94md\u{1b}[39m #1 chat_contract.claim_alias / { alias = \"alias1\"; block_timestamp = 1736808569906097741; signer_account_id = \"dev-20250113224928-51575239149807\"; predecessor_account_id = \"dev-20250113224928-51575239149807\" }\n22:49:29 \u{1b}[94md\u{1b}[39m #2 chat_contract.claim_alias / { account_alias = None }",
            ],
            receipt_ids: [
                5k1XiR4ayhLgDrmuejd83sZbFnPvxsTZ26SHHWW8cSEM,
            ],
            gas_burnt: NearGas {
                inner: 3019203090138,
            },
            tokens_burnt: NearToken {
                inner: 301920309013800000000,
            },
            executor_id: AccountId(
                "dev-20250113224926-42512702960140",
            ),
            status: SuccessValue(''),
        },
        ExecutionOutcome {
            transaction_hash: 5k1XiR4ayhLgDrmuejd83sZbFnPvxsTZ26SHHWW8cSEM,
            block_hash: 97P3VFdXak1NEYwGtJNDkZWemqqRdDsSbjUq4wLJ9sRE,
            logs: [],
            receipt_ids: [],
            gas_burnt: NearGas {
                inner: 223182562500,
            },
            tokens_burnt: NearToken {
                inner: 0,
            },
            executor_id: AccountId(
                "dev-20250113224928-51575239149807",
            ),
            status: SuccessValue(''),
        },
    ],
    status: SuccessValue(''),
}
total_gas_burnt_usd: 0.002371740676475632
outcome (success: true):
  outcome_gas_burnt_usd: 0.000205827060513448
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.002016827664212184
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.00014908595175
  outcome_tokens_burnt_usd: 0.0


claim_alias(account1, alias1): ExecutionFinalResult {
    total_gas_burnt: NearGas {
        inner: 3701325414104,
    },
    transaction: ExecutionOutcome {
        transaction_hash: 7MA79Ntq6iPHHRBC7JEqaBGEmN9xQqvUB9y4zQfgZnLu,
        block_hash: 96PuwsecR21UshyzNK4xf9ZknfNueqES88ZZ7Pum6U7j,
        logs: [],
        receipt_ids: [
            2HBrNUm6tSv4TRvfshVrwHPDLuAdEWdsTCnBqRWZF4EY,
        ],
        gas_burnt: NearGas {
            inner: 308124342086,
        },
        tokens_burnt: NearToken {
            inner: 30812434208600000000,
        },
        executor_id: AccountId(
            "dev-20250113224928-51575239149807",
        ),
        status: SuccessReceiptId(2HBrNUm6tSv4TRvfshVrwHPDLuAdEWdsTCnBqRWZF4EY),
    },
    receipts: [
        ExecutionOutcome {
            transaction_hash: 2HBrNUm6tSv4TRvfshVrwHPDLuAdEWdsTCnBqRWZF4EY,
            block_hash: 2yxTyQjHr4CPav8jY2mYFLNb8PBR7ot162BbwvvkZn6P,
            logs: [
                "22:49:30 \u{1b}[94md\u{1b}[39m #1 chat_contract.claim_alias / { alias = \"alias1\"; block_timestamp = 1736808570916673108; signer_account_id = \"dev-20250113224928-51575239149807\"; predecessor_account_id = \"dev-20250113224928-51575239149807\" }\n22:49:30 \u{1b}[94md\u{1b}[39m #2 chat_contract.claim_alias / { account_alias = Some(\"alias1\") }",
            ],
            receipt_ids: [
                2SGd7T9zq51T3bSm25cjChkhMrAhwiQK8MqqMvTuiuFh,
            ],
            gas_burnt: NearGas {
                inner: 3170018509518,
            },
            tokens_burnt: NearToken {
                inner: 317001850951800000000,
            },
            executor_id: AccountId(
                "dev-20250113224926-42512702960140",
            ),
            status: SuccessValue(''),
        },
        ExecutionOutcome {
            transaction_hash: 2SGd7T9zq51T3bSm25cjChkhMrAhwiQK8MqqMvTuiuFh,
            block_hash: EvzmGBiCogAaZfx1BWuRitbMySg12QarrXNtQVo4hnzG,
            logs: [],
            receipt_ids: [],
            gas_burnt: NearGas {
                inner: 223182562500,
            },
            tokens_burnt: NearToken {
                inner: 0,
            },
            executor_id: AccountId(
                "dev-20250113224928-51575239149807",
            ),
            status: SuccessValue(''),
        },
    ],
    status: SuccessValue(''),
}
total_gas_burnt_usd: 0.002472485376621472
outcome (success: true):
  outcome_gas_burnt_usd: 0.000205827060513448
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.0021175723643580236
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.00014908595175
  outcome_tokens_burnt_usd: 0.0


get_account_info(account1): Some(
    (
        "alias1",
        1736808570916673108,
        0,
    ),
)


get_alias_map(account1, alias1): Some(
    {
        AccountId(
            "dev-20250113224928-51575239149807",
        ): (
            1736808570916673108,
            0,
        ),
    },
)


dev_create_account(account2): Account {
    id: AccountId(
        "dev-20250113224931-35117533399356",
    ),
}


claim_alias(alias2): ExecutionFinalResult {
    total_gas_burnt: NearGas {
        inner: 3798595421762,
    },
    transaction: ExecutionOutcome {
        transaction_hash: FknUFz58SaGFpis4Eg8coMK4HBjPB1wo3KUGtNwuGrPR,
        block_hash: 2q1AiU6SdPWBJoZoiy85AtxL1GCsayiQ4QugxDp3gUGd,
        logs: [],
        receipt_ids: [
            HVuRnb5qXu1G78Hetu7U7m35ed6z6gYAANBNWxMCbBeC,
        ],
        gas_burnt: NearGas {
            inner: 308124342086,
        },
        tokens_burnt: NearToken {
            inner: 30812434208600000000,
        },
        executor_id: AccountId(
            "dev-20250113224931-35117533399356",
        ),
        status: SuccessReceiptId(HVuRnb5qXu1G78Hetu7U7m35ed6z6gYAANBNWxMCbBeC),
    },
    receipts: [
        ExecutionOutcome {
            transaction_hash: HVuRnb5qXu1G78Hetu7U7m35ed6z6gYAANBNWxMCbBeC,
            block_hash: 3A4DhvNsGYVG5JDbvLY1uxcVyg9d4PkDPrtsjJ44V2hr,
            logs: [
                "22:49:32 \u{1b}[94md\u{1b}[39m #1 chat_contract.claim_alias / { alias = \"alias2\"; block_timestamp = 1736808572939065530; signer_account_id = \"dev-20250113224931-35117533399356\"; predecessor_account_id = \"dev-20250113224931-35117533399356\" }\n22:49:32 \u{1b}[94md\u{1b}[39m #2 chat_contract.claim_alias / { account_alias = None }",
            ],
            receipt_ids: [
                7bcNoDVXeKpuhsVrYkXt9qB1x9GAs4bkyrpXi16dpygo,
            ],
            gas_burnt: NearGas {
                inner: 3267288517176,
            },
            tokens_burnt: NearToken {
                inner: 326728851717600000000,
            },
            executor_id: AccountId(
                "dev-20250113224926-42512702960140",
            ),
            status: SuccessValue(''),
        },
        ExecutionOutcome {
            transaction_hash: 7bcNoDVXeKpuhsVrYkXt9qB1x9GAs4bkyrpXi16dpygo,
            block_hash: DC1cR46stDTJUGULGDaRstkBgTkL4S4VxVSkf6QPM2D3,
            logs: [],
            receipt_ids: [],
            gas_burnt: NearGas {
                inner: 223182562500,
            },
            tokens_burnt: NearToken {
                inner: 0,
            },
            executor_id: AccountId(
                "dev-20250113224931-35117533399356",
            ),
            status: SuccessValue(''),
        },
    ],
    status: SuccessValue(''),
}
total_gas_burnt_usd: 0.002537461741737016
outcome (success: true):
  outcome_gas_burnt_usd: 0.000205827060513448
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.0021825487294735682
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.00014908595175
  outcome_tokens_burnt_usd: 0.0


get_account_info(account2): Some(
    (
        "alias2",
        1736808572939065530,
        0,
    ),
)


get_alias_map_borsh(alias2): Some(
    {
        AccountId(
            "dev-20250113224931-35117533399356",
        ): (
            1736808572939065530,
            0,
        ),
    },
)


claim_alias(account2, alias1): ExecutionFinalResult {
    total_gas_burnt: NearGas {
        inner: 3988511801477,
    },
    transaction: ExecutionOutcome {
        transaction_hash: 99YRsi6iguT1uFZ5nhW2GrPQH9eZXkfZTvn8tUwM4xU,
        block_hash: 4bV17FUxxTgWNA2ecqRhRMKnHHjDZkkDTeV1LJsmkSX6,
        logs: [],
        receipt_ids: [
            S5XYkpXj3Co8FsfHAZUNUqHcqA43sKM9SRrBcqFtHcV,
        ],
        gas_burnt: NearGas {
            inner: 308124342086,
        },
        tokens_burnt: NearToken {
            inner: 30812434208600000000,
        },
        executor_id: AccountId(
            "dev-20250113224931-35117533399356",
        ),
        status: SuccessReceiptId(S5XYkpXj3Co8FsfHAZUNUqHcqA43sKM9SRrBcqFtHcV),
    },
    receipts: [
        ExecutionOutcome {
            transaction_hash: S5XYkpXj3Co8FsfHAZUNUqHcqA43sKM9SRrBcqFtHcV,
            block_hash: Ffy5t8iPzEA4apsTfNTPMJtE7pQY7rV88vhFazo4qDmq,
            logs: [
                "22:49:33 \u{1b}[94md\u{1b}[39m #1 chat_contract.claim_alias / { alias = \"alias1\"; block_timestamp = 1736808573950198734; signer_account_id = \"dev-20250113224931-35117533399356\"; predecessor_account_id = \"dev-20250113224931-35117533399356\" }\n22:49:33 \u{1b}[94md\u{1b}[39m #2 chat_contract.claim_alias / { account_alias = Some(\"alias2\") }",
            ],
            receipt_ids: [
                2nsLoZ1FZhsCM8t1QFcboBVpJ9JcmNq1nZcpm6D1mrDA,
            ],
            gas_burnt: NearGas {
                inner: 3457204896891,
            },
            tokens_burnt: NearToken {
                inner: 345720489689100000000,
            },
            executor_id: AccountId(
                "dev-20250113224926-42512702960140",
            ),
            status: SuccessValue(''),
        },
        ExecutionOutcome {
            transaction_hash: 2nsLoZ1FZhsCM8t1QFcboBVpJ9JcmNq1nZcpm6D1mrDA,
            block_hash: 8zC3pGwXazqer3dXSUT2maikoBJDMHcPWyqZtBeDVWqN,
            logs: [],
            receipt_ids: [],
            gas_burnt: NearGas {
                inner: 223182562500,
            },
            tokens_burnt: NearToken {
                inner: 0,
            },
            executor_id: AccountId(
                "dev-20250113224931-35117533399356",
            ),
            status: SuccessValue(''),
        },
    ],
    status: SuccessValue(''),
}
total_gas_burnt_usd: 0.002664325883386636
outcome (success: true):
  outcome_gas_burnt_usd: 0.000205827060513448
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.002309412871123188
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.00014908595175
  outcome_tokens_burnt_usd: 0.0


get_account_info(account2): Some(
    (
        "alias1",
        1736808573950198734,
        1,
    ),
)


get_alias_map(account2, alias1): Some(
    {
        AccountId(
            "dev-20250113224928-51575239149807",
        ): (
            1736808570916673108,
            0,
        ),
        AccountId(
            "dev-20250113224931-35117533399356",
        ): (
            1736808573950198734,
            1,
        ),
    },
)


get_alias_map(account2, alias2): Some(
    {},
)


claim_alias(account1, alias2): ExecutionFinalResult {
    total_gas_burnt: NearGas {
        inner: 3988499746385,
    },
    transaction: ExecutionOutcome {
        transaction_hash: 5mQwVPa2kAN5vwCydDGRWKCHD6wmXYyvgxYCArJYibzw,
        block_hash: fVML89cBdA1uAkwv2f15PvAjTuV1VArt5rU3YrRNmNx,
        logs: [],
        receipt_ids: [
            3WRKvBrnCFc3UbfeiqS4zhe8EVyLRewCASNUqKKV3CRi,
        ],
        gas_burnt: NearGas {
            inner: 308124342086,
        },
        tokens_burnt: NearToken {
            inner: 30812434208600000000,
        },
        executor_id: AccountId(
            "dev-20250113224928-51575239149807",
        ),
        status: SuccessReceiptId(3WRKvBrnCFc3UbfeiqS4zhe8EVyLRewCASNUqKKV3CRi),
    },
    receipts: [
        ExecutionOutcome {
            transaction_hash: 3WRKvBrnCFc3UbfeiqS4zhe8EVyLRewCASNUqKKV3CRi,
            block_hash: 6EscV8ibU4Tacv69hDAfxUp1HwEETXiRCM985Vd6G1f4,
            logs: [
                "22:49:34 \u{1b}[94md\u{1b}[39m #1 chat_contract.claim_alias / { alias = \"alias2\"; block_timestamp = 1736808574960100360; signer_account_id = \"dev-20250113224928-51575239149807\"; predecessor_account_id = \"dev-20250113224928-51575239149807\" }\n22:49:34 \u{1b}[94md\u{1b}[39m #2 chat_contract.claim_alias / { account_alias = Some(\"alias1\") }",
            ],
            receipt_ids: [
                3Nx9omgsudHx11LJAsbryLmpcWXJMiXftBoRo6xiUrHU,
            ],
            gas_burnt: NearGas {
                inner: 3457192841799,
            },
            tokens_burnt: NearToken {
                inner: 345719284179900000000,
            },
            executor_id: AccountId(
                "dev-20250113224926-42512702960140",
            ),
            status: SuccessValue(''),
        },
        ExecutionOutcome {
            transaction_hash: 3Nx9omgsudHx11LJAsbryLmpcWXJMiXftBoRo6xiUrHU,
            block_hash: 8mbwv7UC5uzxV37Z9QVcQgvKBSEPDZezZxLNsvUY4osi,
            logs: [],
            receipt_ids: [],
            gas_burnt: NearGas {
                inner: 223182562500,
            },
            tokens_burnt: NearToken {
                inner: 0,
            },
            executor_id: AccountId(
                "dev-20250113224928-51575239149807",
            ),
            status: SuccessValue(''),
        },
    ],
    status: SuccessValue(''),
}
total_gas_burnt_usd: 0.00266431783058518
outcome (success: true):
  outcome_gas_burnt_usd: 0.000205827060513448
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.002309404818321732
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.00014908595175
  outcome_tokens_burnt_usd: 0.0


get_account_info(account1): Some(
    (
        "alias2",
        1736808574960100360,
        0,
    ),
)


get_alias_map(account1, alias2): Some(
    {
        AccountId(
            "dev-20250113224928-51575239149807",
        ): (
            1736808574960100360,
            0,
        ),
    },
)


get_alias_map(account1, alias1): Some(
    {
        AccountId(
            "dev-20250113224931-35117533399356",
        ): (
            1736808573950198734,
            1,
        ),
    },
)


claim_alias(account1, alias1): ExecutionFinalResult {
    total_gas_burnt: NearGas {
        inner: 3990862558493,
    },
    transaction: ExecutionOutcome {
        transaction_hash: 3jHhsvQbpdWzzGfnt2dTQiXVmy8bEFw1PQpnANPcgFQM,
        block_hash: DjnbwZmnfCkW4CW7pN4AvGvT7oT4EBnECGGnrWiKiR6n,
        logs: [],
        receipt_ids: [
            9Ehm91pXWshrVjW8FG64aGdvymQzcdXSaUTRAFKBNyoB,
        ],
        gas_burnt: NearGas {
            inner: 308124342086,
        },
        tokens_burnt: NearToken {
            inner: 30812434208600000000,
        },
        executor_id: AccountId(
            "dev-20250113224928-51575239149807",
        ),
        status: SuccessReceiptId(9Ehm91pXWshrVjW8FG64aGdvymQzcdXSaUTRAFKBNyoB),
    },
    receipts: [
        ExecutionOutcome {
            transaction_hash: 9Ehm91pXWshrVjW8FG64aGdvymQzcdXSaUTRAFKBNyoB,
            block_hash: 6Te1qFXbg5kv7mytSJ59wCwGtNHq8ps2SC6vbPQAZ3DP,
            logs: [
                "22:49:35 \u{1b}[94md\u{1b}[39m #1 chat_contract.claim_alias / { alias = \"alias1\"; block_timestamp = 1736808575970348628; signer_account_id = \"dev-20250113224928-51575239149807\"; predecessor_account_id = \"dev-20250113224928-51575239149807\" }\n22:49:35 \u{1b}[94md\u{1b}[39m #2 chat_contract.claim_alias / { account_alias = Some(\"alias2\") }",
            ],
            receipt_ids: [
                CDm3M1NLePnZzdr1T9KSyPWH3SswHJG3LgUaHDfmV7Xt,
            ],
            gas_burnt: NearGas {
                inner: 3459555653907,
            },
            tokens_burnt: NearToken {
                inner: 345955565390700000000,
            },
            executor_id: AccountId(
                "dev-20250113224926-42512702960140",
            ),
            status: SuccessValue(''),
        },
        ExecutionOutcome {
            transaction_hash: CDm3M1NLePnZzdr1T9KSyPWH3SswHJG3LgUaHDfmV7Xt,
            block_hash: 4rxZj5U8MWpS55wNifQdpUULKgTtQ6eNvbVHqQ9rGXyh,
            logs: [],
            receipt_ids: [],
            gas_burnt: NearGas {
                inner: 223182562500,
            },
            tokens_burnt: NearToken {
                inner: 0,
            },
            executor_id: AccountId(
                "dev-20250113224928-51575239149807",
            ),
            status: SuccessValue(''),
        },
    ],
    status: SuccessValue(''),
}
total_gas_burnt_usd: 0.002665896189073324
outcome (success: true):
  outcome_gas_burnt_usd: 0.000205827060513448
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.0023109831768098757
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.00014908595175
  outcome_tokens_burnt_usd: 0.0


get_account_info(account1): Some(
    (
        "alias1",
        1736808575970348628,
        1,
    ),
)


get_alias_map(account1, alias1): Some(
    {
        AccountId(
            "dev-20250113224928-51575239149807",
        ): (
            1736808575970348628,
            1,
        ),
        AccountId(
            "dev-20250113224931-35117533399356",
        ): (
            1736808573950198734,
            0,
        ),
    },
)


get_alias_map(account1, alias2): Some(
    {},
)
In [ ]:
{ pwsh ../apps/spiral/temp/build.ps1 } | Invoke-Block
00:00:00 v #1 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"; options = { command = dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = Some <fun:compiler@87-4>; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:00:00 v #2 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #2 > 00:00:00 d #1 pwd: /home/runner/work/polyglot/polyglot
00:00:00 v #3 > 00:00:00 d #2 dllPath: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release
00:00:00 v #4 > 00:00:00 d #3 targetDir: /home/runner/work/polyglot/polyglot/target/spiral_Eval
00:00:00 v #3 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #4 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #5 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #6 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #7 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #8 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #9 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #10 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #11 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #12 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #13 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #14 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #15 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #16 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #17 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #18 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #19 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #20 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #21 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #22 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #23 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #24 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #25 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #26 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #27 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #28 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #29 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #30 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #31 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #32 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #33 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #34 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #35 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #36 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #37 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #38 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #39 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #40 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #5 > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:00 v #41 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:01 v #42 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:01 v #1 Supervisor.sendJson / port: 13805 / json: {"Ping":true} / result:
00:00:01 v #2 Supervisor.awaitCompiler / Ping / result: 'Some null' / port: 13805 / retry: 1
00:00:01 v #6 > Server bound to: http://localhost:13805
00:00:01 d #7 runtime.execute_with_options_async / { file_name = ../../../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path cube.dib"; options = { command = ../../../../deps/spiral/workspace/target/release/spiral dib --path cube.dib; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:01 v #8 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "cube.dib"])) }
00:00:01 v #9 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/cube.dib", "--output-path", "/home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/cube.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/cube.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/cube.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:00:02 v #10 > >
00:00:02 v #11 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:02 v #12 > > │ # cube
00:00:02 v #13 > >
00:00:02 v #14 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:02 v #15 > > │ ## cube
00:00:05 v #16 > >
00:00:05 v #17 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:05 v #18 > > open System
00:00:05 v #19 > > open System.Threading.Tasks
00:00:05 v #20 > > open System.Text
00:00:05 v #21 > >
00:00:05 v #22 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:05 v #23 > > let width = 160
00:00:05 v #24 > > let height = 44
00:00:05 v #25 > > let backgroundChar = '.'
00:00:05 v #26 > > let distanceFromCam = 100.0
00:00:05 v #27 > > let k1 = 40.0
00:00:05 v #28 > > let incrementSpeed = 0.6
00:00:05 v #29 > >
00:00:05 v #30 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:05 v #31 > > │ ### get_width
00:00:06 v #32 > >
00:00:06 v #33 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 v #34 > > inl get_width () =
00:00:06 v #35 > >     160i32
00:00:09 v #36 > >
00:00:09 v #37 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:09 v #38 > > │ ### get_height
00:00:09 v #39 > >
00:00:09 v #40 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 v #41 > > inl get_height () =
00:00:09 v #42 > >     44i32
00:00:10 v #43 > >
00:00:10 v #44 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:10 v #45 > > │ ### get_background_char
00:00:10 v #46 > >
00:00:10 v #47 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 v #48 > > inl get_background_char () =
00:00:10 v #49 > >     '.'
00:00:10 v #50 > >
00:00:10 v #51 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:10 v #52 > > │ ### get_distance_from_cam
00:00:10 v #53 > >
00:00:10 v #54 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 v #55 > > inl get_distance_from_cam () =
00:00:10 v #56 > >     100f64
00:00:10 v #57 > >
00:00:10 v #58 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:10 v #59 > > │ ### get_k1
00:00:10 v #60 > >
00:00:10 v #61 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 v #62 > > inl get_k1 () =
00:00:10 v #63 > >     40f64
00:00:10 v #64 > >
00:00:10 v #65 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:10 v #66 > > │ ### get_increment_speed
00:00:10 v #67 > >
00:00:10 v #68 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 v #69 > > inl get_increment_speed () =
00:00:10 v #70 > >     0.6f64
00:00:10 v #71 > >
00:00:10 v #72 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:10 v #73 > > │ ### rotation
00:00:10 v #74 > >
00:00:10 v #75 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:10 v #76 > > type Rotation = { a: float; b: float; c: float }
00:00:11 v #77 > >
00:00:11 v #78 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 v #79 > > type rotation =
00:00:11 v #80 > >     {
00:00:11 v #81 > >         a : f64
00:00:11 v #82 > >         b : f64
00:00:11 v #83 > >         c : f64
00:00:11 v #84 > >     }
00:00:11 v #85 > >
00:00:11 v #86 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:11 v #87 > > │ ### cube
00:00:11 v #88 > >
00:00:11 v #89 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:11 v #90 > > type Cube = { cubeWidth: float; horizontalOffset: float }
00:00:11 v #91 > >
00:00:11 v #92 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 v #93 > > type cube =
00:00:11 v #94 > >     {
00:00:11 v #95 > >         cube_width : f64
00:00:11 v #96 > >         horizontal_offset : f64
00:00:11 v #97 > >     }
00:00:11 v #98 > >
00:00:11 v #99 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:11 v #100 > > │ ### get_cubes
00:00:11 v #101 > >
00:00:11 v #102 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:11 v #103 > > let cubes = [[
00:00:11 v #104 > >     { cubeWidth = 20.0; horizontalOffset = -40.0 }
00:00:11 v #105 > >     { cubeWidth = 10.0; horizontalOffset = 10.0 }
00:00:11 v #106 > >     { cubeWidth = 5.0; horizontalOffset = 40.0 }
00:00:11 v #107 > > ]]
00:00:11 v #108 > >
00:00:11 v #109 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 v #110 > > inl get_cubes () : list cube =
00:00:11 v #111 > >     [[
00:00:11 v #112 > >         { cube_width = 20; horizontal_offset = -40 }
00:00:11 v #113 > >         { cube_width = 10; horizontal_offset = 10 }
00:00:11 v #114 > >         { cube_width = 5; horizontal_offset = 40 }
00:00:11 v #115 > >     ]]
00:00:12 v #116 > >
00:00:12 v #117 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:12 v #118 > > │ ### calculate_x
00:00:12 v #119 > >
00:00:12 v #120 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:12 v #121 > > let calculateX i j k (rot: Rotation) =
00:00:12 v #122 > >     let a, b, c = rot.a, rot.b, rot.c
00:00:12 v #123 > >     j * sin a * sin b * cos c - k * cos a * sin b * cos c +
00:00:12 v #124 > >     j * cos a * sin c + k * sin a * sin c + i * cos b * cos c
00:00:12 v #125 > >
00:00:12 v #126 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:12 v #127 > > inl calculate_x i j k (rot : rotation) =
00:00:12 v #128 > >     inl a, b, c = rot.a, rot.b, rot.c
00:00:12 v #129 > >     j * sin a * sin b * cos c - k * cos a * sin b * cos c +
00:00:12 v #130 > >     j * cos a * sin c + k * sin a * sin c + i * cos b * cos c
00:00:12 v #131 > >
00:00:12 v #132 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:12 v #133 > > │ ### calculate_y
00:00:12 v #134 > >
00:00:12 v #135 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:12 v #136 > > let calculateY i j k (rot: Rotation) =
00:00:12 v #137 > >     let a, b, c = rot.a, rot.b, rot.c
00:00:12 v #138 > >     j * cos a * cos c + k * sin a * cos c -
00:00:12 v #139 > >     j * sin a * sin b * sin c + k * cos a * sin b * sin c -
00:00:12 v #140 > >     i * cos b * sin c
00:00:12 v #141 > >
00:00:12 v #142 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:12 v #143 > > inl calculate_y i j k (rot : rotation) =
00:00:12 v #144 > >     inl a, b, c = rot.a, rot.b, rot.c
00:00:12 v #145 > >     j * cos a * cos c + k * sin a * cos c -
00:00:12 v #146 > >     j * sin a * sin b * sin c + k * cos a * sin b * sin c -
00:00:12 v #147 > >     i * cos b * sin c
00:00:12 v #148 > >
00:00:12 v #149 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:12 v #150 > > │ ### calculate_z
00:00:12 v #151 > >
00:00:12 v #152 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:12 v #153 > > let calculateZ i j k (rot: Rotation) =
00:00:12 v #154 > >     let a, b, c = rot.a, rot.b, rot.c
00:00:12 v #155 > >     k * cos a * cos b - j * sin a * cos b + i * sin b
00:00:12 v #156 > >
00:00:12 v #157 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:12 v #158 > > inl calculate_z i j k (rot : rotation) =
00:00:12 v #159 > >     inl a, b, c = rot.a, rot.b, rot.c
00:00:12 v #160 > >     k * cos a * cos b - j * sin a * cos b + i * sin b
00:00:12 v #161 > >
00:00:12 v #162 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:12 v #163 > > │ ### calculate_for_surface
00:00:12 v #164 > >
00:00:12 v #165 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:12 v #166 > > let calculateForSurface cubeX cubeY cubeZ ch rot horizontalOffset =
00:00:12 v #167 > >     let x = calculateX cubeX cubeY cubeZ rot
00:00:12 v #168 > >     let y = calculateY cubeX cubeY cubeZ rot
00:00:12 v #169 > >     let z = calculateZ cubeX cubeY cubeZ rot + distanceFromCam
00:00:12 v #170 > >     let ooz = 1.0 / z
00:00:12 v #171 > >     let xp = int (float width / 2.0 + horizontalOffset + k1 * ooz * x * 2.0)
00:00:12 v #172 > >     let yp = int (float height / 2.0 + k1 * ooz * y)
00:00:12 v #173 > >     let idx = xp + yp * width
00:00:12 v #174 > >     if idx >= 0 && idx < width * height
00:00:12 v #175 > >     then Some (idx, (ooz, ch))
00:00:12 v #176 > >     else None
00:00:12 v #177 > >
00:00:12 v #178 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:12 v #179 > > let calculate_for_surface cube_x cube_y cube_z ch rot horizontal_offset =
00:00:12 v #180 > >     inl x = calculate_x cube_x cube_y cube_z rot
00:00:12 v #181 > >     inl y = calculate_y cube_x cube_y cube_z rot
00:00:12 v #182 > >     inl z = calculate_z cube_x cube_y cube_z rot + get_distance_from_cam ()
00:00:12 v #183 > >     inl ooz = 1.0 / z
00:00:12 v #184 > >     inl xp = i32 (f64 (get_width ()) / 2.0 + horizontal_offset + get_k1 () * ooz
00:00:12 v #185 > > * x * 2.0)
00:00:12 v #186 > >     inl yp = i32 (f64 (get_height ()) / 2.0 + get_k1 () * ooz * y)
00:00:12 v #187 > >     inl idx = xp + yp * get_width ()
00:00:12 v #188 > >     if idx >= 0 && idx < get_width () * get_height ()
00:00:12 v #189 > >     then Some (idx, (ooz, ch))
00:00:12 v #190 > >     else None
00:00:13 v #191 > >
00:00:13 v #192 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:13 v #193 > > │ ### frange
00:00:13 v #194 > >
00:00:13 v #195 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:13 v #196 > > let frange start stop step =
00:00:13 v #197 > >     seq {
00:00:13 v #198 > >         let mutable current = start
00:00:13 v #199 > >         while (step > 0.0 && current < stop) || (step < 0.0 && current > stop)
00:00:13 v #200 > > do
00:00:13 v #201 > >             yield current
00:00:13 v #202 > >             current <- current + step
00:00:13 v #203 > >     }
00:00:13 v #204 > >
00:00:13 v #205 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:13 v #206 > > inl frange start stop step : _ f64 =
00:00:13 v #207 > >     fun () =>
00:00:13 v #208 > >         inl current = mut start
00:00:13 v #209 > >         loopw.while
00:00:13 v #210 > >             fun () => (step > 0f64 && *current < stop) || (step < 0 && *current
00:00:13 v #211 > > > stop)
00:00:13 v #212 > >             fun () =>
00:00:13 v #213 > >                 *current |> yield
00:00:13 v #214 > >                 current <- *current + step
00:00:13 v #215 > >     |> seq.new_seq
00:00:13 v #216 > >
00:00:13 v #217 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:13 v #218 > > │ ### get_cube_points
00:00:13 v #219 > >
00:00:13 v #220 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:13 v #221 > > let getCubePoints (cube: Cube) rot =
00:00:13 v #222 > >     let cw = cube.cubeWidth
00:00:13 v #223 > >     let ho = cube.horizontalOffset
00:00:13 v #224 > >     let cubeRange = frange (-cw) cw incrementSpeed
00:00:13 v #225 > >     seq {
00:00:13 v #226 > >         for cubeX in cubeRange do
00:00:13 v #227 > >             for cubeY in cubeRange do
00:00:13 v #228 > >                 let x =
00:00:13 v #229 > >                     [[
00:00:13 v #230 > >                         calculateForSurface cubeX cubeY (-cw) '@' rot ho
00:00:13 v #231 > >                         calculateForSurface cw cubeY cubeX '$' rot ho
00:00:13 v #232 > >                         calculateForSurface (-cw) cubeY (-cubeX) '~' rot ho
00:00:13 v #233 > >                         calculateForSurface (-cubeX) cubeY cw '#' rot ho
00:00:13 v #234 > >                         calculateForSurface cubeX (-cw) (-cubeY) ';' rot ho
00:00:13 v #235 > >                         calculateForSurface cubeX cw cubeY '+' rot ho
00:00:13 v #236 > >                     ]]
00:00:13 v #237 > >                     |> Seq.choose id
00:00:13 v #238 > >                 yield! x
00:00:13 v #239 > >     }
00:00:13 v #240 > >
00:00:13 v #241 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:13 v #242 > > inl get_cube_points (cube : cube) rot =
00:00:13 v #243 > >     inl cw = cube.cube_width
00:00:13 v #244 > >     inl ho = cube.horizontal_offset
00:00:13 v #245 > >     inl cube_range = frange -cw cw (get_increment_speed ())
00:00:13 v #246 > >     inl cube_range = join cube_range
00:00:13 v #247 > >     inl get cube_x cube_y =
00:00:13 v #248 > >         [[
00:00:13 v #249 > >             calculate_for_surface cube_x cube_y -cw ';' rot ho
00:00:13 v #250 > >             calculate_for_surface cw cube_y cube_x '\\' rot ho
00:00:13 v #251 > >             calculate_for_surface -cw cube_y -cube_x '/' rot ho
00:00:13 v #252 > >             calculate_for_surface -cube_x cube_y cw '=' rot ho
00:00:13 v #253 > >             calculate_for_surface cube_x -cw -cube_y '>' rot ho
00:00:13 v #254 > >             calculate_for_surface cube_x cw cube_y '<' rot ho
00:00:13 v #255 > >         ]]
00:00:13 v #256 > >         |> listm'.box
00:00:13 v #257 > >     inl get = join get
00:00:13 v #258 > >     inl box x : _ (i32 * f64 * char) =
00:00:13 v #259 > >         optionm'.box x
00:00:13 v #260 > >     inl box = join box
00:00:13 v #261 > >     fun () =>
00:00:13 v #262 > >         backend_switch {
00:00:13 v #263 > >             Fsharp = fun () =>
00:00:13 v #264 > >                 $'for cube_x in !cube_range do'
00:00:13 v #265 > >                 $'for cube_y in !cube_range do'
00:00:13 v #266 > >                 $'let x = !get cube_x cube_y |> Seq.choose !box '
00:00:13 v #267 > >                 $'yield\! x' : ()
00:00:13 v #268 > >             Python = fun () =>
00:00:13 v #269 > >                 $'cube_range = !cube_range '
00:00:13 v #270 > >                 $'get = !get '
00:00:13 v #271 > >                 $'box = !box '
00:00:13 v #272 > >                 $'for cube_x in cube_range:'
00:00:13 v #273 > >                 $'    for cube_y in cube_range:'
00:00:13 v #274 > >                 $'        x = get(cube_x)(cube_y)'
00:00:13 v #275 > >                 $'        for i in x:'
00:00:13 v #276 > >                 $'            i_ = box(i)'
00:00:13 v #277 > >                 $'            if i_ is not None: yield i' : ()
00:00:13 v #278 > >         }
00:00:13 v #279 > >     |> seq.new_seq
00:00:13 v #280 > >
00:00:13 v #281 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:13 v #282 > > │ ### generate_frame
00:00:13 v #283 > >
00:00:13 v #284 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:13 v #285 > > let generateFrame rot =
00:00:13 v #286 > >     let updates =
00:00:13 v #287 > >         cubes
00:00:13 v #288 > >         |> Seq.collect (fun cube -> getCubePoints cube rot)
00:00:13 v #289 > >     let buffer = Array.create (width * height) None
00:00:13 v #290 > >     updates
00:00:13 v #291 > >     |> Seq.iter (fun (idx, (ooz, ch)) ->
00:00:13 v #292 > >         match buffer.[[idx]] with
00:00:13 v #293 > >         | Some (prevOoz, _) when prevOoz >= ooz -> ()
00:00:13 v #294 > >         | _ -> buffer.[[idx]] <- Some (ooz, ch)
00:00:13 v #295 > >     )
00:00:13 v #296 > >     let sb = StringBuilder()
00:00:13 v #297 > >     for row in 0 .. (height - 1) do
00:00:13 v #298 > >         for col in 0 .. (width - 1) do
00:00:13 v #299 > >             let idx = col + row * width
00:00:13 v #300 > >             let ch =
00:00:13 v #301 > >                 match buffer.[[idx]] with
00:00:13 v #302 > >                 | Some (_, ch) -> ch
00:00:13 v #303 > >                 | None -> backgroundChar
00:00:13 v #304 > >             sb.Append(ch) |> ignore
00:00:13 v #305 > >         sb.AppendLine() |> ignore
00:00:13 v #306 > >     sb.ToString()
00:00:13 v #307 > >
00:00:13 v #308 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:13 v #309 > > //// test
00:00:13 v #310 > >
00:00:13 v #311 > > let rot = { a = 0.0; b = 0.0; c = 0.0 }
00:00:13 v #312 > > let frame = generateFrame rot
00:00:13 v #313 > > Console.Write frame
00:00:13 v #314 > >
00:00:13 v #315 > > ── [ 35.71ms - stdout ] ────────────────────────────────────────────────────────
00:00:13 v #316 > > │
00:00:13 v #317 > > ................................................................................
00:00:13 v #318 > > ................................................................................
00:00:13 v #319 > > │
00:00:13 v #320 > > ................................................................................
00:00:13 v #321 > > ................................................................................
00:00:13 v #322 > > │
00:00:13 v #323 > > ................................................................................
00:00:13 v #324 > > ................................................................................
00:00:13 v #325 > > │
00:00:13 v #326 > > ................................................................................
00:00:13 v #327 > > ................................................................................
00:00:13 v #328 > > │
00:00:13 v #329 > > ................................................................................
00:00:13 v #330 > > ................................................................................
00:00:13 v #331 > > │
00:00:13 v #332 > > ................................................................................
00:00:13 v #333 > > ................................................................................
00:00:13 v #334 > > │
00:00:13 v #335 > > ................................................................................
00:00:13 v #336 > > ................................................................................
00:00:13 v #337 > > │
00:00:13 v #338 > > ................................................................................
00:00:13 v #339 > > ................................................................................
00:00:13 v #340 > > │
00:00:13 v #341 > > ................................................................................
00:00:13 v #342 > > ................................................................................
00:00:13 v #343 > > │
00:00:13 v #344 > > ................................................................................
00:00:13 v #345 > > ................................................................................
00:00:13 v #346 > > │
00:00:13 v #347 > > ................................................................................
00:00:13 v #348 > > ................................................................................
00:00:13 v #349 > > │
00:00:13 v #350 > > ................................................................................
00:00:13 v #351 > > ................................................................................
00:00:13 v #352 > > │
00:00:13 v #353 > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................
00:00:13 v #354 > > ................................................................................
00:00:13 v #355 > > │
00:00:13 v #356 > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................
00:00:13 v #357 > > ................................................................................
00:00:13 v #358 > > │
00:00:13 v #359 > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................
00:00:13 v #360 > > ................................................................................
00:00:13 v #361 > > │
00:00:13 v #362 > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................
00:00:13 v #363 > > ................................................................................
00:00:13 v #364 > > │
00:00:13 v #365 > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................
00:00:13 v #366 > > ................................................................................
00:00:13 v #367 > > │
00:00:13 v #368 > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................
00:00:13 v #369 > > .@@@@@@@@@@@@@@@@@$.............................................................
00:00:13 v #370 > > │
00:00:13 v #371 > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................
00:00:13 v #372 > > .@@@@@@@@@@@@@@@@@$.............................................................
00:00:13 v #373 > > │
00:00:13 v #374 > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................
00:00:13 v #375 > > .@@@@@@@@@@@@@@@@@$................@@@@@@@@@$...................................
00:00:13 v #376 > > │
00:00:13 v #377 > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................
00:00:13 v #378 > > .@@@@@@@@@@@@@@@@@$................@@@@@@@@@$...................................
00:00:13 v #379 > > │
00:00:13 v #380 > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................
00:00:13 v #381 > > .@@@@@@@@@@@@@@@@@$................@@@@@@@@@$...................................
00:00:13 v #382 > > │
00:00:13 v #383 > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................
00:00:13 v #384 > > .@@@@@@@@@@@@@@@@@$................@@@@@@@@@$...................................
00:00:13 v #385 > > │
00:00:13 v #386 > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................
00:00:13 v #387 > > .@@@@@@@@@@@@@@@@@$................@@@@@@@@@$...................................
00:00:13 v #388 > > │
00:00:13 v #389 > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................
00:00:13 v #390 > > .@@@@@@@@@@@@@@@@@$................+++++++++....................................
00:00:13 v #391 > > │
00:00:13 v #392 > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................
00:00:13 v #393 > > .@@@@@@@@@@@@@@@@@$.............................................................
00:00:13 v #394 > > │
00:00:13 v #395 > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................
00:00:13 v #396 > > .+++++++++++++++++$.............................................................
00:00:13 v #397 > > │
00:00:13 v #398 > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................
00:00:13 v #399 > > ................................................................................
00:00:13 v #400 > > │
00:00:13 v #401 > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................
00:00:13 v #402 > > ................................................................................
00:00:13 v #403 > > │
00:00:13 v #404 > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................
00:00:13 v #405 > > ................................................................................
00:00:13 v #406 > > │
00:00:13 v #407 > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................
00:00:13 v #408 > > ................................................................................
00:00:13 v #409 > > │
00:00:13 v #410 > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................
00:00:13 v #411 > > ................................................................................
00:00:13 v #412 > > │
00:00:13 v #413 > > ....................++++++++++++++++++++++++++++++++++++++++....................
00:00:13 v #414 > > ................................................................................
00:00:13 v #415 > > │
00:00:13 v #416 > > ................................................................................
00:00:13 v #417 > > ................................................................................
00:00:13 v #418 > > │
00:00:13 v #419 > > ................................................................................
00:00:13 v #420 > > ................................................................................
00:00:13 v #421 > > │
00:00:13 v #422 > > ................................................................................
00:00:13 v #423 > > ................................................................................
00:00:13 v #424 > > │
00:00:13 v #425 > > ................................................................................
00:00:13 v #426 > > ................................................................................
00:00:13 v #427 > > │
00:00:13 v #428 > > ................................................................................
00:00:13 v #429 > > ................................................................................
00:00:13 v #430 > > │
00:00:13 v #431 > > ................................................................................
00:00:13 v #432 > > ................................................................................
00:00:13 v #433 > > │
00:00:13 v #434 > > ................................................................................
00:00:13 v #435 > > ................................................................................
00:00:13 v #436 > > │
00:00:13 v #437 > > ................................................................................
00:00:13 v #438 > > ................................................................................
00:00:13 v #439 > > │
00:00:13 v #440 > > ................................................................................
00:00:13 v #441 > > ................................................................................
00:00:13 v #442 > > │
00:00:13 v #443 > > ................................................................................
00:00:13 v #444 > > ................................................................................
00:00:13 v #445 > > │
00:00:13 v #446 > > ................................................................................
00:00:13 v #447 > > ................................................................................
00:00:13 v #448 > > │
00:00:13 v #449 > >
00:00:13 v #450 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:13 v #451 > > inl generate_frame rot =
00:00:13 v #452 > >     inl updates : seq.seq' (int * (f64 * char)) =
00:00:13 v #453 > >         inl get_cube_points' cube : seq.seq' (int * (f64 * char)) =
00:00:13 v #454 > >             get_cube_points cube rot
00:00:13 v #455 > >         inl cubes = get_cubes () |> listm'.box
00:00:13 v #456 > >         backend_switch {
00:00:13 v #457 > >             Fsharp = fun () =>
00:00:13 v #458 > >                 inl get_cube_points' = join get_cube_points'
00:00:13 v #459 > >                 (cubes |> $'Seq.collect !get_cube_points' ') : seq.seq' (int *
00:00:13 v #460 > > (f64 * char))
00:00:13 v #461 > >             Python = fun () =>
00:00:13 v #462 > >                 $'cubes = !cubes '
00:00:13 v #463 > >                 $'get_cube_points = !get_cube_points' '
00:00:13 v #464 > >                 $'[[x for cube in cubes for x in get_cube_points(*cube)]]' :
00:00:13 v #465 > > seq.seq' (int * (f64 * char))
00:00:13 v #466 > >         }
00:00:13 v #467 > >     inl none : _ (f64 * char) = None
00:00:13 v #468 > >     inl width = get_width ()
00:00:13 v #469 > >     inl height = get_height ()
00:00:13 v #470 > >     inl buffer =
00:00:13 v #471 > >         backend_switch {
00:00:13 v #472 > >             Fsharp = fun () =>
00:00:13 v #473 > >                 $'Array.create (!width * !height) !none ' : a int (option (f64 *
00:00:13 v #474 > > char))
00:00:13 v #475 > >             Python = fun () =>
00:00:13 v #476 > >                 $'[[!none for _ in range(!width * !height)]]' : a int (option
00:00:13 v #477 > > (f64 * char))
00:00:13 v #478 > >         }
00:00:13 v #479 > >
00:00:13 v #480 > >     inl fn idx ((ooz : f64), (ch : char)) =
00:00:13 v #481 > >         match buffer |> am'.index idx with
00:00:13 v #482 > >         | Some (prev_ooz, _) when prev_ooz >= ooz => ()
00:00:13 v #483 > >         | _ =>
00:00:13 v #484 > >             inl x = (ooz, ch) |> Some
00:00:13 v #485 > >             backend_switch {
00:00:13 v #486 > >                 Fsharp = fun () =>
00:00:13 v #487 > >                     $'!buffer.[[!idx]] <- !x ' : ()
00:00:13 v #488 > >                 Python = fun () =>
00:00:13 v #489 > >                     $'!buffer[[!idx]] = !x ' : ()
00:00:13 v #490 > >             }
00:00:13 v #491 > >     backend_switch {
00:00:13 v #492 > >         Fsharp = fun () =>
00:00:13 v #493 > >             updates
00:00:13 v #494 > >             |> $'Seq.iter (fun (struct (idx, ooz, ch)) -> !fn idx (ooz, ch))' :
00:00:13 v #495 > > ()
00:00:13 v #496 > >         Python = fun () =>
00:00:13 v #497 > >             $'for (idx, ooz, ch) in !updates: !fn(idx)(ooz, ch)' : ()
00:00:13 v #498 > >     }
00:00:13 v #499 > >
00:00:13 v #500 > >     inl sb = "" |> sm'.string_builder
00:00:13 v #501 > >     inl fn1 row =
00:00:13 v #502 > >         inl fn2 col =
00:00:13 v #503 > >             inl idx = col + row * width
00:00:13 v #504 > >             inl ch =
00:00:13 v #505 > >                 match buffer |> am'.index idx with
00:00:13 v #506 > >                 | Some (_, ch) => ch
00:00:13 v #507 > >                 | None => get_background_char ()
00:00:13 v #508 > >             sb |> sm'.builder_append (ch |> sm'.obj_to_string) |> ignore
00:00:13 v #509 > >
00:00:13 v #510 > >         backend_switch {
00:00:13 v #511 > >             Fsharp = fun () =>
00:00:13 v #512 > >                 $'for col in 0 .. (!width - 1) do !fn2 col' : ()
00:00:13 v #513 > >             Python = fun () =>
00:00:13 v #514 > >                 $'for col in range(!width): !fn2(col)' : ()
00:00:13 v #515 > >         }
00:00:13 v #516 > >         sb |> sm'.builder_append_line |> ignore
00:00:13 v #517 > >
00:00:13 v #518 > >     backend_switch {
00:00:13 v #519 > >         Fsharp = fun () =>
00:00:13 v #520 > >             $'for row in 0 .. (!height - 1) do !fn1 row' : ()
00:00:13 v #521 > >         Python = fun () =>
00:00:13 v #522 > >             $'for row in range(!height): !fn1(row)' : ()
00:00:13 v #523 > >     }
00:00:13 v #524 > >     sb |> sm'.obj_to_string
00:00:14 v #525 > >
00:00:14 v #526 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:14 v #527 > > //// test
00:00:14 v #528 > > ///! fsharp
00:00:14 v #529 > > ///! cuda
00:00:14 v #530 > > ///! rust
00:00:14 v #531 > > ///! typescript
00:00:14 v #532 > > ///! python
00:00:14 v #533 > >
00:00:14 v #534 > > { a = 0.0; b = 0.0; c = 0.0 }
00:00:14 v #535 > > |> generate_frame
00:00:14 v #536 > > |> console.write_line
00:00:25 v #537 > >
00:00:25 v #538 > > ── [ 11.23s - return value ] ───────────────────────────────────────────────────
00:00:25 v #539 > > │ "
00:00:25 v #540 > > │ .py output (Cuda):
00:00:25 v #541 > > │
00:00:25 v #542 > > ................................................................................
00:00:25 v #543 > > ................................................................................
00:00:25 v #544 > > │
00:00:25 v #545 > > ................................................................................
00:00:25 v #546 > > ................................................................................
00:00:25 v #547 > > │
00:00:25 v #548 > > ................................................................................
00:00:25 v #549 > > ................................................................................
00:00:25 v #550 > > │
00:00:25 v #551 > > ................................................................................
00:00:25 v #552 > > ................................................................................
00:00:25 v #553 > > │
00:00:25 v #554 > > ................................................................................
00:00:25 v #555 > > ................................................................................
00:00:25 v #556 > > │
00:00:25 v #557 > > ................................................................................
00:00:25 v #558 > > ................................................................................
00:00:25 v #559 > > │
00:00:25 v #560 > > ................................................................................
00:00:25 v #561 > > ................................................................................
00:00:25 v #562 > > │
00:00:25 v #563 > > ................................................................................
00:00:25 v #564 > > ................................................................................
00:00:25 v #565 > > │
00:00:25 v #566 > > ................................................................................
00:00:25 v #567 > > ................................................................................
00:00:25 v #568 > > │
00:00:25 v #569 > > .............................................................................
00:00:25 v #570 > > │
00:00:25 v #571 > > ................................................................................
00:00:25 v #572 > > ................................................................................
00:00:25 v #573 > > │
00:00:25 v #574 > > ................................................................................
00:00:25 v #575 > > ................................................................................
00:00:25 v #576 > > │
00:00:25 v #577 > > ................................................................................
00:00:25 v #578 > > ................................................................................
00:00:25 v #579 > > │
00:00:25 v #580 > > ................................................................................
00:00:25 v #581 > > ................................................................................
00:00:25 v #582 > > │
00:00:25 v #583 > > ................................................................................
00:00:25 v #584 > > ................................................................................
00:00:25 v #585 > > │
00:00:25 v #586 > > ................................................................................
00:00:25 v #587 > > ................................................................................
00:00:25 v #588 > > │
00:00:25 v #589 > > ................................................................................
00:00:25 v #590 > > ................................................................................
00:00:25 v #591 > > │
00:00:25 v #592 > > ................................................................................
00:00:25 v #593 > > ................................................................................
00:00:25 v #594 > > │
00:00:25 v #595 > > ................................................................................
00:00:25 v #596 > > ................................................................................
00:00:25 v #597 > > │
00:00:25 v #598 > > │
00:00:25 v #599 > > │
00:00:25 v #600 > > │ "
00:00:25 v #601 > > │
00:00:25 v #602 > >
00:00:25 v #603 > > ── [ 11.23s - stdout ] ─────────────────────────────────────────────────────────
00:00:25 v #604 > > │ .fsx output:
00:00:25 v #605 > > │
00:00:25 v #606 > > ................................................................................
00:00:25 v #607 > > ................................................................................
00:00:25 v #608 > > │
00:00:25 v #609 > > ................................................................................
00:00:25 v #610 > > ................................................................................
00:00:25 v #611 > > │
00:00:25 v #612 > > ................................................................................
00:00:25 v #613 > > ................................................................................
00:00:25 v #614 > > │
00:00:25 v #615 > > ................................................................................
00:00:25 v #616 > > ................................................................................
00:00:25 v #617 > > │
00:00:25 v #618 > > ................................................................................
00:00:25 v #619 > > ................................................................................
00:00:25 v #620 > > │
00:00:25 v #621 > > ................................................................................
00:00:25 v #622 > > ................................................................................
00:00:25 v #623 > > │
00:00:25 v #624 > > ................................................................................
00:00:25 v #625 > > ................................................................................
00:00:25 v #626 > > │
00:00:25 v #627 > > ................................................................................
00:00:25 v #628 > > ................................................................................
00:00:25 v #629 > > │
00:00:25 v #630 > > ................................................................................
00:00:25 v #631 > > ................................................................................
00:00:25 v #632 > > │
00:00:25 v #633 > > ................................................................................
00:00:25 v #634 > > ................................................................................
00:00:25 v #635 > > │
00:00:25 v #636 > > ................................................................................
00:00:25 v #637 > > ................................................................................
00:00:25 v #638 > > │
00:00:25 v #639 > > ................................................................................
00:00:25 v #640 > > ................................................................................
00:00:25 v #641 > > │
00:00:25 v #642 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
00:00:25 v #643 > > ................................................................................
00:00:25 v #644 > > │
00:00:25 v #645 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
00:00:25 v #646 > > ................................................................................
00:00:25 v #647 > > │
00:00:25 v #648 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
00:00:25 v #649 > > ................................................................................
00:00:25 v #650 > > │
00:00:25 v #651 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
00:00:25 v #652 > > ................................................................................
00:00:25 v #653 > > │
00:00:25 v #654 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
00:00:25 v #655 > > ................................................................................
00:00:25 v #656 > > │
00:00:25 v #657 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
00:00:25 v #658 > > .;;;;;;;;;;;;;;;;;\.............................................................
00:00:25 v #659 > > │
00:00:25 v #660 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
00:00:25 v #661 > > .;;;;;;;;;;;;;;;;;\.............................................................
00:00:25 v #662 > > │
00:00:25 v #663 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
00:00:25 v #664 > > .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
00:00:25 v #665 > > │
00:00:25 v #666 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
00:00:25 v #667 > > .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
00:00:25 v #668 > > │
00:00:25 v #669 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
00:00:25 v #670 > > .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
00:00:25 v #671 > > │
00:00:25 v #672 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
00:00:25 v #673 > > .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
00:00:25 v #674 > > │
00:00:25 v #675 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
00:00:25 v #676 > > .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
00:00:25 v #677 > > │
00:00:25 v #678 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
00:00:25 v #679 > > .;;;;;;;;;;;;;;;;;\................<<<<<<<<<....................................
00:00:25 v #680 > > │
00:00:25 v #681 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
00:00:25 v #682 > > .;;;;;;;;;;;;;;;;;\.............................................................
00:00:25 v #683 > > │
00:00:25 v #684 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
00:00:25 v #685 > > .<<<<<<<<<<<<<<<<<\.............................................................
00:00:25 v #686 > > │
00:00:25 v #687 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
00:00:25 v #688 > > ................................................................................
00:00:25 v #689 > > │
00:00:25 v #690 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
00:00:25 v #691 > > ................................................................................
00:00:25 v #692 > > │
00:00:25 v #693 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
00:00:25 v #694 > > ................................................................................
00:00:25 v #695 > > │
00:00:25 v #696 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
00:00:25 v #697 > > ................................................................................
00:00:25 v #698 > > │
00:00:25 v #699 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
00:00:25 v #700 > > ................................................................................
00:00:25 v #701 > > │
00:00:25 v #702 > > ....................<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<....................
00:00:25 v #703 > > ................................................................................
00:00:25 v #704 > > │
00:00:25 v #705 > > ................................................................................
00:00:25 v #706 > > ................................................................................
00:00:25 v #707 > > │
00:00:25 v #708 > > ................................................................................
00:00:25 v #709 > > ................................................................................
00:00:25 v #710 > > │
00:00:25 v #711 > > ................................................................................
00:00:25 v #712 > > ................................................................................
00:00:25 v #713 > > │
00:00:25 v #714 > > ................................................................................
00:00:25 v #715 > > ................................................................................
00:00:25 v #716 > > │
00:00:25 v #717 > > ................................................................................
00:00:25 v #718 > > ................................................................................
00:00:25 v #719 > > │
00:00:25 v #720 > > ................................................................................
00:00:25 v #721 > > ................................................................................
00:00:25 v #722 > > │
00:00:25 v #723 > > ................................................................................
00:00:25 v #724 > > ................................................................................
00:00:25 v #725 > > │
00:00:25 v #726 > > ................................................................................
00:00:25 v #727 > > ................................................................................
00:00:25 v #728 > > │
00:00:25 v #729 > > ................................................................................
00:00:25 v #730 > > ................................................................................
00:00:25 v #731 > > │
00:00:25 v #732 > > ................................................................................
00:00:25 v #733 > > ................................................................................
00:00:25 v #734 > > │
00:00:25 v #735 > > ................................................................................
00:00:25 v #736 > > ................................................................................
00:00:25 v #737 > > │
00:00:25 v #738 > > │
00:00:25 v #739 > >
00:00:25 v #740 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:25 v #741 > > │ ### main_loop
00:00:25 v #742 > >
00:00:25 v #743 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:25 v #744 > > let rec mainLoop rot = async {
00:00:25 v #745 > >     let frame = generateFrame rot
00:00:25 v #746 > >     // Console.SetCursorPosition(0, 0)
00:00:25 v #747 > >     Console.Write(frame)
00:00:25 v #748 > >     let rot' = { a = rot.a + 0.05; b = rot.b + 0.05; c = rot.c + 0.01 }
00:00:25 v #749 > >     do! Async.Sleep 16
00:00:25 v #750 > >     return! mainLoop rot'
00:00:25 v #751 > > }
00:00:25 v #752 > >
00:00:25 v #753 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:25 v #754 > > let rec main_loop max i rot =
00:00:25 v #755 > >     fun () =>
00:00:25 v #756 > >         inl rot = join rot
00:00:25 v #757 > >         inl frame = rot |> generate_frame
00:00:25 v #758 > >         if max < 0 then
00:00:25 v #759 > >             run_target function
00:00:25 v #760 > >                 | Fsharp (Native) => fun () =>
00:00:25 v #761 > > $'System.Console.SetCursorPosition (0, 0)'
00:00:25 v #762 > >                 | Rust _ => fun () =>
00:00:25 v #763 > >                     open rust.rust_operators
00:00:25 v #764 > >                     !\($'$"print\!(\\\"\\\\x1B[[1;1H\\\")"')
00:00:25 v #765 > >                 | TypeScript _ => fun () =>
00:00:25 v #766 > >                     open typescript_operators
00:00:25 v #767 > >                     !\($'$"process.stdout.write(\'\\\\u001B[[1;1H\')"')
00:00:25 v #768 > >                 | Python _ => fun () =>
00:00:25 v #769 > >                     open python_operators
00:00:25 v #770 > >                     // global "import sys"
00:00:25 v #771 > >                     !\($'$"sys.stdout.write(\\\"\\\\033[[1;1H\\\")"')
00:00:25 v #772 > >                 | Cuda _ => fun () =>
00:00:25 v #773 > >                     global "import sys"
00:00:25 v #774 > >                     $'sys.stdout.write("\\033[[1;1H")'
00:00:25 v #775 > >                 | _ => fun () => ()
00:00:25 v #776 > >         frame |> console.write_line
00:00:25 v #777 > >         async.sleep 1 |> async.do
00:00:25 v #778 > >         if max > 0 && i >= max
00:00:25 v #779 > >         then ()
00:00:25 v #780 > >         else
00:00:25 v #781 > >             { a = rot.a + 0.05; b = rot.b + 0.05; c = rot.c + 0.01 }
00:00:25 v #782 > >             |> main_loop max (i + 1)
00:00:25 v #783 > >             |> async.return_await'
00:00:25 v #784 > >     |> async.new_async_unit
00:00:25 v #785 > >
00:00:25 v #786 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:25 v #787 > > │ ### main
00:00:25 v #788 > >
00:00:25 v #789 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:25 v #790 > > // [[<EntryPoint>]]
00:00:25 v #791 > > let main argv =
00:00:25 v #792 > >     // Console.CursorVisible <- false
00:00:25 v #793 > >     Async.StartImmediate (mainLoop { a = 0.0; b = 0.0; c = 0.0 })
00:00:25 v #794 > >     System.Threading.Thread.Sleep(1000)
00:00:25 v #795 > >
00:00:25 v #796 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:25 v #797 > > // main [[||]]
00:00:25 v #798 > >
00:00:25 v #799 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:25 v #800 > > inl main (_args : array_base string) =
00:00:25 v #801 > >     inl console =
00:00:25 v #802 > >         run_target function
00:00:25 v #803 > >         | Fsharp (Wasm) => fun () => false
00:00:25 v #804 > >         | _ => fun () =>
00:00:25 v #805 > >             ((join "VSCODE_PID") |> env.get_environment_variable |> sm'.length
00:00:25 v #806 > > |> (=) 0i32)
00:00:25 v #807 > >                 && ("AUTOMATION" |> env.get_environment_variable |> sm'.length
00:00:25 v #808 > > |> (=) 0i32)
00:00:25 v #809 > >     if console then
00:00:25 v #810 > >         run_target function
00:00:25 v #811 > >             | Fsharp (Native) => fun () => $'System.Console.CursorVisible <-
00:00:25 v #812 > > false'
00:00:25 v #813 > >             | Rust _ => fun () =>
00:00:25 v #814 > >                 open rust.rust_operators
00:00:25 v #815 > >                 !\($'$"print\!(\\\"\\\\x1B[[?25l\\\")"')
00:00:25 v #816 > >             | TypeScript _ => fun () =>
00:00:25 v #817 > >                 open typescript_operators
00:00:25 v #818 > >                 !\($'$"process.stdout.write(\'\\\\u001B[[?25l\')"')
00:00:25 v #819 > >             | Python _ => fun () =>
00:00:25 v #820 > >                 open python_operators
00:00:25 v #821 > >                 python.import_all "sys"
00:00:25 v #822 > >                 !\($'$"sys.stdout.write(\\\"\\\\033[[?25l\\\")"')
00:00:25 v #823 > >             | _ => fun () => ()
00:00:25 v #824 > >     main_loop (if console then -1i32 else 50) 1i32 { a = 0.0; b = 0.0; c = 0.0 }
00:00:25 v #825 > >     |> fun x =>
00:00:25 v #826 > >         run_target_args' x function
00:00:25 v #827 > >         | Fsharp (Wasm)
00:00:25 v #828 > >         | TypeScript _ => fun x =>
00:00:25 v #829 > >             x
00:00:25 v #830 > >             |> async.start_child
00:00:25 v #831 > >             |> ignore
00:00:25 v #832 > >         | Python _ => fun x =>
00:00:25 v #833 > >             x
00:00:25 v #834 > >             |> async.start_immediate
00:00:25 v #835 > >             threading.sleep' 2000
00:00:25 v #836 > >         | _ => fun x =>
00:00:25 v #837 > >             x
00:00:25 v #838 > >             |> async.run_synchronously
00:00:25 v #839 > >
00:00:25 v #840 > > inl main () =
00:00:25 v #841 > >     backend_switch {
00:00:25 v #842 > >         Fsharp = fun () =>
00:00:25 v #843 > >             $'let main_ = !main '
00:00:25 v #844 > >             $'#if \!FABLE_COMPILER_RUST'
00:00:25 v #845 > >             $'main_ [[||]]' : ()
00:00:25 v #846 > >             $'#else'
00:00:25 v #847 > >             $'let main args = main_ [[||]]; 0' : ()
00:00:25 v #848 > >             $'#endif' : ()
00:00:25 v #849 > >         Python = fun () =>
00:00:25 v #850 > >             main ;[[]]
00:00:25 v #851 > >     }
00:00:25 v #852 > >     : ()
00:00:27 v #853 > >
00:00:27 v #854 > > ── [ 1.74s - stdout ] ──────────────────────────────────────────────────────────
00:00:27 v #855 > > │
00:00:27 v #856 > > ................................................................................
00:00:27 v #857 > > ................................................................................
00:00:27 v #858 > > │
00:00:27 v #859 > > ................................................................................
00:00:27 v #860 > > ................................................................................
00:00:27 v #861 > > │
00:00:27 v #862 > > ................................................................................
00:00:27 v #863 > > ................................................................................
00:00:27 v #864 > > │
00:00:27 v #865 > > ................................................................................
00:00:27 v #866 > > ................................................................................
00:00:27 v #867 > > │
00:00:27 v #868 > > ................................................................................
00:00:27 v #869 > > ................................................................................
00:00:27 v #870 > > │
00:00:27 v #871 > > ................................................................................
00:00:27 v #872 > > ................................................................................
00:00:27 v #873 > > │
00:00:27 v #874 > > ................................................................................
00:00:27 v #875 > > ................................................................................
00:00:27 v #876 > > │
00:00:27 v #877 > > ................................................................................
00:00:27 v #878 > > ................................................................................
00:00:27 v #879 > > │
00:00:27 v #880 > > ................................................................................
00:00:27 v #881 > > ................................................................................
00:00:27 v #882 > > │
00:00:27 v #883 > > ................................................................................
00:00:27 v #884 > > ................................................................................
00:00:27 v #885 > > │
00:00:27 v #886 > > ................................................................................
00:00:27 v #887 > > ................................................................................
00:00:27 v #888 > > │
00:00:27 v #889 > > ................................................................................
00:00:27 v #890 > > ................................................................................
00:00:27 v #891 > > │
00:00:27 v #892 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
00:00:27 v #893 > > ................................................................................
00:00:27 v #894 > > │
00:00:27 v #895 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
00:00:27 v #896 > > ................................................................................
00:00:27 v #897 > > │
00:00:27 v #898 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
00:00:27 v #899 > > ................................................................................
00:00:27 v #900 > > │
00:00:27 v #901 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
00:00:27 v #902 > > ................................................................................
00:00:27 v #903 > > │
00:00:27 v #904 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
00:00:27 v #905 > > ................................................................................
00:00:27 v #906 > > │
00:00:27 v #907 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
00:00:27 v #908 > > .;;;;;;;;;;;;;;;;;\.............................................................
00:00:27 v #909 > > │
00:00:27 v #910 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
00:00:27 v #911 > > .;;;;;;;;;;;;;;;;;\.............................................................
00:00:27 v #912 > > │
00:00:27 v #913 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
00:00:27 v #914 > > .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
00:00:27 v #915 > > │
00:00:27 v #916 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
00:00:27 v #917 > > .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
00:00:27 v #918 > > │
00:00:27 v #919 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
00:00:27 v #920 > > .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
00:00:27 v #921 > > │
00:00:27 v #922 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
00:00:27 v #923 > > .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
00:00:27 v #924 > > │
00:00:27 v #925 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
00:00:27 v #926 > > .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
00:00:27 v #927 > > │
00:00:27 v #928 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
00:00:27 v #929 > > .;;;;;;;;;;;;;;;;;\................<<<<<<<<<....................................
00:00:27 v #930 > > │
00:00:27 v #931 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
00:00:27 v #932 > > .;;;;;;;;;;;;;;;;;\.............................................................
00:00:27 v #933 > > │
00:00:27 v #934 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
00:00:27 v #935 > > .<<<<<<<<<<<<<<<<<\.............................................................
00:00:27 v #936 > > │
00:00:27 v #937 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
00:00:27 v #938 > > ................................................................................
00:00:27 v #939 > > │
00:00:27 v #940 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
00:00:27 v #941 > > ................................................................................
00:00:27 v #942 > > │
00:00:27 v #943 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
00:00:27 v #944 > > ................................................................................
00:00:27 v #945 > > │
00:00:27 v #946 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
00:00:27 v #947 > > ................................................................................
00:00:27 v #948 > > │
00:00:27 v #949 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
00:00:27 v #950 > > ................................................................................
00:00:27 v #951 > > │
00:00:27 v #952 > > ....................<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<....................
00:00:27 v #953 > > ................................................................................
00:00:27 v #954 > > │
00:00:27 v #955 > > ................................................................................
00:00:27 v #956 > > ................................................................................
00:00:27 v #957 > > │
00:00:27 v #958 > > ................................................................................
00:00:27 v #959 > > ................................................................................
00:00:27 v #960 > > │
00:00:27 v #961 > > ................................................................................
00:00:27 v #962 > > ................................................................................
00:00:27 v #963 > > │
00:00:27 v #964 > > ................................................................................
00:00:27 v #965 > > ................................................................................
00:00:27 v #966 > > │
00:00:27 v #967 > > ................................................................................
00:00:27 v #968 > > ................................................................................
00:00:27 v #969 > > │
00:00:27 v #970 > > ................................................................................
00:00:27 v #971 > > ................................................................................
00:00:27 v #972 > > │
00:00:27 v #973 > > ................................................................................
00:00:27 v #974 > > ................................................................................
00:00:27 v #975 > > │
00:00:27 v #976 > > ................................................................................
00:00:27 v #977 > > ................................................................................
00:00:27 v #978 > > │
00:00:27 v #979 > > ................................................................................
00:00:27 v #980 > > ................................................................................
00:00:27 v #981 > > │
00:00:27 v #982 > > ................................................................................
00:00:27 v #983 > > ................................................................................
00:00:27 v #984 > > │
00:00:27 v #985 > > ................................................................................
00:00:27 v #986 > > ................................................................................
00:00:27 v #987 > > │
00:00:27 v #988 > > │
00:00:27 v #989 > > ................................................................................
00:00:27 v #990 > > ................................................................................
00:00:27 v #991 > > │
00:00:27 v #992 > > ................................................................................
00:00:27 v #993 > > ................................................................................
00:00:27 v #994 > > │
00:00:27 v #995 > > ................................................................................
00:00:27 v #996 > > ................................................................................
00:00:27 v #997 > > │
00:00:27 v #998 > > ................................................................................
00:00:27 v #999 > > ................................................................................
00:00:27 v #1000 > > │
00:00:27 v #1001 > > ................................................................................
00:00:27 v #1002 > > ................................................................................
00:00:27 v #1003 > > │
00:00:27 v #1004 > > ................................................................................
00:00:27 v #1005 > > ................................................................................
00:00:27 v #1006 > > │
00:00:27 v #1007 > > ................................................................................
00:00:27 v #1008 > > ................................................................................
00:00:27 v #1009 > > │
00:00:27 v #1010 > > ................................................................................
00:00:27 v #1011 > > ................................................................................
00:00:27 v #1012 > > │
00:00:27 v #1013 > > ................................................................................
00:00:27 v #1014 > > ................................................................................
00:00:27 v #1015 > > │
00:00:27 v #1016 > > ................................................................................
00:00:27 v #1017 > > ................................................................................
00:00:27 v #1018 > > │
00:00:27 v #1019 > > ................................................................................
00:00:27 v #1020 > > ................................................................................
00:00:27 v #1021 > > │
00:00:27 v #1022 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
00:00:27 v #1023 > > ................................................................................
00:00:27 v #1024 > > │
00:00:27 v #1025 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
00:00:27 v #1026 > > ................................................................................
00:00:27 v #1027 > > │
00:00:27 v #1028 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
00:00:27 v #1029 > > ................................................................................
00:00:27 v #1030 > > │
00:00:27 v #1031 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
00:00:27 v #1032 > > ................................................................................
00:00:27 v #1033 > > │
00:00:27 v #1034 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
00:00:27 v #1035 > > ................................................................................
00:00:27 v #1036 > > │
00:00:27 v #1037 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
00:00:27 v #1038 > > ................................................................................
00:00:27 v #1039 > > │
00:00:27 v #1040 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
00:00:27 v #1041 > > .;;;;;;;;;;;;;;;;;;\............................................................
00:00:27 v #1042 > > │
00:00:27 v #1043 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
00:00:27 v #1044 > > .;;;;;;;;;;;;;;;;;;\............................................................
00:00:27 v #1045 > > │
00:00:27 v #1046 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
00:00:27 v #1047 > > .;;;;;;;;;;;;;;;;;;;...............;;;;;;;;;;...................................
00:00:27 v #1048 > > │
00:00:27 v #1049 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
00:00:27 v #1050 > > .;;;;;;;;;;;;;;;;;;;...............;;;;;;;;;;...................................
00:00:27 v #1051 > > │
00:00:27 v #1052 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
00:00:27 v #1053 > > .;;;;;;;;;;;;;;;;;;;...............;;;;;;;;;;...................................
00:00:27 v #1054 > > │
00:00:27 v #1055 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
00:00:27 v #1056 > > .;;;;;;;;;;;;;;;;;;;...............;;;;;;;;;;...................................
00:00:27 v #1057 > > │
00:00:27 v #1058 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
00:00:27 v #1059 > > .;;;;;;;;;;;;;;;;;;;................;;;;;<<<<...................................
00:00:27 v #1060 > > │
00:00:27 v #1061 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
00:00:27 v #1062 > > .;;;;;;;;;;;;;;;;;;;................<<<<<.......................................
00:00:27 v #1063 > > │
00:00:27 v #1064 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
00:00:27 v #1065 > > .;;;;;;;;;;;;;;;;;;;............................................................
00:00:27 v #1066 > > │
00:00:27 v #1067 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
00:00:27 v #1068 > > .<<<<<<<<<<<<<<<<<<<............................................................
00:00:27 v #1069 > > │
00:00:27 v #1070 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
00:00:27 v #1071 > > ................................................................................
00:00:27 v #1072 > > │
00:00:27 v #1073 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
00:00:27 v #1074 > > ................................................................................
00:00:27 v #1075 > > │
00:00:27 v #1076 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
00:00:27 v #1077 > > ................................................................................
00:00:27 v #1078 > > │
00:00:27 v #1079 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
00:00:27 v #1080 > > ................................................................................
00:00:27 v #1081 > > │
00:00:27 v #1082 > > ....................<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\..................
00:00:27 v #1083 > > ................................................................................
00:00:27 v #1084 > > │
00:00:27 v #1085 > > ................................................................................
00:00:27 v #1086 > > ................................................................................
00:00:27 v #1087 > > │
00:00:27 v #1088 > > ................................................................................
00:00:27 v #1089 > > ................................................................................
00:00:27 v #1090 > > │
00:00:27 v #1091 > > ................................................................................
00:00:27 v #1092 > > ................................................................................
00:00:27 v #1093 > > │
00:00:27 v #1094 > > ................................................................................
00:00:27 v #1095 > > ................................................................................
00:00:27 v #1096 > > │
00:00:27 v #1097 > > ................................................................................
00:00:27 v #1098 > > ................................................................................
00:00:27 v #1099 > > │
00:00:27 v #1100 > > ................................................................................
00:00:27 v #1101 > > ................................................................................
00:00:27 v #1102 > > │
00:00:27 v #1103 > > ................................................................................
00:00:27 v #1104 > > ................................................................................
00:00:27 v #1105 > > │
00:00:27 v #1106 > > ................................................................................
00:00:27 v #1107 > > ................................................................................
00:00:27 v #1108 > > │
00:00:27 v #1109 > > ................................................................................
00:00:27 v #1110 > > ................................................................................
00:00:27 v #1111 > > │
00:00:27 v #1112 > > ................................................................................
00:00:27 v #1113 > > ................................................................................
00:00:27 v #1114 > > │
00:00:27 v #1115 > > ................................................................................
00:00:27 v #1116 > > ................................................................................
00:00:27 v #1117 > > │
00:00:27 v #1118 > > ................................................................................
00:00:27 v #1119 > > ................................................................................
00:00:27 v #1120 > > │
00:00:27 v #1121 > > │
00:00:27 v #1122 > > ................................................................................
00:00:27 v #1123 > > ................................................................................
00:00:27 v #1124 > > │
00:00:27 v #1125 > > ................................................................................
00:00:27 v #1126 > > ................................................................................
00:00:27 v #1127 > > │
00:00:27 v #1128 > > ................................................................................
00:00:27 v #1129 > > ................................................................................
00:00:27 v #1130 > > │
00:00:27 v #1131 > > ................................................................................
00:00:27 v #1132 > > ................................................................................
00:00:27 v #1133 > > │
00:00:27 v #1134 > > ................................................................................
00:00:27 v #1135 > > ................................................................................
00:00:27 v #1136 > > │
00:00:27 v #1137 > > ................................................................................
00:00:27 v #1138 > > ................................................................................
00:00:27 v #1139 > > │
00:00:27 v #1140 > > ................................................................................
00:00:27 v #1141 > > ................................................................................
00:00:27 v #1142 > > │
00:00:27 v #1143 > > ................................................................................
00:00:27 v #1144 > > ................................................................................
00:00:27 v #1145 > > │
00:00:27 v #1146 > > ................................................................................
00:00:27 v #1147 > > ................................................................................
00:00:27 v #1148 > > │
00:00:27 v #1149 > > ................................................................................
00:00:27 v #1150 > > ................................................................................
00:00:27 v #1151 > > │
00:00:27 v #1152 > > ................................................................................
00:00:27 v #1153 > > ................................................................................
00:00:27 v #1154 > > │
00:00:27 v #1155 > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
00:00:27 v #1156 > > ................................................................................
00:00:27 v #1157 > > │
00:00:27 v #1158 > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
00:00:27 v #1159 > > ................................................................................
00:00:27 v #1160 > > │
00:00:27 v #1161 > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
00:00:27 v #1162 > > ................................................................................
00:00:27 v #1163 > > │
00:00:27 v #1164 > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
00:00:27 v #1165 > > ................................................................................
00:00:27 v #1166 > > │
00:00:27 v #1167 > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
00:00:27 v #1168 > > ................................................................................
00:00:27 v #1169 > > │
00:00:27 v #1170 > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
00:00:27 v #1171 > > ................................................................................
00:00:27 v #1172 > > │
00:00:27 v #1173 > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
00:00:27 v #1174 > > .;;;;;;;;;;;;;;;;;;;............................................................
00:00:27 v #1175 > > │
00:00:27 v #1176 > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
00:00:27 v #1177 > > .;;;;;;;;;;;;;;;;;;;............................................................
00:00:27 v #1178 > > │
00:00:27 v #1179 > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
00:00:27 v #1180 > > .;;;;;;;;;;;;;;;;;;;...............>;;;;;;;;;...................................
00:00:27 v #1181 > > │
00:00:27 v #1182 > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
00:00:27 v #1183 > > .;;;;;;;;;;;;;;;;;;;.............../;;;;;;;;;...................................
00:00:27 v #1184 > > │
00:00:27 v #1185 > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
00:00:27 v #1186 > > .;;;;;;;;;;;;;;;;;;;.............../;;;;;;;;;...................................
00:00:27 v #1187 > > │
00:00:27 v #1188 > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
00:00:27 v #1189 > > .;;;;;;;;;;;;;;;;;;;.............../;;;;;;;;;...................................
00:00:27 v #1190 > > │
00:00:27 v #1191 > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
00:00:27 v #1192 > > .;;;;;;;;;;;;;;;;;;;.............../<<<<<<<<<...................................
00:00:27 v #1193 > > │
00:00:27 v #1194 > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
00:00:27 v #1195 > > ..;;;;;;;;;;;;;;;;;;...............<<<<<<<<<....................................
00:00:27 v #1196 > > │
00:00:27 v #1197 > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
00:00:27 v #1198 > > ..;;;;;;;;;;<<<<<<<<............................................................
00:00:27 v #1199 > > │
00:00:27 v #1200 > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
00:00:27 v #1201 > > ..<<<<<<<<<<....................................................................
00:00:27 v #1202 > > │
00:00:27 v #1203 > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................
00:00:27 v #1204 > > ................................................................................
00:00:27 v #1205 > > │
00:00:27 v #1206 > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................
00:00:27 v #1207 > > ................................................................................
00:00:27 v #1208 > > │
00:00:27 v #1209 > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................
00:00:27 v #1210 > > ................................................................................
00:00:27 v #1211 > > │
00:00:27 v #1212 > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<\.................
00:00:27 v #1213 > > ................................................................................
00:00:27 v #1214 > > │
00:00:27 v #1215 > > .....................<<<<<<<<<<<<<<<<<<<<<<<<<<<<...............................
00:00:27 v #1216 > > ................................................................................
00:00:27 v #1217 > > │
00:00:27 v #1218 > > ................................................................................
00:00:27 v #1219 > > ................................................................................
00:00:27 v #1220 > > │
00:00:27 v #1221 > > ................................................................................
00:00:27 v #1222 > > ................................................................................
00:00:27 v #1223 > > │
00:00:27 v #1224 > > ................................................................................
00:00:27 v #1225 > > ................................................................................
00:00:27 v #1226 > > │
00:00:27 v #1227 > > ................................................................................
00:00:27 v #1228 > > ................................................................................
00:00:27 v #1229 > > │
00:00:27 v #1230 > > ................................................................................
00:00:27 v #1231 > > ................................................................................
00:00:27 v #1232 > > │
00:00:27 v #1233 > > ................................................................................
00:00:27 v #1234 > > ................................................................................
00:00:27 v #1235 > > │
00:00:27 v #1236 > > ................................................................................
00:00:27 v #1237 > > ................................................................................
00:00:27 v #1238 > > │
00:00:27 v #1239 > > ................................................................................
00:00:27 v #1240 > > ................................................................................
00:00:27 v #1241 > > │
00:00:27 v #1242 > > ................................................................................
00:00:27 v #1243 > > ................................................................................
00:00:27 v #1244 > > │
00:00:27 v #1245 > > ................................................................................
00:00:27 v #1246 > > ................................................................................
00:00:27 v #1247 > > │
00:00:27 v #1248 > > ................................................................................
00:00:27 v #1249 > > ................................................................................
00:00:27 v #1250 > > │
00:00:27 v #1251 > > ................................................................................
00:00:27 v #1252 > > ................................................................................
00:00:27 v #1253 > > │
00:00:27 v #1254 > > │
00:00:27 v #1255 > > ................................................................................
00:00:27 v #1256 > > ................................................................................
00:00:27 v #1257 > > │
00:00:27 v #1258 > > ................................................................................
00:00:27 v #1259 > > ................................................................................
00:00:27 v #1260 > > │
00:00:27 v #1261 > > ................................................................................
00:00:27 v #1262 > > ................................................................................
00:00:27 v #1263 > > │
00:00:27 v #1264 > > ................................................................................
00:00:27 v #1265 > > ................................................................................
00:00:27 v #1266 > > │
00:00:27 v #1267 > > ................................................................................
00:00:27 v #1268 > > ................................................................................
00:00:27 v #1269 > > │
00:00:27 v #1270 > > ................................................................................
00:00:27 v #1271 > > ................................................................................
00:00:27 v #1272 > > │
00:00:27 v #1273 > > ................................................................................
00:00:27 v #1274 > > ................................................................................
00:00:27 v #1275 > > │
00:00:27 v #1276 > > ................................................................................
00:00:27 v #1277 > > ................................................................................
00:00:27 v #1278 > > │
00:00:27 v #1279 > > ................................................................................
00:00:27 v #1280 > > ................................................................................
00:00:27 v #1281 > > │
00:00:27 v #1282 > > ................................................................................
00:00:27 v #1283 > > ................................................................................
00:00:27 v #1284 > > │
00:00:27 v #1285 > > ......................;;;;;;;;;;;...............................................
00:00:27 v #1286 > > ................................................................................
00:00:27 v #1287 > > │
00:00:27 v #1288 > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
00:00:27 v #1289 > > ................................................................................
00:00:27 v #1290 > > │
00:00:27 v #1291 > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
00:00:27 v #1292 > > ................................................................................
00:00:27 v #1293 > > │
00:00:27 v #1294 > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
00:00:27 v #1295 > > ................................................................................
00:00:27 v #1296 > > │
00:00:27 v #1297 > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
00:00:27 v #1298 > > ................................................................................
00:00:27 v #1299 > > │
00:00:27 v #1300 > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
00:00:27 v #1301 > > ................................................................................
00:00:27 v #1302 > > │
00:00:27 v #1303 > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
00:00:27 v #1304 > > ..............;;;;;;............................................................
00:00:27 v #1305 > > │
00:00:27 v #1306 > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
00:00:27 v #1307 > > .>;;;;;;;;;;;;;;;;;;............................................................
00:00:27 v #1308 > > │
00:00:27 v #1309 > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
00:00:27 v #1310 > > ./;;;;;;;;;;;;;;;;;;............................................................
00:00:27 v #1311 > > │
00:00:27 v #1312 > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
00:00:27 v #1313 > > ./;;;;;;;;;;;;;;;;;;...............>;;;;;;;;;...................................
00:00:27 v #1314 > > │
00:00:27 v #1315 > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
00:00:27 v #1316 > > ./;;;;;;;;;;;;;;;;;;.............../;;;;;;;;;...................................
00:00:27 v #1317 > > │
00:00:27 v #1318 > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................
00:00:27 v #1319 > > ./;;;;;;;;;;;;;;;;;;.............../;;;;;;;;;...................................
00:00:27 v #1320 > > │
00:00:27 v #1321 > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................
00:00:27 v #1322 > > ./;;;;;;;;;;;;;;;;;;\............../;;;;;;;;;...................................
00:00:27 v #1323 > > │
00:00:27 v #1324 > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................
00:00:27 v #1325 > > ./;;;;;;;;;;;;;;;;;;;............../<<<<<<<<<...................................
00:00:27 v #1326 > > │
00:00:27 v #1327 > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................
00:00:27 v #1328 > > ./;;;;;;;;;;;;;;;;;;;............../<<<<<<<<....................................
00:00:27 v #1329 > > │
00:00:27 v #1330 > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................
00:00:27 v #1331 > > ./<<<<<<<<<<<<<<<<<<<...........................................................
00:00:27 v #1332 > > │
00:00:27 v #1333 > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................
00:00:27 v #1334 > > ./<<<<<<<<<<<<<<<...............................................................
00:00:27 v #1335 > > │
00:00:27 v #1336 > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................
00:00:27 v #1337 > > ................................................................................
00:00:27 v #1338 > > │
00:00:27 v #1339 > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................
00:00:27 v #1340 > > ................................................................................
00:00:27 v #1341 > > │
00:00:27 v #1342 > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................
00:00:27 v #1343 > > ................................................................................
00:00:27 v #1344 > > │
00:00:27 v #1345 > > ......................;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<................
00:00:27 v #1346 > > ................................................................................
00:00:27 v #1347 > > │
00:00:27 v #1348 > > ......................<<<<<<<<<<................................................
00:00:27 v #1349 > > ................................................................................
00:00:27 v #1350 > > │
00:00:27 v #1351 > > ................................................................................
00:00:27 v #1352 > > ................................................................................
00:00:27 v #1353 > > │
00:00:27 v #1354 > > ................................................................................
00:00:27 v #1355 > > ................................................................................
00:00:27 v #1356 > > │
00:00:27 v #1357 > > ................................................................................
00:00:27 v #1358 > > ................................................................................
00:00:27 v #1359 > > │
00:00:27 v #1360 > > ................................................................................
00:00:27 v #1361 > > ................................................................................
00:00:27 v #1362 > > │
00:00:27 v #1363 > > ................................................................................
00:00:27 v #1364 > > ................................................................................
00:00:27 v #1365 > > │
00:00:27 v #1366 > > ................................................................................
00:00:27 v #1367 > > ................................................................................
00:00:27 v #1368 > > │
00:00:27 v #1369 > > ................................................................................
00:00:27 v #1370 > > ................................................................................
00:00:27 v #1371 > > │
00:00:27 v #1372 > > ................................................................................
00:00:27 v #1373 > > ................................................................................
00:00:27 v #1374 > > │
00:00:27 v #1375 > > ................................................................................
00:00:27 v #1376 > > ................................................................................
00:00:27 v #1377 > > │
00:00:27 v #1378 > > ................................................................................
00:00:27 v #1379 > > ................................................................................
00:00:27 v #1380 > > │
00:00:27 v #1381 > > ................................................................................
00:00:27 v #1382 > > ................................................................................
00:00:27 v #1383 > > │
00:00:27 v #1384 > > ................................................................................
00:00:27 v #1385 > > ................................................................................
00:00:27 v #1386 > > │
00:00:27 v #1387 > > │
00:00:27 v #1388 > > ................................................................................
00:00:27 v #1389 > > ................................................................................
00:00:27 v #1390 > > │
00:00:27 v #1391 > > ................................................................................
00:00:27 v #1392 > > ................................................................................
00:00:27 v #1393 > > │
00:00:27 v #1394 > > ................................................................................
00:00:27 v #1395 > > ................................................................................
00:00:27 v #1396 > > │
00:00:27 v #1397 > > ................................................................................
00:00:27 v #1398 > > ................................................................................
00:00:27 v #1399 > > │
00:00:27 v #1400 > > ................................................................................
00:00:27 v #1401 > > ................................................................................
00:00:27 v #1402 > > │
00:00:27 v #1403 > > ................................................................................
00:00:27 v #1404 > > ................................................................................
00:00:27 v #1405 > > │
00:00:27 v #1406 > > ................................................................................
00:00:27 v #1407 > > ................................................................................
00:00:27 v #1408 > > │
00:00:27 v #1409 > > ................................................................................
00:00:27 v #1410 > > ................................................................................
00:00:27 v #1411 > > │
00:00:27 v #1412 > > ................................................................................
00:00:27 v #1413 > > ................................................................................
00:00:27 v #1414 > > │
00:00:27 v #1415 > > ................................................................................
00:00:27 v #1416 > > ................................................................................
00:00:27 v #1417 > > │
00:00:27 v #1418 > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................
00:00:27 v #1419 > > ................................................................................
00:00:27 v #1420 > > │
00:00:27 v #1421 > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................
00:00:27 v #1422 > > ................................................................................
00:00:27 v #1423 > > │
00:00:27 v #1424 > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
00:00:27 v #1425 > > ................................................................................
00:00:27 v #1426 > > │
00:00:27 v #1427 > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
00:00:27 v #1428 > > ................................................................................
00:00:27 v #1429 > > │
00:00:27 v #1430 > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
00:00:27 v #1431 > > ................................................................................
00:00:27 v #1432 > > │
00:00:27 v #1433 > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
00:00:27 v #1434 > > ................................................................................
00:00:27 v #1435 > > │
00:00:27 v #1436 > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
00:00:27 v #1437 > > ..;;;;;;;;;;;;;;;;;;............................................................
00:00:27 v #1438 > > │
00:00:27 v #1439 > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
00:00:27 v #1440 > > .>;;;;;;;;;;;;;;;;;;............................................................
00:00:27 v #1441 > > │
00:00:27 v #1442 > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
00:00:27 v #1443 > > ./;;;;;;;;;;;;;;;;;;............................................................
00:00:27 v #1444 > > │
00:00:27 v #1445 > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................
00:00:27 v #1446 > > >/;;;;;;;;;;;;;;;;;;...............>;;;;;;;;;...................................
00:00:27 v #1447 > > │
00:00:27 v #1448 > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................
00:00:27 v #1449 > > ./;;;;;;;;;;;;;;;;;;\............../;;;;;;;;;...................................
00:00:27 v #1450 > > │
00:00:27 v #1451 > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................
00:00:27 v #1452 > > ./;;;;;;;;;;;;;;;;;;;............../;;;;;;;;;...................................
00:00:27 v #1453 > > │
00:00:27 v #1454 > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................
00:00:27 v #1455 > > ./;;;;;;;;;;;;;;;;;;;............../;;;;;;;;;\..................................
00:00:27 v #1456 > > │
00:00:27 v #1457 > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................
00:00:27 v #1458 > > .//;;;;;;;;;;;;;;;;;;............../<<<<<<<<<\..................................
00:00:27 v #1459 > > │
00:00:27 v #1460 > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................
00:00:27 v #1461 > > .//;;;;;;;;;;;;;;;;;;............../<<<<<<<<....................................
00:00:27 v #1462 > > │
00:00:27 v #1463 > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................
00:00:27 v #1464 > > .//<<<<<<<<<<<<<<<<<<...........................................................
00:00:27 v #1465 > > │
00:00:27 v #1466 > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................
00:00:27 v #1467 > > ./<<<<<<<<<<<<<<<<..............................................................
00:00:27 v #1468 > > │
00:00:27 v #1469 > > ........................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...............
00:00:27 v #1470 > > ................................................................................
00:00:27 v #1471 > > │
00:00:27 v #1472 > > ........................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...............
00:00:27 v #1473 > > ................................................................................
00:00:27 v #1474 > > │
00:00:27 v #1475 > > ........................;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<...............
00:00:27 v #1476 > > ................................................................................
00:00:27 v #1477 > > │
00:00:27 v #1478 > > ........................<<<<<<<<<<<<<<<<<<<<<<..................................
00:00:27 v #1479 > > ................................................................................
00:00:27 v #1480 > > │
00:00:27 v #1481 > > ................................................................................
00:00:27 v #1482 > > ................................................................................
00:00:27 v #1483 > > │
00:00:27 v #1484 > > ................................................................................
00:00:27 v #1485 > > ................................................................................
00:00:27 v #1486 > > │
00:00:27 v #1487 > > ................................................................................
00:00:27 v #1488 > > ................................................................................
00:00:27 v #1489 > > │
00:00:27 v #1490 > > ................................................................................
00:00:27 v #1491 > > ................................................................................
00:00:27 v #1492 > > │
00:00:27 v #1493 > > ................................................................................
00:00:27 v #1494 > > ................................................................................
00:00:27 v #1495 > > │
00:00:27 v #1496 > > ................................................................................
00:00:27 v #1497 > > ................................................................................
00:00:27 v #1498 > > │
00:00:27 v #1499 > > ................................................................................
00:00:27 v #1500 > > ................................................................................
00:00:27 v #1501 > > │
00:00:27 v #1502 > > ................................................................................
00:00:27 v #1503 > > ................................................................................
00:00:27 v #1504 > > │
00:00:27 v #1505 > > ................................................................................
00:00:27 v #1506 > > ................................................................................
00:00:27 v #1507 > > │
00:00:27 v #1508 > > ................................................................................
00:00:27 v #1509 > > ................................................................................
00:00:27 v #1510 > > │
00:00:27 v #1511 > > ................................................................................
00:00:27 v #1512 > > ................................................................................
00:00:27 v #1513 > > │
00:00:27 v #1514 > > ................................................................................
00:00:27 v #1515 > > ................................................................................
00:00:27 v #1516 > > │
00:00:27 v #1517 > > ................................................................................
00:00:27 v #1518 > > ................................................................................
00:00:27 v #1519 > > │
00:00:27 v #1520 > > │
00:00:27 v #1521 > > ................................................................................
00:00:27 v #1522 > > ................................................................................
00:00:27 v #1523 > > │
00:00:27 v #1524 > > ................................................................................
00:00:27 v #1525 > > ................................................................................
00:00:27 v #1526 > > │
00:00:27 v #1527 > > ................................................................................
00:00:27 v #1528 > > ................................................................................
00:00:27 v #1529 > > │
00:00:27 v #1530 > > ................................................................................
00:00:27 v #1531 > > ................................................................................
00:00:27 v #1532 > > │
00:00:27 v #1533 > > ................................................................................
00:00:27 v #1534 > > ................................................................................
00:00:27 v #1535 > > │
00:00:27 v #1536 > > ................................................................................
00:00:27 v #1537 > > ................................................................................
00:00:27 v #1538 > > │
00:00:27 v #1539 > > ................................................................................
00:00:27 v #1540 > > ................................................................................
00:00:27 v #1541 > > │
00:00:27 v #1542 > > ................................................................................
00:00:27 v #1543 > > ................................................................................
00:00:27 v #1544 > > │
00:00:27 v #1545 > > ................................................................................
00:00:27 v #1546 > > ................................................................................
00:00:27 v #1547 > > │
00:00:27 v #1548 > > ................................................................................
00:00:27 v #1549 > > ................................................................................
00:00:27 v #1550 > > │
00:00:27 v #1551 > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................
00:00:27 v #1552 > > ................................................................................
00:00:27 v #1553 > > │
00:00:27 v #1554 > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................
00:00:27 v #1555 > > ................................................................................
00:00:27 v #1556 > > │
00:00:27 v #1557 > > ......................>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................
00:00:27 v #1558 > > ................................................................................
00:00:27 v #1559 > > │
00:00:27 v #1560 > > ....................../;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
00:00:27 v #1561 > > ................................................................................
00:00:27 v #1562 > > │
00:00:27 v #1563 > > ....................../;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
00:00:27 v #1564 > > ................................................................................
00:00:27 v #1565 > > │
00:00:27 v #1566 > > ....................../;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
00:00:27 v #1567 > > ................................................................................
00:00:27 v #1568 > > │
00:00:27 v #1569 > > ....................../;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
00:00:27 v #1570 > > ..;;;;;;;;;;;;;;;;;;............................................................
00:00:27 v #1571 > > │
00:00:27 v #1572 > > ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
00:00:27 v #1573 > > .>;;;;;;;;;;;;;;;;;;............................................................
00:00:27 v #1574 > > │
00:00:27 v #1575 > > ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................
00:00:27 v #1576 > > >/;;;;;;;;;;;;;;;;;;............................................................
00:00:27 v #1577 > > │
00:00:27 v #1578 > > ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................
00:00:27 v #1579 > > //;;;;;;;;;;;;;;;;;;\..............>;;;;;;;;;...................................
00:00:27 v #1580 > > │
00:00:27 v #1581 > > ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................
00:00:27 v #1582 > > ///;;;;;;;;;;;;;;;;;;............../;;;;;;;;;...................................
00:00:27 v #1583 > > │
00:00:27 v #1584 > > ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................
00:00:27 v #1585 > > ///;;;;;;;;;;;;;;;;;;............../;;;;;;;;;\..................................
00:00:27 v #1586 > > │
00:00:27 v #1587 > > ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................
00:00:27 v #1588 > > ///;;;;;;;;;;;;;;;;;;............../;;;;;;;;;;..................................
00:00:27 v #1589 > > │
00:00:27 v #1590 > > ......................./;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................
00:00:27 v #1591 > > .//;;;;;;;;;;;;;;;;;;;.............//<<<<<<<<<..................................
00:00:27 v #1592 > > │
00:00:27 v #1593 > > .......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...............
00:00:27 v #1594 > > .//;;;;;;;;;;;;;;;;<<<............./<<<<<<<<....................................
00:00:27 v #1595 > > │
00:00:27 v #1596 > > .......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...............
00:00:27 v #1597 > > .///<<<<<<<<<<<<<<<<<...........................................................
00:00:27 v #1598 > > │
00:00:27 v #1599 > > .......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..............
00:00:27 v #1600 > > ./<<<<<<<<<<<<<<<<..............................................................
00:00:27 v #1601 > > │
00:00:27 v #1602 > > .......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..............
00:00:27 v #1603 > > ................................................................................
00:00:27 v #1604 > > │
00:00:27 v #1605 > > .......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<..............
00:00:27 v #1606 > > ................................................................................
00:00:27 v #1607 > > │
00:00:27 v #1608 > > .......................//;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<...................
00:00:27 v #1609 > > ................................................................................
00:00:27 v #1610 > > │
00:00:27 v #1611 > > .......................//<<<<<<<<<<<<<<<<<<<<<<<<<..............................
00:00:27 v #1612 > > ................................................................................
00:00:27 v #1613 > > │
00:00:27 v #1614 > > ........................<<<<<<<.................................................
00:00:27 v #1615 > > ................................................................................
00:00:27 v #1616 > > │
00:00:27 v #1617 > > ................................................................................
00:00:27 v #1618 > > ................................................................................
00:00:27 v #1619 > > │
00:00:27 v #1620 > > ................................................................................
00:00:27 v #1621 > > ................................................................................
00:00:27 v #1622 > > │
00:00:27 v #1623 > > ................................................................................
00:00:27 v #1624 > > ................................................................................
00:00:27 v #1625 > > │
00:00:27 v #1626 > > ................................................................................
00:00:27 v #1627 > > ................................................................................
00:00:27 v #1628 > > │
00:00:27 v #1629 > > ................................................................................
00:00:27 v #1630 > > ................................................................................
00:00:27 v #1631 > > │
00:00:27 v #1632 > > ................................................................................
00:00:27 v #1633 > > ................................................................................
00:00:27 v #1634 > > │
00:00:27 v #1635 > > ................................................................................
00:00:27 v #1636 > > ................................................................................
00:00:27 v #1637 > > │
00:00:27 v #1638 > > ................................................................................
00:00:27 v #1639 > > ................................................................................
00:00:27 v #1640 > > │
00:00:27 v #1641 > > ................................................................................
00:00:27 v #1642 > > ................................................................................
00:00:27 v #1643 > > │
00:00:27 v #1644 > > ................................................................................
00:00:27 v #1645 > > ................................................................................
00:00:27 v #1646 > > │
00:00:27 v #1647 > > ................................................................................
00:00:27 v #1648 > > ................................................................................
00:00:27 v #1649 > > │
00:00:27 v #1650 > > ................................................................................
00:00:27 v #1651 > > ................................................................................
00:00:27 v #1652 > > │
00:00:27 v #1653 > > │
00:00:27 v #1654 > > ................................................................................
00:00:27 v #1655 > > ................................................................................
00:00:27 v #1656 > > │
00:00:27 v #1657 > > ................................................................................
00:00:27 v #1658 > > ................................................................................
00:00:27 v #1659 > > │
00:00:27 v #1660 > > ................................................................................
00:00:27 v #1661 > > ................................................................................
00:00:27 v #1662 > > │
00:00:27 v #1663 > > ................................................................................
00:00:27 v #1664 > > ................................................................................
00:00:27 v #1665 > > │
00:00:27 v #1666 > > ................................................................................
00:00:27 v #1667 > > ................................................................................
00:00:27 v #1668 > > │
00:00:27 v #1669 > > ................................................................................
00:00:27 v #1670 > > ................................................................................
00:00:27 v #1671 > > │
00:00:27 v #1672 > > ................................................................................
00:00:27 v #1673 > > ................................................................................
00:00:27 v #1674 > > │
00:00:27 v #1675 > > ................................................................................
00:00:27 v #1676 > > ................................................................................
00:00:27 v #1677 > > │
00:00:27 v #1678 > > ................................................................................
00:00:27 v #1679 > > ................................................................................
00:00:27 v #1680 > > │
00:00:27 v #1681 > > ................................................................................
00:00:27 v #1682 > > ................................................................................
00:00:27 v #1683 > > │
00:00:27 v #1684 > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.....................
00:00:27 v #1685 > > ................................................................................
00:00:27 v #1686 > > │
00:00:27 v #1687 > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.....................
00:00:27 v #1688 > > ................................................................................
00:00:27 v #1689 > > │
00:00:27 v #1690 > > ......................>/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................
00:00:27 v #1691 > > ................................................................................
00:00:27 v #1692 > > │
00:00:27 v #1693 > > ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................
00:00:27 v #1694 > > ................................................................................
00:00:27 v #1695 > > │
00:00:27 v #1696 > > ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
00:00:27 v #1697 > > ................................................................................
00:00:27 v #1698 > > │
00:00:27 v #1699 > > ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
00:00:27 v #1700 > > ................................................................................
00:00:27 v #1701 > > │
00:00:27 v #1702 > > .....................>//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
00:00:27 v #1703 > > ..;;;;;;;;;;;;;;;;;.............................................................
00:00:27 v #1704 > > │
00:00:27 v #1705 > > .....................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
00:00:27 v #1706 > > .>;;;;;;;;;;;;;;;;;;............................................................
00:00:27 v #1707 > > │
00:00:27 v #1708 > > .....................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................
00:00:27 v #1709 > > >//;;;;;;;;;;;;;;;;;............................................................
00:00:27 v #1710 > > │
00:00:27 v #1711 > > .....................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................
00:00:27 v #1712 > > ///;;;;;;;;;;;;;;;;;\..............>;;;;;;;;;...................................
00:00:27 v #1713 > > │
00:00:27 v #1714 > > .....................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................
00:00:27 v #1715 > > ///;;;;;;;;;;;;;;;;;;.............>/;;;;;;;;;...................................
00:00:27 v #1716 > > │
00:00:27 v #1717 > > ......................///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................
00:00:27 v #1718 > > ///;;;;;;;;;;;;;;;;;;.............//;;;;;;;;;\..................................
00:00:27 v #1719 > > │
00:00:27 v #1720 > > ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...............
00:00:27 v #1721 > > ////;;;;;;;;;;;;;;;;;;.............//;;;;;;;;;..................................
00:00:27 v #1722 > > │
00:00:27 v #1723 > > ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...............
00:00:27 v #1724 > > ////;;;;;;;;;;;;;;;;;;.............//<<<<<<<<<..................................
00:00:27 v #1725 > > │
00:00:27 v #1726 > > ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..............
00:00:27 v #1727 > > ////;;;;;;;<<<<<<<<<<<............./<<<<<<<<....................................
00:00:27 v #1728 > > │
00:00:27 v #1729 > > ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..............
00:00:27 v #1730 > > .///<<<<<<<<<<<<<<<<<...........................................................
00:00:27 v #1731 > > │
00:00:27 v #1732 > > ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............
00:00:27 v #1733 > > .//<<<<<<<<<<<<<<<..............................................................
00:00:27 v #1734 > > │
00:00:27 v #1735 > > .......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<.............
00:00:27 v #1736 > > .<<<............................................................................
00:00:27 v #1737 > > │
00:00:27 v #1738 > > .......................////;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<...............
00:00:27 v #1739 > > ................................................................................
00:00:27 v #1740 > > │
00:00:27 v #1741 > > .......................////<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<......................
00:00:27 v #1742 > > ................................................................................
00:00:27 v #1743 > > │
00:00:27 v #1744 > > .......................////<<<<<<<<<<<<<<<<<<<<<<<<<............................
00:00:27 v #1745 > > ................................................................................
00:00:27 v #1746 > > │
00:00:27 v #1747 > > .......................//<<<<<<<<<<<<<..........................................
00:00:27 v #1748 > > ................................................................................
00:00:27 v #1749 > > │
00:00:27 v #1750 > > ................................................................................
00:00:27 v #1751 > > ................................................................................
00:00:27 v #1752 > > │
00:00:27 v #1753 > > ................................................................................
00:00:27 v #1754 > > ................................................................................
00:00:27 v #1755 > > │
00:00:27 v #1756 > > ................................................................................
00:00:27 v #1757 > > ................................................................................
00:00:27 v #1758 > > │
00:00:27 v #1759 > > ................................................................................
00:00:27 v #1760 > > ................................................................................
00:00:27 v #1761 > > │
00:00:27 v #1762 > > ................................................................................
00:00:27 v #1763 > > ................................................................................
00:00:27 v #1764 > > │
00:00:27 v #1765 > > ................................................................................
00:00:27 v #1766 > > ................................................................................
00:00:27 v #1767 > > │
00:00:27 v #1768 > > ................................................................................
00:00:27 v #1769 > > ................................................................................
00:00:27 v #1770 > > │
00:00:27 v #1771 > > ................................................................................
00:00:27 v #1772 > > ................................................................................
00:00:27 v #1773 > > │
00:00:27 v #1774 > > ................................................................................
00:00:27 v #1775 > > ................................................................................
00:00:27 v #1776 > > │
00:00:27 v #1777 > > ................................................................................
00:00:27 v #1778 > > ................................................................................
00:00:27 v #1779 > > │
00:00:27 v #1780 > > ................................................................................
00:00:27 v #1781 > > ................................................................................
00:00:27 v #1782 > > │
00:00:27 v #1783 > > ................................................................................
00:00:27 v #1784 > > ................................................................................
00:00:27 v #1785 > > │
00:00:27 v #1786 > > │
00:00:27 v #1787 > > ................................................................................
00:00:27 v #1788 > > ................................................................................
00:00:27 v #1789 > > │
00:00:27 v #1790 > > ................................................................................
00:00:27 v #1791 > > ................................................................................
00:00:27 v #1792 > > │
00:00:27 v #1793 > > ................................................................................
00:00:27 v #1794 > > ................................................................................
00:00:27 v #1795 > > │
00:00:27 v #1796 > > ................................................................................
00:00:27 v #1797 > > ................................................................................
00:00:27 v #1798 > > │
00:00:27 v #1799 > > ................................................................................
00:00:27 v #1800 > > ................................................................................
00:00:27 v #1801 > > │
00:00:27 v #1802 > > ................................................................................
00:00:27 v #1803 > > ................................................................................
00:00:27 v #1804 > > │
00:00:27 v #1805 > > ................................................................................
00:00:27 v #1806 > > ................................................................................
00:00:27 v #1807 > > │
00:00:27 v #1808 > > ................................................................................
00:00:27 v #1809 > > ................................................................................
00:00:27 v #1810 > > │
00:00:27 v #1811 > > ................................................................................
00:00:27 v #1812 > > ................................................................................
00:00:27 v #1813 > > │
00:00:27 v #1814 > > ................................................................................
00:00:27 v #1815 > > ................................................................................
00:00:27 v #1816 > > │
00:00:27 v #1817 > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;......................
00:00:27 v #1818 > > ................................................................................
00:00:27 v #1819 > > │
00:00:27 v #1820 > > ......................./;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.....................
00:00:27 v #1821 > > ................................................................................
00:00:27 v #1822 > > │
00:00:27 v #1823 > > ......................>/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................
00:00:27 v #1824 > > ................................................................................
00:00:27 v #1825 > > │
00:00:27 v #1826 > > ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................
00:00:27 v #1827 > > ................................................................................
00:00:27 v #1828 > > │
00:00:27 v #1829 > > ......................///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
00:00:27 v #1830 > > ................................................................................
00:00:27 v #1831 > > │
00:00:27 v #1832 > > .....................>///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
00:00:27 v #1833 > > ................................................................................
00:00:27 v #1834 > > │
00:00:27 v #1835 > > .....................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
00:00:27 v #1836 > > ..;;;;;;;;;;;;;;;;;.............................................................
00:00:27 v #1837 > > │
00:00:27 v #1838 > > ....................>////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
00:00:27 v #1839 > > .>/;;;;;;;;;;;;;;;;;............................................................
00:00:27 v #1840 > > │
00:00:27 v #1841 > > ....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................
00:00:27 v #1842 > > >//;;;;;;;;;;;;;;;;;............................................................
00:00:27 v #1843 > > │
00:00:27 v #1844 > > ....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...............>
00:00:27 v #1845 > > ///;;;;;;;;;;;;;;;;;;..............>;;;;;;;;;...................................
00:00:27 v #1846 > > │
00:00:27 v #1847 > > ...................../////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...............
00:00:27 v #1848 > > ////;;;;;;;;;;;;;;;;;.............//;;;;;;;;;...................................
00:00:27 v #1849 > > │
00:00:27 v #1850 > > .....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..............
00:00:27 v #1851 > > ////;;;;;;;;;;;;;;;;;;............///;;;;;;;;;..................................
00:00:27 v #1852 > > │
00:00:27 v #1853 > > .....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...............
00:00:27 v #1854 > > ////;;;;;;;;;;;;;;;;;;............///;;;;;;;;;..................................
00:00:27 v #1855 > > │
00:00:27 v #1856 > > .....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..............
00:00:27 v #1857 > > ////;;;;;;;;;;;;;;;;;;;............//;<<<<<<<<..................................
00:00:27 v #1858 > > │
00:00:27 v #1859 > > .....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............
00:00:27 v #1860 > > /////<<<<<<<<<<<<<<<<<<............/<<<<<<<<....................................
00:00:27 v #1861 > > │
00:00:27 v #1862 > > ......................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............
00:00:27 v #1863 > > .///<<<<<<<<<<<<<<<<............................................................
00:00:27 v #1864 > > │
00:00:27 v #1865 > > ......................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<............
00:00:27 v #1866 > > .//<<<<<<<<<<<<<<<..............................................................
00:00:27 v #1867 > > │
00:00:27 v #1868 > > ......................//////;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<.............
00:00:27 v #1869 > > .<<<<<<.........................................................................
00:00:27 v #1870 > > │
00:00:27 v #1871 > > ......................///////;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<..................
00:00:27 v #1872 > > ................................................................................
00:00:27 v #1873 > > │
00:00:27 v #1874 > > .......................//////<<<<<<<<<<<<<<<<<<<<<<<<<<<<.......................
00:00:27 v #1875 > > ................................................................................
00:00:27 v #1876 > > │
00:00:27 v #1877 > > .......................////<<<<<<<<<<<<<<<<<<<<<<<<<<...........................
00:00:27 v #1878 > > ................................................................................
00:00:27 v #1879 > > │
00:00:27 v #1880 > > .......................///<<<<<<<<<<<<<<<<......................................
00:00:27 v #1881 > > ................................................................................
00:00:27 v #1882 > > │
00:00:27 v #1883 > > ......................./<<<<<...................................................
00:00:27 v #1884 > > ................................................................................
00:00:27 v #1885 > > │
00:00:27 v #1886 > > ................................................................................
00:00:27 v #1887 > > ................................................................................
00:00:27 v #1888 > > │
00:00:27 v #1889 > > ................................................................................
00:00:27 v #1890 > > ................................................................................
00:00:27 v #1891 > > │
00:00:27 v #1892 > > ................................................................................
00:00:27 v #1893 > > ................................................................................
00:00:27 v #1894 > > │
00:00:27 v #1895 > > ................................................................................
00:00:27 v #1896 > > ................................................................................
00:00:27 v #1897 > > │
00:00:27 v #1898 > > ................................................................................
00:00:27 v #1899 > > ................................................................................
00:00:27 v #1900 > > │
00:00:27 v #1901 > > ................................................................................
00:00:27 v #1902 > > ................................................................................
00:00:27 v #1903 > > │
00:00:27 v #1904 > > ................................................................................
00:00:27 v #1905 > > ................................................................................
00:00:27 v #1906 > > │
00:00:27 v #1907 > > ................................................................................
00:00:27 v #1908 > > ................................................................................
00:00:27 v #1909 > > │
00:00:27 v #1910 > > ................................................................................
00:00:27 v #1911 > > ................................................................................
00:00:27 v #1912 > > │
00:00:27 v #1913 > > ................................................................................
00:00:27 v #1914 > > ................................................................................
00:00:27 v #1915 > > │
00:00:27 v #1916 > > ................................................................................
00:00:27 v #1917 > > ................................................................................
00:00:27 v #1918 > > │
00:00:27 v #1919 > > │
00:00:27 v #1920 > > ................................................................................
00:00:27 v #1921 > > ................................................................................
00:00:27 v #1922 > > │
00:00:27 v #1923 > > ................................................................................
00:00:27 v #1924 > > ................................................................................
00:00:27 v #1925 > > │
00:00:27 v #1926 > > ................................................................................
00:00:27 v #1927 > > ................................................................................
00:00:27 v #1928 > > │
00:00:27 v #1929 > > ................................................................................
00:00:27 v #1930 > > ................................................................................
00:00:27 v #1931 > > │
00:00:27 v #1932 > > ................................................................................
00:00:27 v #1933 > > ................................................................................
00:00:27 v #1934 > > │
00:00:27 v #1935 > > ................................................................................
00:00:27 v #1936 > > ................................................................................
00:00:27 v #1937 > > │
00:00:27 v #1938 > > ................................................................................
00:00:27 v #1939 > > ................................................................................
00:00:27 v #1940 > > │
00:00:27 v #1941 > > ................................................................................
00:00:27 v #1942 > > ................................................................................
00:00:27 v #1943 > > │
00:00:27 v #1944 > > ................................................................................
00:00:27 v #1945 > > ................................................................................
00:00:27 v #1946 > > │
00:00:27 v #1947 > > ........................;;;;;;..................................................
00:00:27 v #1948 > > ................................................................................
00:00:27 v #1949 > > │
00:00:27 v #1950 > > .......................>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.......................
00:00:27 v #1951 > > ................................................................................
00:00:27 v #1952 > > │
00:00:27 v #1953 > > ......................./;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;......................
00:00:27 v #1954 > > ................................................................................
00:00:27 v #1955 > > │
00:00:27 v #1956 > > ......................>/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.....................
00:00:27 v #1957 > > ................................................................................
00:00:27 v #1958 > > │
00:00:27 v #1959 > > ......................///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................
00:00:27 v #1960 > > ................................................................................
00:00:27 v #1961 > > │
00:00:27 v #1962 > > .....................>///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................
00:00:27 v #1963 > > ................................................................................
00:00:27 v #1964 > > │
00:00:27 v #1965 > > ...................../////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
00:00:27 v #1966 > > ................................................................................
00:00:27 v #1967 > > │
00:00:27 v #1968 > > ....................>/////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
00:00:27 v #1969 > > ..;;;;;;;;;;;;;;;;;.............................................................
00:00:27 v #1970 > > │
00:00:27 v #1971 > > ....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................
00:00:27 v #1972 > > .>/;;;;;;;;;;;;;;;;\............................................................
00:00:27 v #1973 > > │
00:00:27 v #1974 > > ...................>///////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................
00:00:27 v #1975 > > >//;;;;;;;;;;;;;;;;;............................................................
00:00:27 v #1976 > > │
00:00:27 v #1977 > > ...................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...............
00:00:27 v #1978 > > ///;;;;;;;;;;;;;;;;;;..............>;;;;;;;;;...................................
00:00:27 v #1979 > > │
00:00:27 v #1980 > > ....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..............
00:00:27 v #1981 > > ////;;;;;;;;;;;;;;;;;\............>/;;;;;;;;;\..................................
00:00:27 v #1982 > > │
00:00:27 v #1983 > > ....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............
00:00:27 v #1984 > > ////;;;;;;;;;;;;;;;;;;............///;;;;;;;;;..................................
00:00:27 v #1985 > > │
00:00:27 v #1986 > > ....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............
00:00:27 v #1987 > > /////;;;;;;;;;;;;;;;;;;...........///;;;;;;;<<\.................................
00:00:27 v #1988 > > │
00:00:27 v #1989 > > .....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............
00:00:27 v #1990 > > /////;;;;;;;;;;;;;;<<<<............///<<<<<<<<..................................
00:00:27 v #1991 > > │
00:00:27 v #1992 > > .....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............
00:00:27 v #1993 > > //////<<<<<<<<<<<<<<<<<............//<<<<<<<....................................
00:00:27 v #1994 > > │
00:00:27 v #1995 > > ...................../////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............
00:00:27 v #1996 > > /////<<<<<<<<<<<<<<<............................................................
00:00:27 v #1997 > > │
00:00:27 v #1998 > > ...................../////////;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<............
00:00:27 v #1999 > > .//<<<<<<<<<<<<<<<..............................................................
00:00:27 v #2000 > > │
00:00:27 v #2001 > > ......................////////;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<................
00:00:27 v #2002 > > ./<<<<<<<<......................................................................
00:00:27 v #2003 > > │
00:00:27 v #2004 > > ....................../////////<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<...................
00:00:27 v #2005 > > ................................................................................
00:00:27 v #2006 > > │
00:00:27 v #2007 > > ......................////////<<<<<<<<<<<<<<<<<<<<<<<<<<<.......................
00:00:27 v #2008 > > ................................................................................
00:00:27 v #2009 > > │
00:00:27 v #2010 > > ......................./////<<<<<<<<<<<<<<<<<<<<<<<<<...........................
00:00:27 v #2011 > > ................................................................................
00:00:27 v #2012 > > │
00:00:27 v #2013 > > .......................///<<<<<<<<<<<<<<<<<<<<..................................
00:00:27 v #2014 > > ................................................................................
00:00:27 v #2015 > > │
00:00:27 v #2016 > > .......................//<<<<<<<<<..............................................
00:00:27 v #2017 > > ................................................................................
00:00:27 v #2018 > > │
00:00:27 v #2019 > > ................................................................................
00:00:27 v #2020 > > ................................................................................
00:00:27 v #2021 > > │
00:00:27 v #2022 > > ................................................................................
00:00:27 v #2023 > > ................................................................................
00:00:27 v #2024 > > │
00:00:27 v #2025 > > ................................................................................
00:00:27 v #2026 > > ................................................................................
00:00:27 v #2027 > > │
00:00:27 v #2028 > > ................................................................................
00:00:27 v #2029 > > ................................................................................
00:00:27 v #2030 > > │
00:00:27 v #2031 > > ................................................................................
00:00:27 v #2032 > > ................................................................................
00:00:27 v #2033 > > │
00:00:27 v #2034 > > ................................................................................
00:00:27 v #2035 > > ................................................................................
00:00:27 v #2036 > > │
00:00:27 v #2037 > > ................................................................................
00:00:27 v #2038 > > ................................................................................
00:00:27 v #2039 > > │
00:00:27 v #2040 > > ................................................................................
00:00:27 v #2041 > > ................................................................................
00:00:27 v #2042 > > │
00:00:27 v #2043 > > ................................................................................
00:00:27 v #2044 > > ................................................................................
00:00:27 v #2045 > > │
00:00:27 v #2046 > > ................................................................................
00:00:27 v #2047 > > ................................................................................
00:00:27 v #2048 > > │
00:00:27 v #2049 > > ................................................................................
00:00:27 v #2050 > > ................................................................................
00:00:27 v #2051 > > │
00:00:27 v #2052 > > │
00:00:27 v #2053 > > ................................................................................
00:00:27 v #2054 > > ................................................................................
00:00:27 v #2055 > > │
00:00:27 v #2056 > > ................................................................................
00:00:27 v #2057 > > ................................................................................
00:00:27 v #2058 > > │
00:00:27 v #2059 > > ................................................................................
00:00:27 v #2060 > > ................................................................................
00:00:27 v #2061 > > │
00:00:27 v #2062 > > ................................................................................
00:00:27 v #2063 > > ................................................................................
00:00:27 v #2064 > > │
00:00:27 v #2065 > > ................................................................................
00:00:27 v #2066 > > ................................................................................
00:00:27 v #2067 > > │
00:00:27 v #2068 > > ................................................................................
00:00:27 v #2069 > > ................................................................................
00:00:27 v #2070 > > │
00:00:27 v #2071 > > ................................................................................
00:00:27 v #2072 > > ................................................................................
00:00:27 v #2073 > > │
00:00:27 v #2074 > > ................................................................................
00:00:27 v #2075 > > ................................................................................
00:00:27 v #2076 > > │
00:00:27 v #2077 > > ................................................................................
00:00:27 v #2078 > > ................................................................................
00:00:27 v #2079 > > │
00:00:27 v #2080 > > ........................;;;;;;;;;...............................................
00:00:27 v #2081 > > ................................................................................
00:00:27 v #2082 > > │
00:00:27 v #2083 > > .......................>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........................
00:00:27 v #2084 > > ................................................................................
00:00:27 v #2085 > > │
00:00:27 v #2086 > > ......................./;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.......................
00:00:27 v #2087 > > ................................................................................
00:00:27 v #2088 > > │
00:00:27 v #2089 > > ......................>//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;......................
00:00:27 v #2090 > > ................................................................................
00:00:27 v #2091 > > │
00:00:27 v #2092 > > ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.....................
00:00:27 v #2093 > > ................................................................................
00:00:27 v #2094 > > │
00:00:27 v #2095 > > .....................>////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................
00:00:27 v #2096 > > ................................................................................
00:00:27 v #2097 > > │
00:00:27 v #2098 > > ....................>//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
00:00:27 v #2099 > > ................................................................................
00:00:27 v #2100 > > │
00:00:27 v #2101 > > ....................>//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
00:00:27 v #2102 > > ..;;;;;;;;;;;;;;;;;.............................................................
00:00:27 v #2103 > > │
00:00:27 v #2104 > > ...................>////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................
00:00:27 v #2105 > > .>/;;;;;;;;;;;;;;;;\............................................................
00:00:27 v #2106 > > │
00:00:27 v #2107 > > .................../////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................
00:00:27 v #2108 > > >///;;;;;;;;;;;;;;;;............................................................
00:00:27 v #2109 > > │
00:00:27 v #2110 > > ..................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...............>
00:00:27 v #2111 > > ////;;;;;;;;;;;;;;;;;..............>;;;;;;;;;...................................
00:00:27 v #2112 > > │
00:00:27 v #2113 > > ...................//////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............>
00:00:27 v #2114 > > ////;;;;;;;;;;;;;;;;;;............>//;;;;;;;;\..................................
00:00:27 v #2115 > > │
00:00:27 v #2116 > > ...................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............
00:00:27 v #2117 > > /////;;;;;;;;;;;;;;;;;\...........///;;;;;;;;;..................................
00:00:27 v #2118 > > │
00:00:27 v #2119 > > ...................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............
00:00:27 v #2120 > > //////;;;;;;;;;;;;;;;;;...........////;;;<<<<<<.................................
00:00:27 v #2121 > > │
00:00:27 v #2122 > > ....................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...........
00:00:27 v #2123 > > ///////;;;;;;;<<<<<<<<<<...........///<<<<<<<<..................................
00:00:27 v #2124 > > │
00:00:27 v #2125 > > ....................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...........
00:00:27 v #2126 > > ///////<<<<<<<<<<<<<<<.............//<<<<<<<....................................
00:00:27 v #2127 > > │
00:00:27 v #2128 > > .....................//////////;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<...........
00:00:27 v #2129 > > /////<<<<<<<<<<<<<<<............................................................
00:00:27 v #2130 > > │
00:00:27 v #2131 > > .....................///////////;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<..............
00:00:27 v #2132 > > .///<<<<<<<<<<<<<<..............................................................
00:00:27 v #2133 > > │
00:00:27 v #2134 > > .....................////////////<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<.................
00:00:27 v #2135 > > .//<<<<<<<<<....................................................................
00:00:27 v #2136 > > │
00:00:27 v #2137 > > ......................//////////<<<<<<<<<<<<<<<<<<<<<<<<<<<<....................
00:00:27 v #2138 > > ................................................................................
00:00:27 v #2139 > > │
00:00:27 v #2140 > > ....................../////////<<<<<<<<<<<<<<<<<<<<<<<<<<.......................
00:00:27 v #2141 > > ................................................................................
00:00:27 v #2142 > > │
00:00:27 v #2143 > > ......................///////<<<<<<<<<<<<<<<<<<<<<<<<<..........................
00:00:27 v #2144 > > ................................................................................
00:00:27 v #2145 > > │
00:00:27 v #2146 > > ......................./////<<<<<<<<<<<<<<<<<<<<................................
00:00:27 v #2147 > > ................................................................................
00:00:27 v #2148 > > │
00:00:27 v #2149 > > .......................///<<<<<<<<<<<<..........................................
00:00:27 v #2150 > > ................................................................................
00:00:27 v #2151 > > │
00:00:27 v #2152 > > ........................<<<<<...................................................
00:00:27 v #2153 > > ................................................................................
00:00:27 v #2154 > > │
00:00:27 v #2155 > > ................................................................................
00:00:27 v #2156 > > ................................................................................
00:00:27 v #2157 > > │
00:00:27 v #2158 > > ................................................................................
00:00:27 v #2159 > > ................................................................................
00:00:27 v #2160 > > │
00:00:27 v #2161 > > ................................................................................
00:00:27 v #2162 > > ................................................................................
00:00:27 v #2163 > > │
00:00:27 v #2164 > > ................................................................................
00:00:27 v #2165 > > ................................................................................
00:00:27 v #2166 > > │
00:00:27 v #2167 > > ................................................................................
00:00:27 v #2168 > > ................................................................................
00:00:27 v #2169 > > │
00:00:27 v #2170 > > ................................................................................
00:00:27 v #2171 > > ................................................................................
00:00:27 v #2172 > > │
00:00:27 v #2173 > > ................................................................................
00:00:27 v #2174 > > ................................................................................
00:00:27 v #2175 > > │
00:00:27 v #2176 > > ................................................................................
00:00:27 v #2177 > > ................................................................................
00:00:27 v #2178 > > │
00:00:27 v #2179 > > ................................................................................
00:00:27 v #2180 > > ................................................................................
00:00:27 v #2181 > > │
00:00:27 v #2182 > > ................................................................................
00:00:27 v #2183 > > ................................................................................
00:00:27 v #2184 > > │
00:00:27 v #2185 > > │
00:00:27 v #2186 > > ................................................................................
00:00:27 v #2187 > > ................................................................................
00:00:27 v #2188 > > │
00:00:27 v #2189 > > ................................................................................
00:00:27 v #2190 > > ................................................................................
00:00:27 v #2191 > > │
00:00:27 v #2192 > > ................................................................................
00:00:27 v #2193 > > ................................................................................
00:00:27 v #2194 > > │
00:00:27 v #2195 > > ................................................................................
00:00:27 v #2196 > > ................................................................................
00:00:27 v #2197 > > │
00:00:27 v #2198 > > ................................................................................
00:00:27 v #2199 > > ................................................................................
00:00:27 v #2200 > > │
00:00:27 v #2201 > > ................................................................................
00:00:27 v #2202 > > ................................................................................
00:00:27 v #2203 > > │
00:00:27 v #2204 > > ................................................................................
00:00:27 v #2205 > > ................................................................................
00:00:27 v #2206 > > │
00:00:27 v #2207 > > ................................................................................
00:00:27 v #2208 > > ................................................................................
00:00:27 v #2209 > > │
00:00:27 v #2210 > > ................................................................................
00:00:27 v #2211 > > ................................................................................
00:00:27 v #2212 > > │
00:00:27 v #2213 > > ........................;;;;;;;;;;..............................................
00:00:27 v #2214 > > ................................................................................
00:00:27 v #2215 > > │
00:00:27 v #2216 > > .......................>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.........................
00:00:27 v #2217 > > ................................................................................
00:00:27 v #2218 > > │
00:00:27 v #2219 > > .......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........................
00:00:27 v #2220 > > ................................................................................
00:00:27 v #2221 > > │
00:00:27 v #2222 > > ......................>//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.......................
00:00:27 v #2223 > > ................................................................................
00:00:27 v #2224 > > │
00:00:27 v #2225 > > .....................>////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;......................
00:00:27 v #2226 > > ................................................................................
00:00:27 v #2227 > > │
00:00:27 v #2228 > > .....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.....................
00:00:27 v #2229 > > ................................................................................
00:00:27 v #2230 > > │
00:00:27 v #2231 > > ....................>//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................
00:00:27 v #2232 > > ................................................................................
00:00:27 v #2233 > > │
00:00:27 v #2234 > > ....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................
00:00:27 v #2235 > > ../;;;;;;;;;;;;;;;..............................................................
00:00:27 v #2236 > > │
00:00:27 v #2237 > > ...................>/////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................
00:00:27 v #2238 > > .>/;;;;;;;;;;;;;;;;.............................................................
00:00:27 v #2239 > > │
00:00:27 v #2240 > > ..................>//////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................
00:00:27 v #2241 > > >///;;;;;;;;;;;;;;;;............................................................
00:00:27 v #2242 > > │
00:00:27 v #2243 > > ..................////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..............>
00:00:27 v #2244 > > ////;;;;;;;;;;;;;;;;;..............>;;;;;;;;;...................................
00:00:27 v #2245 > > │
00:00:27 v #2246 > > ................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............>
00:00:27 v #2247 > > /////;;;;;;;;;;;;;;;;;............>//;;;;;;;;\..................................
00:00:27 v #2248 > > │
00:00:27 v #2249 > > ................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...........
00:00:27 v #2250 > > //////;;;;;;;;;;;;;;;;;..........////;;;;;;;;;\.................................
00:00:27 v #2251 > > │
00:00:27 v #2252 > > .................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..........
00:00:27 v #2253 > > //////;;;;;;;;;;;;;;;;;;..........////;<<<<<<<<.................................
00:00:27 v #2254 > > │
00:00:27 v #2255 > > .................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..........
00:00:27 v #2256 > > ///////;;<<<<<<<<<<<<<<<...........///<<<<<<<<..................................
00:00:27 v #2257 > > │
00:00:27 v #2258 > > ..................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<...........
00:00:27 v #2259 > > ////////<<<<<<<<<<<<<<.............//<<<<<<<....................................
00:00:27 v #2260 > > │
00:00:27 v #2261 > > ....................//////////////;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<.............
00:00:27 v #2262 > > //////<<<<<<<<<<<<<<............................................................
00:00:27 v #2263 > > │
00:00:27 v #2264 > > ....................//////////////;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<...............
00:00:27 v #2265 > > .////<<<<<<<<<<<<<..............................................................
00:00:27 v #2266 > > │
00:00:27 v #2267 > > ...................../////////////<<<<<<<<<<<<<<<<<<<<<<<<<<<<..................
00:00:27 v #2268 > > ..<<<<<<<<<<<...................................................................
00:00:27 v #2269 > > │
00:00:27 v #2270 > > .....................////////////<<<<<<<<<<<<<<<<<<<<<<<<<<.....................
00:00:27 v #2271 > > ................................................................................
00:00:27 v #2272 > > │
00:00:27 v #2273 > > ....................../////////<<<<<<<<<<<<<<<<<<<<<<<<<........................
00:00:27 v #2274 > > ................................................................................
00:00:27 v #2275 > > │
00:00:27 v #2276 > > ......................///////<<<<<<<<<<<<<<<<<<<<<<<<<..........................
00:00:27 v #2277 > > ................................................................................
00:00:27 v #2278 > > │
00:00:27 v #2279 > > ......................./////<<<<<<<<<<<<<<<<<<<<<<..............................
00:00:27 v #2280 > > ................................................................................
00:00:27 v #2281 > > │
00:00:27 v #2282 > > .......................////<<<<<<<<<<<<<<.......................................
00:00:27 v #2283 > > ................................................................................
00:00:27 v #2284 > > │
00:00:27 v #2285 > > ......................../<<<<<<<<...............................................
00:00:27 v #2286 > > ................................................................................
00:00:27 v #2287 > > │
00:00:27 v #2288 > > ................................................................................
00:00:27 v #2289 > > ................................................................................
00:00:27 v #2290 > > │
00:00:27 v #2291 > > ................................................................................
00:00:27 v #2292 > > ................................................................................
00:00:27 v #2293 > > │
00:00:27 v #2294 > > ................................................................................
00:00:27 v #2295 > > ................................................................................
00:00:27 v #2296 > > │
00:00:27 v #2297 > > ................................................................................
00:00:27 v #2298 > > ................................................................................
00:00:27 v #2299 > > │
00:00:27 v #2300 > > ................................................................................
00:00:27 v #2301 > > ................................................................................
00:00:27 v #2302 > > │
00:00:27 v #2303 > > ................................................................................
00:00:27 v #2304 > > ................................................................................
00:00:27 v #2305 > > │
00:00:27 v #2306 > > ................................................................................
00:00:27 v #2307 > > ................................................................................
00:00:27 v #2308 > > │
00:00:27 v #2309 > > ................................................................................
00:00:27 v #2310 > > ................................................................................
00:00:27 v #2311 > > │
00:00:27 v #2312 > > ................................................................................
00:00:27 v #2313 > > ................................................................................
00:00:27 v #2314 > > │
00:00:27 v #2315 > > ................................................................................
00:00:27 v #2316 > > ................................................................................
00:00:27 v #2317 > > │
00:00:27 v #2318 > > │
00:00:27 v #2319 > > ................................................................................
00:00:27 v #2320 > > ................................................................................
00:00:27 v #2321 > > │
00:00:27 v #2322 > > ................................................................................
00:00:27 v #2323 > > ................................................................................
00:00:27 v #2324 > > │
00:00:27 v #2325 > > ................................................................................
00:00:27 v #2326 > > ................................................................................
00:00:27 v #2327 > > │
00:00:27 v #2328 > > ................................................................................
00:00:27 v #2329 > > ................................................................................
00:00:27 v #2330 > > │
00:00:27 v #2331 > > ................................................................................
00:00:27 v #2332 > > ................................................................................
00:00:27 v #2333 > > │
00:00:27 v #2334 > > ................................................................................
00:00:27 v #2335 > > ................................................................................
00:00:27 v #2336 > > │
00:00:27 v #2337 > > ................................................................................
00:00:27 v #2338 > > ................................................................................
00:00:27 v #2339 > > │
00:00:27 v #2340 > > ................................................................................
00:00:27 v #2341 > > ................................................................................
00:00:27 v #2342 > > │
00:00:27 v #2343 > > ................................................................................
00:00:27 v #2344 > > ................................................................................
00:00:27 v #2345 > > │
00:00:27 v #2346 > > ........................;;;;;;;;;...............................................
00:00:27 v #2347 > > ................................................................................
00:00:27 v #2348 > > │
00:00:27 v #2349 > > .......................>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..........................
00:00:27 v #2350 > > ................................................................................
00:00:27 v #2351 > > │
00:00:27 v #2352 > > ......................>//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.........................
00:00:27 v #2353 > > ................................................................................
00:00:27 v #2354 > > │
00:00:27 v #2355 > > ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........................
00:00:27 v #2356 > > ................................................................................
00:00:27 v #2357 > > │
00:00:27 v #2358 > > .....................>/////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;......................
00:00:27 v #2359 > > ................................................................................
00:00:27 v #2360 > > │
00:00:27 v #2361 > > ....................>//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.....................
00:00:27 v #2362 > > ................................................................................
00:00:27 v #2363 > > │
00:00:27 v #2364 > > ....................>///////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................
00:00:27 v #2365 > > ................................................................................
00:00:27 v #2366 > > │
00:00:27 v #2367 > > ...................>/////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
00:00:27 v #2368 > > ..;;;;;;;;;;;;;;;;..............................................................
00:00:27 v #2369 > > │
00:00:27 v #2370 > > ...................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................
00:00:27 v #2371 > > .>//;;;;;;;;;;;;;;;.............................................................
00:00:27 v #2372 > > │
00:00:27 v #2373 > > ..................>////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................
00:00:27 v #2374 > > >///;;;;;;;;;;;;;;;;............................................................
00:00:27 v #2375 > > │
00:00:27 v #2376 > > ................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............>
00:00:27 v #2377 > > /////;;;;;;;;;;;;;;;;..............>;;;;;;;;\...................................
00:00:27 v #2378 > > │
00:00:27 v #2379 > > .................>//////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...........>
00:00:27 v #2380 > > //////;;;;;;;;;;;;;;;;............>//;;;;;;;;\..................................
00:00:27 v #2381 > > │
00:00:27 v #2382 > > .................////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.........
00:00:27 v #2383 > > //////;;;;;;;;;;;;;;;;;..........>////;;;;;;;;;.................................
00:00:27 v #2384 > > │
00:00:27 v #2385 > > ..................////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.........
00:00:27 v #2386 > > ///////;;;;;;;;;;;;<<<<<........../////<<<<<<<<.................................
00:00:27 v #2387 > > │
00:00:27 v #2388 > > ................../////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<.........
00:00:27 v #2389 > > ////////;<<<<<<<<<<<<<<...........////<<<<<<<<..................................
00:00:27 v #2390 > > │
00:00:27 v #2391 > > ...................////////////////;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<...........
00:00:27 v #2392 > > ////////<<<<<<<<<<<<<<.............//<<<<<<<....................................
00:00:27 v #2393 > > │
00:00:27 v #2394 > > .................../////////////////;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<..............
00:00:27 v #2395 > > //////<<<<<<<<<<<<<<............................................................
00:00:27 v #2396 > > │
00:00:27 v #2397 > > ....................////////////////<<<<<<<<<<<<<<<<<<<<<<<<<<<.................
00:00:27 v #2398 > > .///<<<<<<<<<<<<<<..............................................................
00:00:27 v #2399 > > │
00:00:27 v #2400 > > .....................//////////////<<<<<<<<<<<<<<<<<<<<<<<<<<...................
00:00:27 v #2401 > > ..//<<<<<<<<<<..................................................................
00:00:27 v #2402 > > │
00:00:27 v #2403 > > ...................../////////////<<<<<<<<<<<<<<<<<<<<<<<<<.....................
00:00:27 v #2404 > > ..<.............................................................................
00:00:27 v #2405 > > │
00:00:27 v #2406 > > ......................//////////<<<<<<<<<<<<<<<<<<<<<<<<........................
00:00:27 v #2407 > > ................................................................................
00:00:27 v #2408 > > │
00:00:27 v #2409 > > ....................../////////<<<<<<<<<<<<<<<<<<<<<<<..........................
00:00:27 v #2410 > > ................................................................................
00:00:27 v #2411 > > │
00:00:27 v #2412 > > .......................//////<<<<<<<<<<<<<<<<<<<<<<.............................
00:00:27 v #2413 > > ................................................................................
00:00:27 v #2414 > > │
00:00:27 v #2415 > > ........................////<<<<<<<<<<<<<<<.....................................
00:00:27 v #2416 > > ................................................................................
00:00:27 v #2417 > > │
00:00:27 v #2418 > > ........................//<<<<<<<<<<............................................
00:00:27 v #2419 > > ................................................................................
00:00:27 v #2420 > > │
00:00:27 v #2421 > > .........................<<<....................................................
00:00:27 v #2422 > > ................................................................................
00:00:27 v #2423 > > │
00:00:27 v #2424 > > ................................................................................
00:00:27 v #2425 > > ................................................................................
00:00:27 v #2426 > > │
00:00:27 v #2427 > > ................................................................................
00:00:27 v #2428 > > ................................................................................
00:00:27 v #2429 > > │
00:00:27 v #2430 > > ................................................................................
00:00:27 v #2431 > > ................................................................................
00:00:27 v #2432 > > │
00:00:27 v #2433 > > ................................................................................
00:00:27 v #2434 > > ................................................................................
00:00:27 v #2435 > > │
00:00:27 v #2436 > > ................................................................................
00:00:27 v #2437 > > ................................................................................
00:00:27 v #2438 > > │
00:00:27 v #2439 > > ................................................................................
00:00:27 v #2440 > > ................................................................................
00:00:27 v #2441 > > │
00:00:27 v #2442 > > ................................................................................
00:00:27 v #2443 > > ................................................................................
00:00:27 v #2444 > > │
00:00:27 v #2445 > > ................................................................................
00:00:27 v #2446 > > ................................................................................
00:00:27 v #2447 > > │
00:00:27 v #2448 > > ................................................................................
00:00:27 v #2449 > > ................................................................................
00:00:27 v #2450 > > │
00:00:27 v #2451 > > │
00:00:27 v #2452 > > ................................................................................
00:00:27 v #2453 > > ................................................................................
00:00:27 v #2454 > > │
00:00:27 v #2455 > > ................................................................................
00:00:27 v #2456 > > ................................................................................
00:00:27 v #2457 > > │
00:00:27 v #2458 > > ................................................................................
00:00:27 v #2459 > > ................................................................................
00:00:27 v #2460 > > │
00:00:27 v #2461 > > ................................................................................
00:00:27 v #2462 > > ................................................................................
00:00:27 v #2463 > > │
00:00:27 v #2464 > > ................................................................................
00:00:27 v #2465 > > ................................................................................
00:00:27 v #2466 > > │
00:00:27 v #2467 > > ................................................................................
00:00:27 v #2468 > > ................................................................................
00:00:27 v #2469 > > │
00:00:27 v #2470 > > ................................................................................
00:00:27 v #2471 > > ................................................................................
00:00:27 v #2472 > > │
00:00:27 v #2473 > > ................................................................................
00:00:27 v #2474 > > ................................................................................
00:00:27 v #2475 > > │
00:00:27 v #2476 > > ................................................................................
00:00:27 v #2477 > > ................................................................................
00:00:27 v #2478 > > │
00:00:27 v #2479 > > .......................>;;;;;;;;................................................
00:00:27 v #2480 > > ................................................................................
00:00:27 v #2481 > > │
00:00:27 v #2482 > > .......................>/;;;;;;;;;;;;;;;;;;;;;;;;;;;\...........................
00:00:27 v #2483 > > ................................................................................
00:00:27 v #2484 > > │
00:00:27 v #2485 > > ......................>//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..........................
00:00:27 v #2486 > > ................................................................................
00:00:27 v #2487 > > │
00:00:27 v #2488 > > ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\........................
00:00:27 v #2489 > > ................................................................................
00:00:27 v #2490 > > │
00:00:27 v #2491 > > .....................>//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.......................
00:00:27 v #2492 > > ................................................................................
00:00:27 v #2493 > > │
00:00:27 v #2494 > > ....................>////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.....................
00:00:27 v #2495 > > ................................................................................
00:00:27 v #2496 > > │
00:00:27 v #2497 > > ..................../////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................
00:00:27 v #2498 > > ................................................................................
00:00:27 v #2499 > > │
00:00:27 v #2500 > > ...................>///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
00:00:27 v #2501 > > ..;;;;;;;;;;;;;;;\..............................................................
00:00:27 v #2502 > > │
00:00:27 v #2503 > > ..................>/////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................
00:00:27 v #2504 > > .>/;;;;;;;;;;;;;;;;.............................................................
00:00:27 v #2505 > > │
00:00:27 v #2506 > > ..................///////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................
00:00:27 v #2507 > > >///;;;;;;;;;;;;;;;;............................................................
00:00:27 v #2508 > > │
00:00:27 v #2509 > > .................>////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............>
00:00:27 v #2510 > > /////;;;;;;;;;;;;;;;;..............>/;;;;;;;\...................................
00:00:27 v #2511 > > │
00:00:27 v #2512 > > ................>//////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..........>
00:00:27 v #2513 > > //////;;;;;;;;;;;;;;;;\...........>///;;;;;;;\..................................
00:00:27 v #2514 > > │
00:00:27 v #2515 > > ................>///////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........>
00:00:27 v #2516 > > ///////;;;;;;;;;;;;;;;;;.........>////;;;;;;;;;.................................
00:00:27 v #2517 > > │
00:00:27 v #2518 > > .................///////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<.......
00:00:27 v #2519 > > ////////;;;;;;<<<<<<<<<<.........//////<<<<<<<<.................................
00:00:27 v #2520 > > │
00:00:27 v #2521 > > ................./////////////////////;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<.........
00:00:27 v #2522 > > /////////<<<<<<<<<<<<<<...........////<<<<<<<<..................................
00:00:27 v #2523 > > │
00:00:27 v #2524 > > ..................////////////////////;;;;<<<<<<<<<<<<<<<<<<<<<<<<<............
00:00:27 v #2525 > > ////////<<<<<<<<<<<<<..............//<<<<<<<....................................
00:00:27 v #2526 > > │
00:00:27 v #2527 > > ...................////////////////////<<<<<<<<<<<<<<<<<<<<<<<<<<...............
00:00:27 v #2528 > > ///////<<<<<<<<<<<<<............................................................
00:00:27 v #2529 > > │
00:00:27 v #2530 > > ...................//////////////////<<<<<<<<<<<<<<<<<<<<<<<<<..................
00:00:27 v #2531 > > .////<<<<<<<<<<<<<..............................................................
00:00:27 v #2532 > > │
00:00:27 v #2533 > > ....................////////////////<<<<<<<<<<<<<<<<<<<<<<<<....................
00:00:27 v #2534 > > ..//<<<<<<<<<<<.................................................................
00:00:27 v #2535 > > │
00:00:27 v #2536 > > .....................//////////////<<<<<<<<<<<<<<<<<<<<<<<......................
00:00:27 v #2537 > > ...<<...........................................................................
00:00:27 v #2538 > > │
00:00:27 v #2539 > > ......................////////////<<<<<<<<<<<<<<<<<<<<<<........................
00:00:27 v #2540 > > ................................................................................
00:00:27 v #2541 > > │
00:00:27 v #2542 > > ......................//////////<<<<<<<<<<<<<<<<<<<<<<..........................
00:00:27 v #2543 > > ................................................................................
00:00:27 v #2544 > > │
00:00:27 v #2545 > > .......................///////<<<<<<<<<<<<<<<<<<<<<<............................
00:00:27 v #2546 > > ................................................................................
00:00:27 v #2547 > > │
00:00:27 v #2548 > > ......................../////<<<<<<<<<<<<<<<<...................................
00:00:27 v #2549 > > ................................................................................
00:00:27 v #2550 > > │
00:00:27 v #2551 > > ........................////<<<<<<<<<<..........................................
00:00:27 v #2552 > > ................................................................................
00:00:27 v #2553 > > │
00:00:27 v #2554 > > ........................./<<<<<<................................................
00:00:27 v #2555 > > ................................................................................
00:00:27 v #2556 > > │
00:00:27 v #2557 > > ................................................................................
00:00:27 v #2558 > > ................................................................................
00:00:27 v #2559 > > │
00:00:27 v #2560 > > ................................................................................
00:00:27 v #2561 > > ................................................................................
00:00:27 v #2562 > > │
00:00:27 v #2563 > > ................................................................................
00:00:27 v #2564 > > ................................................................................
00:00:27 v #2565 > > │
00:00:27 v #2566 > > ................................................................................
00:00:27 v #2567 > > ................................................................................
00:00:27 v #2568 > > │
00:00:27 v #2569 > > ................................................................................
00:00:27 v #2570 > > ................................................................................
00:00:27 v #2571 > > │
00:00:27 v #2572 > > ................................................................................
00:00:27 v #2573 > > ................................................................................
00:00:27 v #2574 > > │
00:00:27 v #2575 > > ................................................................................
00:00:27 v #2576 > > ................................................................................
00:00:27 v #2577 > > │
00:00:27 v #2578 > > ................................................................................
00:00:27 v #2579 > > ................................................................................
00:00:27 v #2580 > > │
00:00:27 v #2581 > > ................................................................................
00:00:27 v #2582 > > ................................................................................
00:00:27 v #2583 > > │
00:00:27 v #2584 > > │
00:00:27 v #2585 > > ................................................................................
00:00:27 v #2586 > > ................................................................................
00:00:27 v #2587 > > │
00:00:27 v #2588 > > ................................................................................
00:00:27 v #2589 > > ................................................................................
00:00:27 v #2590 > > │
00:00:27 v #2591 > > ................................................................................
00:00:27 v #2592 > > ................................................................................
00:00:27 v #2593 > > │
00:00:27 v #2594 > > ................................................................................
00:00:27 v #2595 > > ................................................................................
00:00:27 v #2596 > > │
00:00:27 v #2597 > > ................................................................................
00:00:27 v #2598 > > ................................................................................
00:00:27 v #2599 > > │
00:00:27 v #2600 > > ................................................................................
00:00:27 v #2601 > > ................................................................................
00:00:27 v #2602 > > │
00:00:27 v #2603 > > ................................................................................
00:00:27 v #2604 > > ................................................................................
00:00:27 v #2605 > > │
00:00:27 v #2606 > > ................................................................................
00:00:27 v #2607 > > ................................................................................
00:00:27 v #2608 > > │
00:00:27 v #2609 > > ................................................................................
00:00:27 v #2610 > > ................................................................................
00:00:27 v #2611 > > │
00:00:27 v #2612 > > .......................;;;;;;;..................................................
00:00:27 v #2613 > > ................................................................................
00:00:27 v #2614 > > │
00:00:27 v #2615 > > ......................./;;;;;;;;;;;;;;;;;;;;;;;;;;;.............................
00:00:27 v #2616 > > ................................................................................
00:00:27 v #2617 > > │
00:00:27 v #2618 > > ......................>///;;;;;;;;;;;;;;;;;;;;;;;;;;;...........................
00:00:27 v #2619 > > ................................................................................
00:00:27 v #2620 > > │
00:00:27 v #2621 > > .....................>////;;;;;;;;;;;;;;;;;;;;;;;;;;;;..........................
00:00:27 v #2622 > > ................................................................................
00:00:27 v #2623 > > │
00:00:27 v #2624 > > .....................///////;;;;;;;;;;;;;;;;;;;;;;;;;;;;........................
00:00:27 v #2625 > > ................................................................................
00:00:27 v #2626 > > │
00:00:27 v #2627 > > ....................>/////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;......................
00:00:27 v #2628 > > ................................................................................
00:00:27 v #2629 > > │
00:00:27 v #2630 > > ...................>///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................
00:00:27 v #2631 > > ................................................................................
00:00:27 v #2632 > > │
00:00:27 v #2633 > > ...................>///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
00:00:27 v #2634 > > ../;;;;;;;;;;;;;;...............................................................
00:00:27 v #2635 > > │
00:00:27 v #2636 > > ..................>/////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................
00:00:27 v #2637 > > .>/;;;;;;;;;;;;;;;;.............................................................
00:00:27 v #2638 > > │
00:00:27 v #2639 > > ..................////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...............
00:00:27 v #2640 > > >///;;;;;;;;;;;;;;;;............................................................
00:00:27 v #2641 > > │
00:00:27 v #2642 > > .................>//////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............>
00:00:27 v #2643 > > ///////;;;;;;;;;;;;;;..............>/;;;;;;;....................................
00:00:27 v #2644 > > │
00:00:27 v #2645 > > ................>////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..........>
00:00:27 v #2646 > > ////////;;;;;;;;;;;;;;;...........>///;;;;;;;;..................................
00:00:27 v #2647 > > │
00:00:27 v #2648 > > ................/////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<.......>
00:00:27 v #2649 > > /////////;;;;;;;;;;;;;;<.........>////;;;;;;;;<.................................
00:00:27 v #2650 > > │
00:00:27 v #2651 > > ...............////////////////////////;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<........
00:00:27 v #2652 > > /////////;<<<<<<<<<<<<<<.........//////;<<<<<<<.................................
00:00:27 v #2653 > > │
00:00:27 v #2654 > > ................////////////////////////;;;;<<<<<<<<<<<<<<<<<<<<<<<...........
00:00:27 v #2655 > > //////////<<<<<<<<<<<<<.........../////<<<<<<<..................................
00:00:27 v #2656 > > │
00:00:27 v #2657 > > .................////////////////////////<<<<<<<<<<<<<<<<<<<<<<<<<.............
00:00:27 v #2658 > > /////////<<<<<<<<<<<<..............//<<<<<<<....................................
00:00:27 v #2659 > > │
00:00:27 v #2660 > > ..................//////////////////////<<<<<<<<<<<<<<<<<<<<<<<<................
00:00:27 v #2661 > > ////////<<<<<<<<<<<<............................................................
00:00:27 v #2662 > > │
00:00:27 v #2663 > > ...................///////////////////<<<<<<<<<<<<<<<<<<<<<<<<..................
00:00:27 v #2664 > > ./////<<<<<<<<<<<<..............................................................
00:00:27 v #2665 > > │
00:00:27 v #2666 > > ..................../////////////////<<<<<<<<<<<<<<<<<<<<<<<....................
00:00:27 v #2667 > > ..///<<<<<<<<<<.................................................................
00:00:27 v #2668 > > │
00:00:27 v #2669 > > .....................///////////////<<<<<<<<<<<<<<<<<<<<<<......................
00:00:27 v #2670 > > .../<<<.........................................................................
00:00:27 v #2671 > > │
00:00:27 v #2672 > > .....................//////////////<<<<<<<<<<<<<<<<<<<<<........................
00:00:27 v #2673 > > ................................................................................
00:00:27 v #2674 > > │
00:00:27 v #2675 > > ......................///////////<<<<<<<<<<<<<<<<<<<<<..........................
00:00:27 v #2676 > > ................................................................................
00:00:27 v #2677 > > │
00:00:27 v #2678 > > ......................./////////<<<<<<<<<<<<<<<<<<<<............................
00:00:27 v #2679 > > ................................................................................
00:00:27 v #2680 > > │
00:00:27 v #2681 > > ........................///////<<<<<<<<<<<<<<<..................................
00:00:27 v #2682 > > ................................................................................
00:00:27 v #2683 > > │
00:00:27 v #2684 > > .........................////<<<<<<<<<<<........................................
00:00:27 v #2685 > > ................................................................................
00:00:27 v #2686 > > │
00:00:27 v #2687 > > ..........................//<<<<<<<.............................................
00:00:27 v #2688 > > ................................................................................
00:00:27 v #2689 > > │
00:00:27 v #2690 > > ...........................<<...................................................
00:00:27 v #2691 > > ................................................................................
00:00:27 v #2692 > > │
00:00:27 v #2693 > > ................................................................................
00:00:27 v #2694 > > ................................................................................
00:00:27 v #2695 > > │
00:00:27 v #2696 > > ................................................................................
00:00:27 v #2697 > > ................................................................................
00:00:27 v #2698 > > │
00:00:27 v #2699 > > ................................................................................
00:00:27 v #2700 > > ................................................................................
00:00:27 v #2701 > > │
00:00:27 v #2702 > > ................................................................................
00:00:27 v #2703 > > ................................................................................
00:00:27 v #2704 > > │
00:00:27 v #2705 > > ................................................................................
00:00:27 v #2706 > > ................................................................................
00:00:27 v #2707 > > │
00:00:27 v #2708 > > ................................................................................
00:00:27 v #2709 > > ................................................................................
00:00:27 v #2710 > > │
00:00:27 v #2711 > > ................................................................................
00:00:27 v #2712 > > ................................................................................
00:00:27 v #2713 > > │
00:00:27 v #2714 > > ................................................................................
00:00:27 v #2715 > > ................................................................................
00:00:27 v #2716 > > │
00:00:27 v #2717 > > │
00:00:27 v #2718 > > ................................................................................
00:00:27 v #2719 > > ................................................................................
00:00:27 v #2720 > > │
00:00:27 v #2721 > > ................................................................................
00:00:27 v #2722 > > ................................................................................
00:00:27 v #2723 > > │
00:00:27 v #2724 > > ................................................................................
00:00:27 v #2725 > > ................................................................................
00:00:27 v #2726 > > │
00:00:27 v #2727 > > ................................................................................
00:00:27 v #2728 > > ................................................................................
00:00:27 v #2729 > > │
00:00:27 v #2730 > > ................................................................................
00:00:27 v #2731 > > ................................................................................
00:00:27 v #2732 > > │
00:00:27 v #2733 > > ................................................................................
00:00:27 v #2734 > > ................................................................................
00:00:27 v #2735 > > │
00:00:27 v #2736 > > ................................................................................
00:00:27 v #2737 > > ................................................................................
00:00:27 v #2738 > > │
00:00:27 v #2739 > > ................................................................................
00:00:27 v #2740 > > ................................................................................
00:00:27 v #2741 > > │
00:00:27 v #2742 > > ................................................................................
00:00:27 v #2743 > > ................................................................................
00:00:27 v #2744 > > │
00:00:27 v #2745 > > .......................;;;;.....................................................
00:00:27 v #2746 > > ................................................................................
00:00:27 v #2747 > > │
00:00:27 v #2748 > > ......................>/;;;;;;;;;;;;;;;;;;;;;;;;................................
00:00:27 v #2749 > > ................................................................................
00:00:27 v #2750 > > │
00:00:27 v #2751 > > ......................///;;;;;;;;;;;;;;;;;;;;;;;;;;.............................
00:00:27 v #2752 > > ................................................................................
00:00:27 v #2753 > > │
00:00:27 v #2754 > > .....................>////;/;;;;;;;;;;;;;;;;;;;;;;;;;...........................
00:00:27 v #2755 > > ................................................................................
00:00:27 v #2756 > > │
00:00:27 v #2757 > > ....................>////////;;;;;;;;;;;;;;;;;;;;;;;;;;.........................
00:00:27 v #2758 > > ................................................................................
00:00:27 v #2759 > > │
00:00:27 v #2760 > > ....................>////////;/;;;;;;;;;;;;;;;;;;;;;;;;;;.......................
00:00:27 v #2761 > > ................................................................................
00:00:27 v #2762 > > │
00:00:27 v #2763 > > ...................>///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................
00:00:27 v #2764 > > ................................................................................
00:00:27 v #2765 > > │
00:00:27 v #2766 > > ...................///////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;...................
00:00:27 v #2767 > > ..;;;;;;;;;;;;;;\...............................................................
00:00:27 v #2768 > > │
00:00:27 v #2769 > > ..................>////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................
00:00:27 v #2770 > > .>/;;;;;;;;;;;;;;;..............................................................
00:00:27 v #2771 > > │
00:00:27 v #2772 > > .................>///////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..............
00:00:27 v #2773 > > >///;/;;;;;;;;;;;;;;............................................................
00:00:27 v #2774 > > │
00:00:27 v #2775 > > ................./////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...........>
00:00:27 v #2776 > > //////;;;;;;;;;;;;;;;;.............>/;;;;;;;....................................
00:00:27 v #2777 > > │
00:00:27 v #2778 > > ................>//////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\........>
00:00:27 v #2779 > > ///////;/;;;;;;;;;;;;;;...........>///;;;;;;;;..................................
00:00:27 v #2780 > > │
00:00:27 v #2781 > > ...............>////////////////////////;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<.......>
00:00:27 v #2782 > > /////////;;;;;;;;;<<<<<<.........>////;;;;;;<<<.................................
00:00:27 v #2783 > > │
00:00:27 v #2784 > > ...............>//////////////////////////;;;;<<<<<<<<<<<<<<<<<<<<<<.........
00:00:27 v #2785 > > //////////;<<<<<<<<<<<<<.........///////<<<<<<<.................................
00:00:27 v #2786 > > │
00:00:27 v #2787 > > ...............///////////////////////////<<<<<<<<<<<<<<<<<<<<<<<<...........
00:00:27 v #2788 > > //////////<<<<<<<<<<<<............/////<<<<<<...................................
00:00:27 v #2789 > > │
00:00:27 v #2790 > > ................//////////////////////////<<<<<<<<<<<<<<<<<<<<<<...............
00:00:27 v #2791 > > /////////<<<<<<<<<<<<..............///<<<<<<....................................
00:00:27 v #2792 > > │
00:00:27 v #2793 > > .................///////////////////////<<<<<<<<<<<<<<<<<<<<<<<.................
00:00:27 v #2794 > > ///////<<<<<<<<<<<<..................<..........................................
00:00:27 v #2795 > > │
00:00:27 v #2796 > > ..................//////////////////////<<<<<<<<<<<<<<<<<<<<<...................
00:00:27 v #2797 > > .//////<<<<<<<<<<<..............................................................
00:00:27 v #2798 > > │
00:00:27 v #2799 > > ...................//////////////////<<<<<<<<<<<<<<<<<<<<<<.....................
00:00:27 v #2800 > > ...//<<<<<<<<<<.................................................................
00:00:27 v #2801 > > │
00:00:27 v #2802 > > ....................////////////////<<<<<<<<<<<<<<<<<<<<<<......................
00:00:27 v #2803 > > ..../<<<........................................................................
00:00:27 v #2804 > > │
00:00:27 v #2805 > > .....................///////////////<<<<<<<<<<<<<<<<<<<<........................
00:00:27 v #2806 > > ................................................................................
00:00:27 v #2807 > > │
00:00:27 v #2808 > > ....................../////////////<<<<<<<<<<<<<<<<<<<..........................
00:00:27 v #2809 > > ................................................................................
00:00:27 v #2810 > > │
00:00:27 v #2811 > > .......................//////////<<<<<<<<<<<<<<<<<<<<...........................
00:00:27 v #2812 > > ................................................................................
00:00:27 v #2813 > > │
00:00:27 v #2814 > > ........................////////<<<<<<<<<<<<<<<.................................
00:00:27 v #2815 > > ................................................................................
00:00:27 v #2816 > > │
00:00:27 v #2817 > > ..........................////<<<<<<<<<<<<......................................
00:00:27 v #2818 > > ................................................................................
00:00:27 v #2819 > > │
00:00:27 v #2820 > > ..........................////<<<<<<<...........................................
00:00:27 v #2821 > > ................................................................................
00:00:27 v #2822 > > │
00:00:27 v #2823 > > ............................<<<<................................................
00:00:27 v #2824 > > ................................................................................
00:00:27 v #2825 > > │
00:00:27 v #2826 > > ................................................................................
00:00:27 v #2827 > > ................................................................................
00:00:27 v #2828 > > │
00:00:27 v #2829 > > ................................................................................
00:00:27 v #2830 > > ................................................................................
00:00:27 v #2831 > > │
00:00:27 v #2832 > > ................................................................................
00:00:27 v #2833 > > ................................................................................
00:00:27 v #2834 > > │
00:00:27 v #2835 > > ................................................................................
00:00:27 v #2836 > > ................................................................................
00:00:27 v #2837 > > │
00:00:27 v #2838 > > ................................................................................
00:00:27 v #2839 > > ................................................................................
00:00:27 v #2840 > > │
00:00:27 v #2841 > > ................................................................................
00:00:27 v #2842 > > ................................................................................
00:00:27 v #2843 > > │
00:00:27 v #2844 > > ................................................................................
00:00:27 v #2845 > > ................................................................................
00:00:27 v #2846 > > │
00:00:27 v #2847 > > ................................................................................
00:00:27 v #2848 > > ................................................................................
00:00:27 v #2849 > > │
00:00:27 v #2850 > > │
00:00:27 v #2851 > > ................................................................................
00:00:27 v #2852 > > ................................................................................
00:00:27 v #2853 > > │
00:00:27 v #2854 > > ................................................................................
00:00:27 v #2855 > > ................................................................................
00:00:27 v #2856 > > │
00:00:27 v #2857 > > ................................................................................
00:00:27 v #2858 > > ................................................................................
00:00:27 v #2859 > > │
00:00:27 v #2860 > > ................................................................................
00:00:27 v #2861 > > ................................................................................
00:00:27 v #2862 > > │
00:00:27 v #2863 > > ................................................................................
00:00:27 v #2864 > > ................................................................................
00:00:27 v #2865 > > │
00:00:27 v #2866 > > ................................................................................
00:00:27 v #2867 > > ................................................................................
00:00:27 v #2868 > > │
00:00:27 v #2869 > > ................................................................................
00:00:27 v #2870 > > ................................................................................
00:00:27 v #2871 > > │
00:00:27 v #2872 > > ................................................................................
00:00:27 v #2873 > > ................................................................................
00:00:27 v #2874 > > │
00:00:27 v #2875 > > ................................................................................
00:00:27 v #2876 > > ................................................................................
00:00:27 v #2877 > > │
00:00:27 v #2878 > > .......................;;.......................................................
00:00:27 v #2879 > > ................................................................................
00:00:27 v #2880 > > │
00:00:27 v #2881 > > ......................>;;;;;;;;;;;;;;;;;;;;.....................................
00:00:27 v #2882 > > ................................................................................
00:00:27 v #2883 > > │
00:00:27 v #2884 > > ......................///;;;;;;;;;;;;;;;;;;;;;;;;;..............................
00:00:27 v #2885 > > ................................................................................
00:00:27 v #2886 > > │
00:00:27 v #2887 > > .....................>/////;;;;;;;;;;;;;;;;;;;;;;;;;............................
00:00:27 v #2888 > > ................................................................................
00:00:27 v #2889 > > │
00:00:27 v #2890 > > ....................>////////;;;;;;;;;;;;;;;;;;;;;;;;;\.........................
00:00:27 v #2891 > > ................................................................................
00:00:27 v #2892 > > │
00:00:27 v #2893 > > ....................//////////;;;;;;;;;;;;;;;;;;;;;;;;;;;.......................
00:00:27 v #2894 > > ................................................................................
00:00:27 v #2895 > > │
00:00:27 v #2896 > > ...................>////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;.....................
00:00:27 v #2897 > > ................................................................................
00:00:27 v #2898 > > │
00:00:27 v #2899 > > ..................>///////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................
00:00:27 v #2900 > > .>/;;;;;;;;;;;;;................................................................
00:00:27 v #2901 > > │
00:00:27 v #2902 > > ..................///////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;................
00:00:27 v #2903 > > >//;;;;;;;;;;;;;;;..............................................................
00:00:27 v #2904 > > │
00:00:27 v #2905 > > .................>////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;..............
00:00:27 v #2906 > > >////;;;;;;;;;;;;;;;............................................................
00:00:27 v #2907 > > │
00:00:27 v #2908 > > .................///////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..........>
00:00:27 v #2909 > > ///////;;;;;;;;;;;;;;;.............>/;;;;;;;....................................
00:00:27 v #2910 > > │
00:00:27 v #2911 > > ................>/////////////////////////;;;;;;;;;;;;;;;;;;<<<<<<<<<.........>
00:00:27 v #2912 > > ////////;;;;;;;;;;;;;;;;..........>//;;;;;;;;;..................................
00:00:27 v #2913 > > │
00:00:27 v #2914 > > ...............>/////////////////////////////;;;<<<<<<<<<<<<<<<<<<<<.........>
00:00:27 v #2915 > > //////////;;;<<<<<<<<<<<.........>/////;;;<<<<<.................................
00:00:27 v #2916 > > │
00:00:27 v #2917 > > ...............//////////////////////////////<<<<<<<<<<<<<<<<<<<<<<.........
00:00:27 v #2918 > > ////////////<<<<<<<<<<<..........///////<<<<<<<.................................
00:00:27 v #2919 > > │
00:00:27 v #2920 > > ..............>////////////////////////////<<<<<<<<<<<<<<<<<<<<<<............
00:00:27 v #2921 > > ///////////<<<<<<<<<<<............/////<<<<<<...................................
00:00:27 v #2922 > > │
00:00:27 v #2923 > > ...............////////////////////////////<<<<<<<<<<<<<<<<<<<<...............
00:00:27 v #2924 > > //////////<<<<<<<<<<<..............///<<<<<<....................................
00:00:27 v #2925 > > │
00:00:27 v #2926 > > ................/////////////////////////<<<<<<<<<<<<<<<<<<<<<..................
00:00:27 v #2927 > > ////////<<<<<<<<<<<..................<..........................................
00:00:27 v #2928 > > │
00:00:27 v #2929 > > .................///////////////////////<<<<<<<<<<<<<<<<<<<<<...................
00:00:27 v #2930 > > .//////<<<<<<<<<<<..............................................................
00:00:27 v #2931 > > │
00:00:27 v #2932 > > ...................////////////////////<<<<<<<<<<<<<<<<<<<<.....................
00:00:27 v #2933 > > ...///<<<<<<<<<<................................................................
00:00:27 v #2934 > > │
00:00:27 v #2935 > > ....................//////////////////<<<<<<<<<<<<<<<<<<<<......................
00:00:27 v #2936 > > ..../<<<<.......................................................................
00:00:27 v #2937 > > │
00:00:27 v #2938 > > .....................////////////////<<<<<<<<<<<<<<<<<<<........................
00:00:27 v #2939 > > ................................................................................
00:00:27 v #2940 > > │
00:00:27 v #2941 > > ......................//////////////<<<<<<<<<<<<<<<<<<..........................
00:00:27 v #2942 > > ................................................................................
00:00:27 v #2943 > > │
00:00:27 v #2944 > > ........................///////////<<<<<<<<<<<<<<<<<<...........................
00:00:27 v #2945 > > ................................................................................
00:00:27 v #2946 > > │
00:00:27 v #2947 > > .........................////////<<<<<<<<<<<<<<<................................
00:00:27 v #2948 > > ................................................................................
00:00:27 v #2949 > > │
00:00:27 v #2950 > > ..........................//////<<<<<<<<<<<.....................................
00:00:27 v #2951 > > ................................................................................
00:00:27 v #2952 > > │
00:00:27 v #2953 > > ...........................////<<<<<<<<.........................................
00:00:27 v #2954 > > ................................................................................
00:00:27 v #2955 > > │
00:00:27 v #2956 > > ............................//<<<<..............................................
00:00:27 v #2957 > > ................................................................................
00:00:27 v #2958 > > │
00:00:27 v #2959 > > ................................................................................
00:00:27 v #2960 > > ................................................................................
00:00:27 v #2961 > > │
00:00:27 v #2962 > > ................................................................................
00:00:27 v #2963 > > ................................................................................
00:00:27 v #2964 > > │
00:00:27 v #2965 > > ................................................................................
00:00:27 v #2966 > > ................................................................................
00:00:27 v #2967 > > │
00:00:27 v #2968 > > ................................................................................
00:00:27 v #2969 > > ................................................................................
00:00:27 v #2970 > > │
00:00:27 v #2971 > > ................................................................................
00:00:27 v #2972 > > ................................................................................
00:00:27 v #2973 > > │
00:00:27 v #2974 > > ................................................................................
00:00:27 v #2975 > > ................................................................................
00:00:27 v #2976 > > │
00:00:27 v #2977 > > ................................................................................
00:00:27 v #2978 > > ................................................................................
00:00:27 v #2979 > > │
00:00:27 v #2980 > > ................................................................................
00:00:27 v #2981 > > ................................................................................
00:00:27 v #2982 > > │
00:00:27 v #2983 > > │
00:00:27 v #2984 > > ................................................................................
00:00:27 v #2985 > > ................................................................................
00:00:27 v #2986 > > │
00:00:27 v #2987 > > ................................................................................
00:00:27 v #2988 > > ................................................................................
00:00:27 v #2989 > > │
00:00:27 v #2990 > > ................................................................................
00:00:27 v #2991 > > ................................................................................
00:00:27 v #2992 > > │
00:00:27 v #2993 > > ................................................................................
00:00:27 v #2994 > > ................................................................................
00:00:27 v #2995 > > │
00:00:27 v #2996 > > ................................................................................
00:00:27 v #2997 > > ................................................................................
00:00:27 v #2998 > > │
00:00:27 v #2999 > > ................................................................................
00:00:27 v #3000 > > ................................................................................
00:00:27 v #3001 > > │
00:00:27 v #3002 > > ................................................................................
00:00:27 v #3003 > > ................................................................................
00:00:27 v #3004 > > │
00:00:27 v #3005 > > ................................................................................
00:00:27 v #3006 > > ................................................................................
00:00:27 v #3007 > > │
00:00:27 v #3008 > > ................................................................................
00:00:27 v #3009 > > ................................................................................
00:00:27 v #3010 > > │
00:00:27 v #3011 > > ................................................................................
00:00:27 v #3012 > > ................................................................................
00:00:27 v #3013 > > │
00:00:27 v #3014 > > ....................../;;;;;;;;;;;;;;;;.........................................
00:00:27 v #3015 > > ................................................................................
00:00:27 v #3016 > > │
00:00:27 v #3017 > > .....................>///;;;;;;;;;;;;;;;;;;;;;;;................................
00:00:27 v #3018 > > ................................................................................
00:00:27 v #3019 > > │
00:00:27 v #3020 > > .....................//////;;;;;;;;;;;;;;;;;;;;;;;;.............................
00:00:27 v #3021 > > ................................................................................
00:00:27 v #3022 > > │
00:00:27 v #3023 > > ..................../////////;;;;;;;;;;;;;;;;;;;;;;;;...........................
00:00:27 v #3024 > > ................................................................................
00:00:27 v #3025 > > │
00:00:27 v #3026 > > ...................>///////////;/;;;;;;;;;;;;;;;;;;;;;;;........................
00:00:27 v #3027 > > ................................................................................
00:00:27 v #3028 > > │
00:00:27 v #3029 > > ...................///////////////;;;;;;;;;;;;;;;;;;;;;;;;;.....................
00:00:27 v #3030 > > ................................................................................
00:00:27 v #3031 > > │
00:00:27 v #3032 > > ..................>/////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;..................
00:00:27 v #3033 > > .>;;;;;;;;;;;;;.................................................................
00:00:27 v #3034 > > │
00:00:27 v #3035 > > ..................////////////////////;/;;;;;;;;;;;;;;;;;;;;;;;;................
00:00:27 v #3036 > > >//;/;;;;;;;;;;;;...............................................................
00:00:27 v #3037 > > │
00:00:27 v #3038 > > .................>//////////////////////;/;;;;;;;;;;;;;;;;;;;;;;;;;\............
00:00:27 v #3039 > > //////;;;;;;;;;;;;;;............................................................
00:00:27 v #3040 > > │
00:00:27 v #3041 > > ................>//////////////////////////;;;;;;;;;;;;;;;;;;;<<<<<<<..........>
00:00:27 v #3042 > > ///////;;;;;;;;;;;;;;;.............>/;;;;;;;....................................
00:00:27 v #3043 > > │
00:00:27 v #3044 > > ................/////////////////////////////;;;;<<<<<<<<<<<<<<<<<<<..........>
00:00:27 v #3045 > > ///////////;;;;;;;;;;;<<..........>//;;;;;;;;;..................................
00:00:27 v #3046 > > │
00:00:27 v #3047 > > ...............>//////////////////////////////<<<<<<<<<<<<<<<<<<<<<..........>
00:00:27 v #3048 > > ///////////;<<<<<<<<<<<<.........>/////;;<<<<<<.................................
00:00:27 v #3049 > > │
00:00:27 v #3050 > > ...............///////////////////////////////<<<<<<<<<<<<<<<<<<<............
00:00:27 v #3051 > > ////////////<<<<<<<<<<<..........///////<<<<<<..................................
00:00:27 v #3052 > > │
00:00:27 v #3053 > > ..............>//////////////////////////////<<<<<<<<<<<<<<<<<<<............
00:00:27 v #3054 > > ///////////<<<<<<<<<<<............/////<<<<<<...................................
00:00:27 v #3055 > > │
00:00:27 v #3056 > > ..............//////////////////////////////<<<<<<<<<<<<<<<<<<<...............
00:00:27 v #3057 > > //////////<<<<<<<<<<<...............///<<<<<....................................
00:00:27 v #3058 > > │
00:00:27 v #3059 > > ...............///////////////////////////<<<<<<<<<<<<<<<<<<<...................
00:00:27 v #3060 > > /////////<<<<<<<<<<................../..........................................
00:00:27 v #3061 > > │
00:00:27 v #3062 > > ................//////////////////////////<<<<<<<<<<<<<<<<<<....................
00:00:27 v #3063 > > .///////<<<<<<<<<<..............................................................
00:00:27 v #3064 > > │
00:00:27 v #3065 > > ..................//////////////////////<<<<<<<<<<<<<<<<<<<.....................
00:00:27 v #3066 > > ...////<<<<<<<<<................................................................
00:00:27 v #3067 > > │
00:00:27 v #3068 > > ....................///////////////////<<<<<<<<<<<<<<<<<<.......................
00:00:27 v #3069 > > ...../<<<.......................................................................
00:00:27 v #3070 > > │
00:00:27 v #3071 > > ...................../////////////////<<<<<<<<<<<<<<<<<<........................
00:00:27 v #3072 > > ................................................................................
00:00:27 v #3073 > > │
00:00:27 v #3074 > > ......................///////////////<<<<<<<<<<<<<<<<<<.........................
00:00:27 v #3075 > > ................................................................................
00:00:27 v #3076 > > │
00:00:27 v #3077 > > ........................////////////<<<<<<<<<<<<<<<<<...........................
00:00:27 v #3078 > > ................................................................................
00:00:27 v #3079 > > │
00:00:27 v #3080 > > .........................//////////<<<<<<<<<<<<<<...............................
00:00:27 v #3081 > > ................................................................................
00:00:27 v #3082 > > │
00:00:27 v #3083 > > ...........................///////<<<<<<<<<<<...................................
00:00:27 v #3084 > > ................................................................................
00:00:27 v #3085 > > │
00:00:27 v #3086 > > ............................/////<<<<<<<........................................
00:00:27 v #3087 > > ................................................................................
00:00:27 v #3088 > > │
00:00:27 v #3089 > > ..............................//<<<<............................................
00:00:27 v #3090 > > ................................................................................
00:00:27 v #3091 > > │
00:00:27 v #3092 > > ................................................................................
00:00:27 v #3093 > > ................................................................................
00:00:27 v #3094 > > │
00:00:27 v #3095 > > ................................................................................
00:00:27 v #3096 > > ................................................................................
00:00:27 v #3097 > > │
00:00:27 v #3098 > > ................................................................................
00:00:27 v #3099 > > ................................................................................
00:00:27 v #3100 > > │
00:00:27 v #3101 > > ................................................................................
00:00:27 v #3102 > > ................................................................................
00:00:27 v #3103 > > │
00:00:27 v #3104 > > ................................................................................
00:00:27 v #3105 > > ................................................................................
00:00:27 v #3106 > > │
00:00:27 v #3107 > > ................................................................................
00:00:27 v #3108 > > ................................................................................
00:00:27 v #3109 > > │
00:00:27 v #3110 > > ................................................................................
00:00:27 v #3111 > > ................................................................................
00:00:27 v #3112 > > │
00:00:27 v #3113 > > ................................................................................
00:00:27 v #3114 > > ................................................................................
00:00:27 v #3115 > > │
00:00:27 v #3116 > > │
00:00:27 v #3117 > > ................................................................................
00:00:27 v #3118 > > ................................................................................
00:00:27 v #3119 > > │
00:00:27 v #3120 > > ................................................................................
00:00:27 v #3121 > > ................................................................................
00:00:27 v #3122 > > │
00:00:27 v #3123 > > ................................................................................
00:00:27 v #3124 > > ................................................................................
00:00:27 v #3125 > > │
00:00:27 v #3126 > > ................................................................................
00:00:27 v #3127 > > ................................................................................
00:00:27 v #3128 > > │
00:00:27 v #3129 > > ................................................................................
00:00:27 v #3130 > > ................................................................................
00:00:27 v #3131 > > │
00:00:27 v #3132 > > ................................................................................
00:00:27 v #3133 > > ................................................................................
00:00:27 v #3134 > > │
00:00:27 v #3135 > > ................................................................................
00:00:27 v #3136 > > ................................................................................
00:00:27 v #3137 > > │
00:00:27 v #3138 > > ................................................................................
00:00:27 v #3139 > > ................................................................................
00:00:27 v #3140 > > │
00:00:27 v #3141 > > ................................................................................
00:00:27 v #3142 > > ................................................................................
00:00:27 v #3143 > > │
00:00:27 v #3144 > > ................................................................................
00:00:27 v #3145 > > ................................................................................
00:00:27 v #3146 > > │
00:00:27 v #3147 > > .....................>;;;;;;;;;;;;..............................................
00:00:27 v #3148 > > ................................................................................
00:00:27 v #3149 > > │
00:00:27 v #3150 > > .....................///;;;;;;;;;;;;;;;;;;;;;;..................................
00:00:27 v #3151 > > ................................................................................
00:00:27 v #3152 > > │
00:00:27 v #3153 > > ....................>//////;;;;;;;;;;;;;;;;;;;;;;...............................
00:00:27 v #3154 > > ................................................................................
00:00:27 v #3155 > > │
00:00:27 v #3156 > > ..................../////////;/;;;;;;;;;;;;;;;;;;;;;\...........................
00:00:27 v #3157 > > ................................................................................
00:00:27 v #3158 > > │
00:00:27 v #3159 > > ...................>/////////////;;;;;;;;;;;;;;;;;;;;;;\........................
00:00:27 v #3160 > > ................................................................................
00:00:27 v #3161 > > │
00:00:27 v #3162 > > ...................////////////////;/;;;;;;;;;;;;;;;;;;;;;;.....................
00:00:27 v #3163 > > ................................................................................
00:00:27 v #3164 > > │
00:00:27 v #3165 > > ..................>///////////////////;/;;;;;;;;;;;;;;;;;;;;;;..................
00:00:27 v #3166 > > .;;;;;;;;;;;;;..................................................................
00:00:27 v #3167 > > │
00:00:27 v #3168 > > .................>///////////////////////;;;;;;;;;;;;;;;;;;;;;;;;\..............
00:00:27 v #3169 > > >///;;;;;;;;;;;;;...............................................................
00:00:27 v #3170 > > │
00:00:27 v #3171 > > .................//////////////////////////;;;;;;;;;;;;;;;;;;;;;;<<<............
00:00:27 v #3172 > > /////;;;;;;;;;;;;;;;............................................................
00:00:27 v #3173 > > │
00:00:27 v #3174 > > ................>/////////////////////////////;;;;<<<<<<<<<<<<<<<<<<...........>
00:00:27 v #3175 > > ////////;/;;;;;;;;;;;;;............>/;;;;;;;....................................
00:00:27 v #3176 > > │
00:00:27 v #3177 > > ................////////////////////////////////<<<<<<<<<<<<<<<<<<<...........>
00:00:27 v #3178 > > //////////;;;;;;;<<<<<<<..........>//;;;;;;;;;..................................
00:00:27 v #3179 > > │
00:00:27 v #3180 > > ...............>///////////////////////////////<<<<<<<<<<<<<<<<<<<...........>
00:00:27 v #3181 > > /////////////<<<<<<<<<<..........>///////<<<<<<.................................
00:00:27 v #3182 > > │
00:00:27 v #3183 > > ...............///////////////////////////////<<<<<<<<<<<<<<<<<<.............
00:00:27 v #3184 > > ////////////<<<<<<<<<<...........////////<<<<<..................................
00:00:27 v #3185 > > │
00:00:27 v #3186 > > ..............>///////////////////////////////<<<<<<<<<<<<<<<<<.............>
00:00:27 v #3187 > > ///////////<<<<<<<<<<............///////<<<<<...................................
00:00:27 v #3188 > > │
00:00:27 v #3189 > > ..............//////////////////////////////<<<<<<<<<<<<<<<<<<...............
00:00:27 v #3190 > > ///////////<<<<<<<<<................///<<<<<....................................
00:00:27 v #3191 > > │
00:00:27 v #3192 > > ..............//////////////////////////////<<<<<<<<<<<<<<<<<..................
00:00:27 v #3193 > > //////////<<<<<<<<<.................../.........................................
00:00:27 v #3194 > > │
00:00:27 v #3195 > > ...............////////////////////////////<<<<<<<<<<<<<<<<<....................
00:00:27 v #3196 > > ..///////<<<<<<<<<..............................................................
00:00:27 v #3197 > > │
00:00:27 v #3198 > > ................./////////////////////////<<<<<<<<<<<<<<<<......................
00:00:27 v #3199 > > ....////<<<<<<<<................................................................
00:00:27 v #3200 > > │
00:00:27 v #3201 > > ...................//////////////////////<<<<<<<<<<<<<<<<.......................
00:00:27 v #3202 > > ....../<<<......................................................................
00:00:27 v #3203 > > │
00:00:27 v #3204 > > .....................//////////////////<<<<<<<<<<<<<<<<<........................
00:00:27 v #3205 > > ................................................................................
00:00:27 v #3206 > > │
00:00:27 v #3207 > > ....................../////////////////<<<<<<<<<<<<<<<<.........................
00:00:27 v #3208 > > ................................................................................
00:00:27 v #3209 > > │
00:00:27 v #3210 > > ........................//////////////<<<<<<<<<<<<<<<...........................
00:00:27 v #3211 > > ................................................................................
00:00:27 v #3212 > > │
00:00:27 v #3213 > > ..........................///////////<<<<<<<<<<<<...............................
00:00:27 v #3214 > > ................................................................................
00:00:27 v #3215 > > │
00:00:27 v #3216 > > ............................////////<<<<<<<<<<..................................
00:00:27 v #3217 > > ................................................................................
00:00:27 v #3218 > > │
00:00:27 v #3219 > > .............................//////<<<<<<<......................................
00:00:27 v #3220 > > ................................................................................
00:00:27 v #3221 > > │
00:00:27 v #3222 > > ...............................///<<<<..........................................
00:00:27 v #3223 > > ................................................................................
00:00:27 v #3224 > > │
00:00:27 v #3225 > > .................................<..............................................
00:00:27 v #3226 > > ................................................................................
00:00:27 v #3227 > > │
00:00:27 v #3228 > > ................................................................................
00:00:27 v #3229 > > ................................................................................
00:00:27 v #3230 > > │
00:00:27 v #3231 > > ................................................................................
00:00:27 v #3232 > > ................................................................................
00:00:27 v #3233 > > │
00:00:27 v #3234 > > ................................................................................
00:00:27 v #3235 > > ................................................................................
00:00:27 v #3236 > > │
00:00:27 v #3237 > > ................................................................................
00:00:27 v #3238 > > ................................................................................
00:00:27 v #3239 > > │
00:00:27 v #3240 > > ................................................................................
00:00:27 v #3241 > > ................................................................................
00:00:27 v #3242 > > │
00:00:27 v #3243 > > ................................................................................
00:00:27 v #3244 > > ................................................................................
00:00:27 v #3245 > > │
00:00:27 v #3246 > > ................................................................................
00:00:27 v #3247 > > ................................................................................
00:00:27 v #3248 > > │
00:00:27 v #3249 > > │
00:00:27 v #3250 > > ................................................................................
00:00:27 v #3251 > > ................................................................................
00:00:27 v #3252 > > │
00:00:27 v #3253 > > ................................................................................
00:00:27 v #3254 > > ................................................................................
00:00:27 v #3255 > > │
00:00:27 v #3256 > > ................................................................................
00:00:27 v #3257 > > ................................................................................
00:00:27 v #3258 > > │
00:00:27 v #3259 > > ................................................................................
00:00:27 v #3260 > > ................................................................................
00:00:27 v #3261 > > │
00:00:27 v #3262 > > ................................................................................
00:00:27 v #3263 > > ................................................................................
00:00:27 v #3264 > > │
00:00:27 v #3265 > > ................................................................................
00:00:27 v #3266 > > ................................................................................
00:00:27 v #3267 > > │
00:00:27 v #3268 > > ................................................................................
00:00:27 v #3269 > > ................................................................................
00:00:27 v #3270 > > │
00:00:27 v #3271 > > ................................................................................
00:00:27 v #3272 > > ................................................................................
00:00:27 v #3273 > > │
00:00:27 v #3274 > > ................................................................................
00:00:27 v #3275 > > ................................................................................
00:00:27 v #3276 > > │
00:00:27 v #3277 > > ................................................................................
00:00:27 v #3278 > > ................................................................................
00:00:27 v #3279 > > │
00:00:27 v #3280 > > ...................../;;;;;;;;..................................................
00:00:27 v #3281 > > ................................................................................
00:00:27 v #3282 > > │
00:00:27 v #3283 > > ....................>//;;;;;;;;;;;;;;;;;;;;;....................................
00:00:27 v #3284 > > ................................................................................
00:00:27 v #3285 > > │
00:00:27 v #3286 > > ....................//////;;;;;;;;;;;;;;;;;;;;;.................................
00:00:27 v #3287 > > ................................................................................
00:00:27 v #3288 > > │
00:00:27 v #3289 > > ...................>//////////;/;;;;;;;;;;;;;;;;;;;.............................
00:00:27 v #3290 > > ................................................................................
00:00:27 v #3291 > > │
00:00:27 v #3292 > > ...................//////////////;/;;;;;;;;;;;;;;;;;;;;.........................
00:00:27 v #3293 > > ................................................................................
00:00:27 v #3294 > > │
00:00:27 v #3295 > > ..................>////////////////////;;;;;;;;;;;;;;;;;;;;.....................
00:00:27 v #3296 > > ................................................................................
00:00:27 v #3297 > > │
00:00:27 v #3298 > > ..................//////////////////////;;;;;;;;;;;;;;;;;;;;;;;.................
00:00:27 v #3299 > > .;;;;;;;;;;;;\..................................................................
00:00:27 v #3300 > > │
00:00:27 v #3301 > > .................>/////////////////////////;;;;;;;;;;;;;;;;;;;;;;;..............
00:00:27 v #3302 > > >/;;/;;;;;;;;;;;;...............................................................
00:00:27 v #3303 > > │
00:00:27 v #3304 > > .................////////////////////////////////;;;<<<<<<<<<<<<<<<<............
00:00:27 v #3305 > > /////;;/;;;;;;;;;;;;............................................................
00:00:27 v #3306 > > │
00:00:27 v #3307 > > ................>/////////////////////////////////<<<<<<<<<<<<<<<<<............>
00:00:27 v #3308 > > ////////;;;;;;;;;;;;;;;............;;;;;;;;;....................................
00:00:27 v #3309 > > │
00:00:27 v #3310 > > ................/////////////////////////////////<<<<<<<<<<<<<<<<.............>
00:00:27 v #3311 > > ////////////;;<<<<<<<<<<..........>////;;;;;;;;.................................
00:00:27 v #3312 > > │
00:00:27 v #3313 > > ...............>////////////////////////////////<<<<<<<<<<<<<<<<..............
00:00:27 v #3314 > > //////////////<<<<<<<<<...........//////;<<<<<<.................................
00:00:27 v #3315 > > │
00:00:27 v #3316 > > ...............////////////////////////////////<<<<<<<<<<<<<<<<..............>
00:00:27 v #3317 > > /////////////<<<<<<<<<...........>///////<<<<<..................................
00:00:27 v #3318 > > │
00:00:27 v #3319 > > ..............>///////////////////////////////<<<<<<<<<<<<<<<<..............>
00:00:27 v #3320 > > ////////////<<<<<<<<<............///////<<<<<...................................
00:00:27 v #3321 > > │
00:00:27 v #3322 > > ..............///////////////////////////////<<<<<<<<<<<<<<<<................
00:00:27 v #3323 > > ///////////<<<<<<<<<................///<<<<<....................................
00:00:27 v #3324 > > │
00:00:27 v #3325 > > .............>///////////////////////////////<<<<<<<<<<<<<<<...................
00:00:27 v #3326 > > //////////<<<<<<<<<.............................................................
00:00:27 v #3327 > > │
00:00:27 v #3328 > > ..............//////////////////////////////<<<<<<<<<<<<<<<.....................
00:00:27 v #3329 > > ..///////<<<<<<<<<..............................................................
00:00:27 v #3330 > > │
00:00:27 v #3331 > > ................///////////////////////////<<<<<<<<<<<<<<<......................
00:00:27 v #3332 > > ..../////<<<<<<<................................................................
00:00:27 v #3333 > > │
00:00:27 v #3334 > > ..................////////////////////////<<<<<<<<<<<<<<<.......................
00:00:27 v #3335 > > ......./<<......................................................................
00:00:27 v #3336 > > │
00:00:27 v #3337 > > ..................../////////////////////<<<<<<<<<<<<<<<........................
00:00:27 v #3338 > > ................................................................................
00:00:27 v #3339 > > │
00:00:27 v #3340 > > ......................//////////////////<<<<<<<<<<<<<<<.........................
00:00:27 v #3341 > > ................................................................................
00:00:27 v #3342 > > │
00:00:27 v #3343 > > ........................///////////////<<<<<<<<<<<<<<...........................
00:00:27 v #3344 > > ................................................................................
00:00:27 v #3345 > > │
00:00:27 v #3346 > > ...........................///////////<<<<<<<<<<<<..............................
00:00:27 v #3347 > > ................................................................................
00:00:27 v #3348 > > │
00:00:27 v #3349 > > ............................//////////<<<<<<<<<.................................
00:00:27 v #3350 > > ................................................................................
00:00:27 v #3351 > > │
00:00:27 v #3352 > > ..............................///////<<<<<<.....................................
00:00:27 v #3353 > > ................................................................................
00:00:27 v #3354 > > │
00:00:27 v #3355 > > ................................////<<<<........................................
00:00:27 v #3356 > > ................................................................................
00:00:27 v #3357 > > │
00:00:27 v #3358 > > ...................................<............................................
00:00:27 v #3359 > > ................................................................................
00:00:27 v #3360 > > │
00:00:27 v #3361 > > ................................................................................
00:00:27 v #3362 > > ................................................................................
00:00:27 v #3363 > > │
00:00:27 v #3364 > > ................................................................................
00:00:27 v #3365 > > ................................................................................
00:00:27 v #3366 > > │
00:00:27 v #3367 > > ................................................................................
00:00:27 v #3368 > > ................................................................................
00:00:27 v #3369 > > │
00:00:27 v #3370 > > ................................................................................
00:00:27 v #3371 > > ................................................................................
00:00:27 v #3372 > > │
00:00:27 v #3373 > > ................................................................................
00:00:27 v #3374 > > ................................................................................
00:00:27 v #3375 > > │
00:00:27 v #3376 > > ................................................................................
00:00:27 v #3377 > > ................................................................................
00:00:27 v #3378 > > │
00:00:27 v #3379 > > ................................................................................
00:00:27 v #3380 > > ................................................................................
00:00:27 v #3381 > > │
00:00:27 v #3382 > > │
00:00:27 v #3383 > > ................................................................................
00:00:27 v #3384 > > ................................................................................
00:00:27 v #3385 > > │
00:00:27 v #3386 > > ................................................................................
00:00:27 v #3387 > > ................................................................................
00:00:27 v #3388 > > │
00:00:27 v #3389 > > ................................................................................
00:00:27 v #3390 > > ................................................................................
00:00:27 v #3391 > > │
00:00:27 v #3392 > > ................................................................................
00:00:27 v #3393 > > ................................................................................
00:00:27 v #3394 > > │
00:00:27 v #3395 > > ................................................................................
00:00:27 v #3396 > > ................................................................................
00:00:27 v #3397 > > │
00:00:27 v #3398 > > ................................................................................
00:00:27 v #3399 > > ................................................................................
00:00:27 v #3400 > > │
00:00:27 v #3401 > > ................................................................................
00:00:27 v #3402 > > ................................................................................
00:00:27 v #3403 > > │
00:00:27 v #3404 > > ................................................................................
00:00:27 v #3405 > > ................................................................................
00:00:27 v #3406 > > │
00:00:27 v #3407 > > ................................................................................
00:00:27 v #3408 > > ................................................................................
00:00:27 v #3409 > > │
00:00:27 v #3410 > > ................................................................................
00:00:27 v #3411 > > ................................................................................
00:00:27 v #3412 > > │
00:00:27 v #3413 > > .....................;;;;;......................................................
00:00:27 v #3414 > > ................................................................................
00:00:27 v #3415 > > │
00:00:27 v #3416 > > ....................>/;/;;;;;;;;;;;;;;..........................................
00:00:27 v #3417 > > ................................................................................
00:00:27 v #3418 > > │
00:00:27 v #3419 > > ....................//////;/;;;;;;;;;;;;;;;;;...................................
00:00:27 v #3420 > > ................................................................................
00:00:27 v #3421 > > │
00:00:27 v #3422 > > ...................>//////////;;/;;;;;;;;;;;;;;;;;..............................
00:00:27 v #3423 > > ................................................................................
00:00:27 v #3424 > > │
00:00:27 v #3425 > > ...................////////////////;;;;;;;;;;;;;;;;;;;;.........................
00:00:27 v #3426 > > ................................................................................
00:00:27 v #3427 > > │
00:00:27 v #3428 > > ..................>///////////////////////;;;;;;;;;;;;;;;;;.....................
00:00:27 v #3429 > > ................................................................................
00:00:27 v #3430 > > │
00:00:27 v #3431 > > ................../////////////////////////;;;;;;;;;;;;;;;;;;;;;................
00:00:27 v #3432 > > .;;;;;;;;;;;....................................................................
00:00:27 v #3433 > > │
00:00:27 v #3434 > > .................>///////////////////////////////;;;;;<<<<<<<<<<<<<.............
00:00:27 v #3435 > > >//;/;;;;;;;;;;;................................................................
00:00:27 v #3436 > > │
00:00:27 v #3437 > > .................//////////////////////////////////<<<<<<<<<<<<<<<.............>
00:00:27 v #3438 > > //////;//;;;;;;;;;;;............................................................
00:00:27 v #3439 > > │
00:00:27 v #3440 > > ................>/////////////////////////////////<<<<<<<<<<<<<<<..............>
00:00:27 v #3441 > > /////////;/;;;;;;;;;<<<<...........;;;;;;;;.....................................
00:00:27 v #3442 > > │
00:00:27 v #3443 > > ................//////////////////////////////////<<<<<<<<<<<<<<..............>
00:00:27 v #3444 > > //////////////<<<<<<<<<...........>///;;;;;;;<<.................................
00:00:27 v #3445 > > │
00:00:27 v #3446 > > ...............>/////////////////////////////////<<<<<<<<<<<<<<<..............
00:00:27 v #3447 > > //////////////<<<<<<<<<...........///////;<<<<<.................................
00:00:27 v #3448 > > │
00:00:27 v #3449 > > .............../////////////////////////////////<<<<<<<<<<<<<<<..............>
00:00:27 v #3450 > > /////////////<<<<<<<<<...........>///////<<<<<..................................
00:00:27 v #3451 > > │
00:00:27 v #3452 > > ..............>////////////////////////////////<<<<<<<<<<<<<<<..............>
00:00:27 v #3453 > > ////////////<<<<<<<<<............///////<<<<<...................................
00:00:27 v #3454 > > │
00:00:27 v #3455 > > ..............>///////////////////////////////<<<<<<<<<<<<<<<...............
00:00:27 v #3456 > > ////////////<<<<<<<<................////<<<<<...................................
00:00:27 v #3457 > > │
00:00:27 v #3458 > > ..............////////////////////////////////<<<<<<<<<<<<<<...................
00:00:27 v #3459 > > ///////////<<<<<<<<.............................................................
00:00:27 v #3460 > > │
00:00:27 v #3461 > > .............>///////////////////////////////<<<<<<<<<<<<<<.....................
00:00:27 v #3462 > > ..////////<<<<<<<<..............................................................
00:00:27 v #3463 > > │
00:00:27 v #3464 > > .............../////////////////////////////<<<<<<<<<<<<<<......................
00:00:27 v #3465 > > .....////<<<<<<<................................................................
00:00:27 v #3466 > > │
00:00:27 v #3467 > > .................//////////////////////////<<<<<<<<<<<<<<.......................
00:00:27 v #3468 > > .......//<<.....................................................................
00:00:27 v #3469 > > │
00:00:27 v #3470 > > ....................///////////////////////<<<<<<<<<<<<<........................
00:00:27 v #3471 > > ................................................................................
00:00:27 v #3472 > > │
00:00:27 v #3473 > > ......................////////////////////<<<<<<<<<<<<<.........................
00:00:27 v #3474 > > ................................................................................
00:00:27 v #3475 > > │
00:00:27 v #3476 > > ......................../////////////////<<<<<<<<<<<<...........................
00:00:27 v #3477 > > ................................................................................
00:00:27 v #3478 > > │
00:00:27 v #3479 > > .........................../////////////<<<<<<<<<<..............................
00:00:27 v #3480 > > ................................................................................
00:00:27 v #3481 > > │
00:00:27 v #3482 > > .............................//////////<<<<<<<<.................................
00:00:27 v #3483 > > ................................................................................
00:00:27 v #3484 > > │
00:00:27 v #3485 > > ................................///////<<<<<....................................
00:00:27 v #3486 > > ................................................................................
00:00:27 v #3487 > > │
00:00:27 v #3488 > > ..................................////<<<.......................................
00:00:27 v #3489 > > ................................................................................
00:00:27 v #3490 > > │
00:00:27 v #3491 > > .....................................<..........................................
00:00:27 v #3492 > > ................................................................................
00:00:27 v #3493 > > │
00:00:27 v #3494 > > ................................................................................
00:00:27 v #3495 > > ................................................................................
00:00:27 v #3496 > > │
00:00:27 v #3497 > > ................................................................................
00:00:27 v #3498 > > ................................................................................
00:00:27 v #3499 > > │
00:00:27 v #3500 > > ................................................................................
00:00:27 v #3501 > > ................................................................................
00:00:27 v #3502 > > │
00:00:27 v #3503 > > ................................................................................
00:00:27 v #3504 > > ................................................................................
00:00:27 v #3505 > > │
00:00:27 v #3506 > > ................................................................................
00:00:27 v #3507 > > ................................................................................
00:00:27 v #3508 > > │
00:00:27 v #3509 > > ................................................................................
00:00:27 v #3510 > > ................................................................................
00:00:27 v #3511 > > │
00:00:27 v #3512 > > ................................................................................
00:00:27 v #3513 > > ................................................................................
00:00:27 v #3514 > > │
00:00:27 v #3515 > > │
00:00:27 v #3516 > > ................................................................................
00:00:27 v #3517 > > ................................................................................
00:00:27 v #3518 > > │
00:00:27 v #3519 > > ................................................................................
00:00:27 v #3520 > > ................................................................................
00:00:27 v #3521 > > │
00:00:27 v #3522 > > ................................................................................
00:00:27 v #3523 > > ................................................................................
00:00:27 v #3524 > > │
00:00:27 v #3525 > > ................................................................................
00:00:27 v #3526 > > ................................................................................
00:00:27 v #3527 > > │
00:00:27 v #3528 > > ................................................................................
00:00:27 v #3529 > > ................................................................................
00:00:27 v #3530 > > │
00:00:27 v #3531 > > ................................................................................
00:00:27 v #3532 > > ................................................................................
00:00:27 v #3533 > > │
00:00:27 v #3534 > > ................................................................................
00:00:27 v #3535 > > ................................................................................
00:00:27 v #3536 > > │
00:00:27 v #3537 > > ................................................................................
00:00:27 v #3538 > > ................................................................................
00:00:27 v #3539 > > │
00:00:27 v #3540 > > ................................................................................
00:00:27 v #3541 > > ................................................................................
00:00:27 v #3542 > > │
00:00:27 v #3543 > > ................................................................................
00:00:27 v #3544 > > ................................................................................
00:00:27 v #3545 > > │
00:00:27 v #3546 > > ....................;;..........................................................
00:00:27 v #3547 > > ................................................................................
00:00:27 v #3548 > > │
00:00:27 v #3549 > > ....................//;/;;;;;;;;;...............................................
00:00:27 v #3550 > > ................................................................................
00:00:27 v #3551 > > │
00:00:27 v #3552 > > ...................>//////;;;/;;;;;;;;;;;;;.....................................
00:00:27 v #3553 > > ................................................................................
00:00:27 v #3554 > > │
00:00:27 v #3555 > > ...................////////////;;;;;;;;;;;;;;;;;................................
00:00:27 v #3556 > > ................................................................................
00:00:27 v #3557 > > │
00:00:27 v #3558 > > ..................>/////////////////////;;;;;;;;;;;;;;..........................
00:00:27 v #3559 > > ................................................................................
00:00:27 v #3560 > > │
00:00:27 v #3561 > > ..................>///////////////////////;;;/;;;;;;;;;;;;;;....................
00:00:27 v #3562 > > ................................................................................
00:00:27 v #3563 > > │
00:00:27 v #3564 > > ................../////////////////////////////;;/;;;;;;;;;;;;;;;...............
00:00:27 v #3565 > > ;;;;;;;;;;;.....................................................................
00:00:27 v #3566 > > │
00:00:27 v #3567 > > .................>//////////////////////////////////<<<<<<<<<<<<<<..............
00:00:27 v #3568 > > >/;/;;;;;;;;;;;;................................................................
00:00:27 v #3569 > > │
00:00:27 v #3570 > > .................//////////////////////////////////<<<<<<<<<<<<<<..............>
00:00:27 v #3571 > > ///////;;/;;;;;;;;;;;...........................................................
00:00:27 v #3572 > > │
00:00:27 v #3573 > > ................>//////////////////////////////////<<<<<<<<<<<<<...............>
00:00:27 v #3574 > > //////////;;/;;;<<<<<<<............/;;;;;;;\....................................
00:00:27 v #3575 > > │
00:00:27 v #3576 > > ................//////////////////////////////////<<<<<<<<<<<<<...............>
00:00:27 v #3577 > > ///////////////<<<<<<<<...........>//;;/;;;;<<<.................................
00:00:27 v #3578 > > │
00:00:27 v #3579 > > ...............>//////////////////////////////////<<<<<<<<<<<<................
00:00:27 v #3580 > > //////////////<<<<<<<<............>///////<<<<..................................
00:00:27 v #3581 > > │
00:00:27 v #3582 > > ...............>/////////////////////////////////<<<<<<<<<<<<<...............>
00:00:27 v #3583 > > /////////////<<<<<<<<............>///////<<<<<..................................
00:00:27 v #3584 > > │
00:00:27 v #3585 > > .............../////////////////////////////////<<<<<<<<<<<<<................>
00:00:27 v #3586 > > /////////////<<<<<<<<............////////<<<<...................................
00:00:27 v #3587 > > │
00:00:27 v #3588 > > ..............>////////////////////////////////<<<<<<<<<<<<<.................
00:00:27 v #3589 > > ////////////<<<<<<<<................////<<<<<...................................
00:00:27 v #3590 > > │
00:00:27 v #3591 > > ............../////////////////////////////////<<<<<<<<<<<<...................
00:00:27 v #3592 > > ///////////<<<<<<<<.............................................................
00:00:27 v #3593 > > │
00:00:27 v #3594 > > .............>////////////////////////////////<<<<<<<<<<<<<.....................
00:00:27 v #3595 > > ../////////<<<<<<<<.............................................................
00:00:27 v #3596 > > │
00:00:27 v #3597 > > .............////////////////////////////////<<<<<<<<<<<<<......................
00:00:27 v #3598 > > ...../////<<<<<<................................................................
00:00:27 v #3599 > > │
00:00:27 v #3600 > > ................/////////////////////////////<<<<<<<<<<<<.......................
00:00:27 v #3601 > > ........./<.....................................................................
00:00:27 v #3602 > > │
00:00:27 v #3603 > > .................../////////////////////////<<<<<<<<<<<<........................
00:00:27 v #3604 > > ................................................................................
00:00:27 v #3605 > > │
00:00:27 v #3606 > > ....................../////////////////////<<<<<<<<<<<<.........................
00:00:27 v #3607 > > ................................................................................
00:00:27 v #3608 > > │
00:00:27 v #3609 > > ........................///////////////////<<<<<<<<<<...........................
00:00:27 v #3610 > > ................................................................................
00:00:27 v #3611 > > │
00:00:27 v #3612 > > ............................//////////////<<<<<<<<<.............................
00:00:27 v #3613 > > ................................................................................
00:00:27 v #3614 > > │
00:00:27 v #3615 > > ...............................//////////<<<<<<<................................
00:00:27 v #3616 > > ................................................................................
00:00:27 v #3617 > > │
00:00:27 v #3618 > > ..................................///////<<<<<..................................
00:00:27 v #3619 > > ................................................................................
00:00:27 v #3620 > > │
00:00:27 v #3621 > > ....................................////<<<.....................................
00:00:27 v #3622 > > ................................................................................
00:00:27 v #3623 > > │
00:00:27 v #3624 > > ......................................./........................................
00:00:27 v #3625 > > ................................................................................
00:00:27 v #3626 > > │
00:00:27 v #3627 > > ................................................................................
00:00:27 v #3628 > > ................................................................................
00:00:27 v #3629 > > │
00:00:27 v #3630 > > ................................................................................
00:00:27 v #3631 > > ................................................................................
00:00:27 v #3632 > > │
00:00:27 v #3633 > > ................................................................................
00:00:27 v #3634 > > ................................................................................
00:00:27 v #3635 > > │
00:00:27 v #3636 > > ................................................................................
00:00:27 v #3637 > > ................................................................................
00:00:27 v #3638 > > │
00:00:27 v #3639 > > ................................................................................
00:00:27 v #3640 > > ................................................................................
00:00:27 v #3641 > > │
00:00:27 v #3642 > > ................................................................................
00:00:27 v #3643 > > ................................................................................
00:00:27 v #3644 > > │
00:00:27 v #3645 > > ................................................................................
00:00:27 v #3646 > > ................................................................................
00:00:27 v #3647 > > │
00:00:27 v #3648 > > │
00:00:27 v #3649 > > ................................................................................
00:00:27 v #3650 > > ................................................................................
00:00:27 v #3651 > > │
00:00:27 v #3652 > > ................................................................................
00:00:27 v #3653 > > ................................................................................
00:00:27 v #3654 > > │
00:00:27 v #3655 > > ................................................................................
00:00:27 v #3656 > > ................................................................................
00:00:27 v #3657 > > │
00:00:27 v #3658 > > ................................................................................
00:00:27 v #3659 > > ................................................................................
00:00:27 v #3660 > > │
00:00:27 v #3661 > > ................................................................................
00:00:27 v #3662 > > ................................................................................
00:00:27 v #3663 > > │
00:00:27 v #3664 > > ................................................................................
00:00:27 v #3665 > > ................................................................................
00:00:27 v #3666 > > │
00:00:27 v #3667 > > ................................................................................
00:00:27 v #3668 > > ................................................................................
00:00:27 v #3669 > > │
00:00:27 v #3670 > > ................................................................................
00:00:27 v #3671 > > ................................................................................
00:00:27 v #3672 > > │
00:00:27 v #3673 > > ................................................................................
00:00:27 v #3674 > > ................................................................................
00:00:27 v #3675 > > │
00:00:27 v #3676 > > ................................................................................
00:00:27 v #3677 > > ................................................................................
00:00:27 v #3678 > > │
00:00:27 v #3679 > > ................................................................................
00:00:27 v #3680 > > ................................................................................
00:00:27 v #3681 > > │
00:00:27 v #3682 > > ...................;/;;;;;;;;...................................................
00:00:27 v #3683 > > ................................................................................
00:00:27 v #3684 > > │
00:00:27 v #3685 > > ...................//////;///;;;;;;;;;;.........................................
00:00:27 v #3686 > > ................................................................................
00:00:27 v #3687 > > │
00:00:27 v #3688 > > ..................>/////////////;;;;;;;;;;;;;;;.................................
00:00:27 v #3689 > > ................................................................................
00:00:27 v #3690 > > │
00:00:27 v #3691 > > ..................>////////////////////;//;;;;;;;;;;;;..........................
00:00:27 v #3692 > > ................................................................................
00:00:27 v #3693 > > │
00:00:27 v #3694 > > ................../////////////////////////////;/;;;;;;;;;;;;...................
00:00:27 v #3695 > > ................................................................................
00:00:27 v #3696 > > │
00:00:27 v #3697 > > .................>///////////////////////////////////<<<<<<<<<<<<...............
00:00:27 v #3698 > > ................................................................................
00:00:27 v #3699 > > │
00:00:27 v #3700 > > .................>//////////////////////////////////<<<<<<<<<<<<................
00:00:27 v #3701 > > /;;/;;;;;;;;;;;.................................................................
00:00:27 v #3702 > > │
00:00:27 v #3703 > > .................///////////////////////////////////<<<<<<<<<<<<...............>
00:00:27 v #3704 > > ///////;;;;;;;;;;;;;;...........................................................
00:00:27 v #3705 > > │
00:00:27 v #3706 > > ................>//////////////////////////////////<<<<<<<<<<<<................>
00:00:27 v #3707 > > /////////////;;<<<<<<<<............;;;;;;;;.....................................
00:00:27 v #3708 > > │
00:00:27 v #3709 > > ................>//////////////////////////////////<<<<<<<<<<<................>
00:00:27 v #3710 > > ///////////////<<<<<<<............>//;;/;;<<<<<.................................
00:00:27 v #3711 > > │
00:00:27 v #3712 > > ................//////////////////////////////////<<<<<<<<<<<<................>
00:00:27 v #3713 > > ///////////////<<<<<<<............>///////<<<<..................................
00:00:27 v #3714 > > │
00:00:27 v #3715 > > ...............>//////////////////////////////////<<<<<<<<<<<.................
00:00:27 v #3716 > > //////////////<<<<<<<............>///////<<<<<..................................
00:00:27 v #3717 > > │
00:00:27 v #3718 > > ...............//////////////////////////////////<<<<<<<<<<<.................>
00:00:27 v #3719 > > /////////////<<<<<<<.............>///////<<<<...................................
00:00:27 v #3720 > > │
00:00:27 v #3721 > > ...............//////////////////////////////////<<<<<<<<<<<.................
00:00:27 v #3722 > > /////////////<<<<<<<................////<<<<<...................................
00:00:27 v #3723 > > │
00:00:27 v #3724 > > ..............>/////////////////////////////////<<<<<<<<<<<..................
00:00:27 v #3725 > > ////////////<<<<<<<.............................................................
00:00:27 v #3726 > > │
00:00:27 v #3727 > > ............../////////////////////////////////<<<<<<<<<<<......................
00:00:27 v #3728 > > ..//////////<<<<<<<.............................................................
00:00:27 v #3729 > > │
00:00:27 v #3730 > > .............//////////////////////////////////<<<<<<<<<<<......................
00:00:27 v #3731 > > ....../////<<<<<................................................................
00:00:27 v #3732 > > │
00:00:27 v #3733 > > ..............////////////////////////////////<<<<<<<<<<<.......................
00:00:27 v #3734 > > ........../<....................................................................
00:00:27 v #3735 > > │
00:00:27 v #3736 > > ................./////////////////////////////<<<<<<<<<<........................
00:00:27 v #3737 > > ................................................................................
00:00:27 v #3738 > > │
00:00:27 v #3739 > > .....................////////////////////////<<<<<<<<<<<........................
00:00:27 v #3740 > > ................................................................................
00:00:27 v #3741 > > │
00:00:27 v #3742 > > ........................////////////////////<<<<<<<<<<..........................
00:00:27 v #3743 > > ................................................................................
00:00:27 v #3744 > > │
00:00:27 v #3745 > > ............................////////////////<<<<<<<.............................
00:00:27 v #3746 > > ................................................................................
00:00:27 v #3747 > > │
00:00:27 v #3748 > > ................................///////////<<<<<<...............................
00:00:27 v #3749 > > ................................................................................
00:00:27 v #3750 > > │
00:00:27 v #3751 > > ...................................////////<<<<.................................
00:00:27 v #3752 > > ................................................................................
00:00:27 v #3753 > > │
00:00:27 v #3754 > > .......................................///<<....................................
00:00:27 v #3755 > > ................................................................................
00:00:27 v #3756 > > │
00:00:27 v #3757 > > ................................................................................
00:00:27 v #3758 > > ................................................................................
00:00:27 v #3759 > > │
00:00:27 v #3760 > > ................................................................................
00:00:27 v #3761 > > ................................................................................
00:00:27 v #3762 > > │
00:00:27 v #3763 > > ................................................................................
00:00:27 v #3764 > > ................................................................................
00:00:27 v #3765 > > │
00:00:27 v #3766 > > ................................................................................
00:00:27 v #3767 > > ................................................................................
00:00:27 v #3768 > > │
00:00:27 v #3769 > > ................................................................................
00:00:27 v #3770 > > ................................................................................
00:00:27 v #3771 > > │
00:00:27 v #3772 > > ................................................................................
00:00:27 v #3773 > > ................................................................................
00:00:27 v #3774 > > │
00:00:27 v #3775 > > ................................................................................
00:00:27 v #3776 > > ................................................................................
00:00:27 v #3777 > > │
00:00:27 v #3778 > > ................................................................................
00:00:27 v #3779 > > ................................................................................
00:00:27 v #3780 > > │
00:00:27 v #3781 > > │
00:00:27 v #3782 > > ................................................................................
00:00:27 v #3783 > > ................................................................................
00:00:27 v #3784 > > │
00:00:27 v #3785 > > ................................................................................
00:00:27 v #3786 > > ................................................................................
00:00:27 v #3787 > > │
00:00:27 v #3788 > > ................................................................................
00:00:27 v #3789 > > ................................................................................
00:00:27 v #3790 > > │
00:00:27 v #3791 > > ................................................................................
00:00:27 v #3792 > > ................................................................................
00:00:27 v #3793 > > │
00:00:27 v #3794 > > ................................................................................
00:00:27 v #3795 > > ................................................................................
00:00:27 v #3796 > > │
00:00:27 v #3797 > > ................................................................................
00:00:27 v #3798 > > ................................................................................
00:00:27 v #3799 > > │
00:00:27 v #3800 > > ................................................................................
00:00:27 v #3801 > > ................................................................................
00:00:27 v #3802 > > │
00:00:27 v #3803 > > ................................................................................
00:00:27 v #3804 > > ................................................................................
00:00:27 v #3805 > > │
00:00:27 v #3806 > > ................................................................................
00:00:27 v #3807 > > ................................................................................
00:00:27 v #3808 > > │
00:00:27 v #3809 > > ................................................................................
00:00:27 v #3810 > > ................................................................................
00:00:27 v #3811 > > │
00:00:27 v #3812 > > ................................................................................
00:00:27 v #3813 > > ................................................................................
00:00:27 v #3814 > > │
00:00:27 v #3815 > > ...................;;;;;........................................................
00:00:27 v #3816 > > ................................................................................
00:00:27 v #3817 > > │
00:00:27 v #3818 > > ..................>//////;;;;;;;;;;.............................................
00:00:27 v #3819 > > ................................................................................
00:00:27 v #3820 > > │
00:00:27 v #3821 > > ..................>//////////////;;;;/;;;;;;....................................
00:00:27 v #3822 > > ................................................................................
00:00:27 v #3823 > > │
00:00:27 v #3824 > > ..................//////////////////////////;;;;;;;;;;..........................
00:00:27 v #3825 > > ................................................................................
00:00:27 v #3826 > > │
00:00:27 v #3827 > > ..................//////////////////////////////////;/<<<<<<<<<.................
00:00:27 v #3828 > > ................................................................................
00:00:27 v #3829 > > │
00:00:27 v #3830 > > .................>///////////////////////////////////<<<<<<<<<<.................
00:00:27 v #3831 > > ................................................................................
00:00:27 v #3832 > > │
00:00:27 v #3833 > > .................////////////////////////////////////<<<<<<<<<<.................
00:00:27 v #3834 > > ;/;;;;;;;;;;;;;.................................................................
00:00:27 v #3835 > > │
00:00:27 v #3836 > > .................///////////////////////////////////<<<<<<<<<<.................>
00:00:27 v #3837 > > ///////;;;;;;;;;;;;;;<..........................................................
00:00:27 v #3838 > > │
00:00:27 v #3839 > > ................>///////////////////////////////////<<<<<<<<<<.................
00:00:27 v #3840 > > //////////////;<<<<<<<.............;;;;;;;;.....................................
00:00:27 v #3841 > > │
00:00:27 v #3842 > > ................>///////////////////////////////////<<<<<<<<<..................
00:00:27 v #3843 > > ///////////////<<<<<<<............>//;;//;<<<<..................................
00:00:27 v #3844 > > │
00:00:27 v #3845 > > ................///////////////////////////////////<<<<<<<<<<.................>
00:00:27 v #3846 > > ///////////////<<<<<<.............>///////<<<<..................................
00:00:27 v #3847 > > │
00:00:27 v #3848 > > ...............>//////////////////////////////////<<<<<<<<<<..................
00:00:27 v #3849 > > //////////////<<<<<<<.............////////<<<<..................................
00:00:27 v #3850 > > │
00:00:27 v #3851 > > ...............>//////////////////////////////////<<<<<<<<<<..................
00:00:27 v #3852 > > ///////////////<<<<<.............>///////<<<<...................................
00:00:27 v #3853 > > │
00:00:27 v #3854 > > ...............///////////////////////////////////<<<<<<<<<..................>
00:00:27 v #3855 > > /////////////<<<<<<<................/////<<<<...................................
00:00:27 v #3856 > > │
00:00:27 v #3857 > > ...............//////////////////////////////////<<<<<<<<<<..................
00:00:27 v #3858 > > /////////////<<<<<<.............................................................
00:00:27 v #3859 > > │
00:00:27 v #3860 > > ..............>//////////////////////////////////<<<<<<<<<......................
00:00:27 v #3861 > > .///////////<<<<<<<.............................................................
00:00:27 v #3862 > > │
00:00:27 v #3863 > > ..............>/////////////////////////////////<<<<<<<<<<......................
00:00:27 v #3864 > > ......./////<<<<................................................................
00:00:27 v #3865 > > │
00:00:27 v #3866 > > ..............//////////////////////////////////<<<<<<<<<.......................
00:00:27 v #3867 > > ................................................................................
00:00:27 v #3868 > > │
00:00:27 v #3869 > > ...............////////////////////////////////<<<<<<<<<<.......................
00:00:27 v #3870 > > ................................................................................
00:00:27 v #3871 > > │
00:00:27 v #3872 > > ....................///////////////////////////<<<<<<<<<........................
00:00:27 v #3873 > > ................................................................................
00:00:27 v #3874 > > │
00:00:27 v #3875 > > ........................//////////////////////<<<<<<<<..........................
00:00:27 v #3876 > > ................................................................................
00:00:27 v #3877 > > │
00:00:27 v #3878 > > ............................./////////////////<<<<<<............................
00:00:27 v #3879 > > ................................................................................
00:00:27 v #3880 > > │
00:00:27 v #3881 > > .................................////////////<<<<<..............................
00:00:27 v #3882 > > ................................................................................
00:00:27 v #3883 > > │
00:00:27 v #3884 > > ......................................///////<<<................................
00:00:27 v #3885 > > ................................................................................
00:00:27 v #3886 > > │
00:00:27 v #3887 > > ..........................................//<<..................................
00:00:27 v #3888 > > ................................................................................
00:00:27 v #3889 > > │
00:00:27 v #3890 > > ................................................................................
00:00:27 v #3891 > > ................................................................................
00:00:27 v #3892 > > │
00:00:27 v #3893 > > ................................................................................
00:00:27 v #3894 > > ................................................................................
00:00:27 v #3895 > > │
00:00:27 v #3896 > > ................................................................................
00:00:27 v #3897 > > ................................................................................
00:00:27 v #3898 > > │
00:00:27 v #3899 > > ................................................................................
00:00:27 v #3900 > > ................................................................................
00:00:27 v #3901 > > │
00:00:27 v #3902 > > ................................................................................
00:00:27 v #3903 > > ................................................................................
00:00:27 v #3904 > > │
00:00:27 v #3905 > > ................................................................................
00:00:27 v #3906 > > ................................................................................
00:00:27 v #3907 > > │
00:00:27 v #3908 > > ................................................................................
00:00:27 v #3909 > > ................................................................................
00:00:27 v #3910 > > │
00:00:27 v #3911 > > ................................................................................
00:00:27 v #3912 > > ................................................................................
00:00:27 v #3913 > > │
00:00:27 v #3914 > > │
00:00:27 v #3915 > > ................................................................................
00:00:27 v #3916 > > ................................................................................
00:00:27 v #3917 > > │
00:00:27 v #3918 > > ................................................................................
00:00:27 v #3919 > > ................................................................................
00:00:27 v #3920 > > │
00:00:27 v #3921 > > ................................................................................
00:00:27 v #3922 > > ................................................................................
00:00:27 v #3923 > > │
00:00:27 v #3924 > > ................................................................................
00:00:27 v #3925 > > ................................................................................
00:00:27 v #3926 > > │
00:00:27 v #3927 > > ................................................................................
00:00:27 v #3928 > > ................................................................................
00:00:27 v #3929 > > │
00:00:27 v #3930 > > ................................................................................
00:00:27 v #3931 > > ................................................................................
00:00:27 v #3932 > > │
00:00:27 v #3933 > > ................................................................................
00:00:27 v #3934 > > ................................................................................
00:00:27 v #3935 > > │
00:00:27 v #3936 > > ................................................................................
00:00:27 v #3937 > > ................................................................................
00:00:27 v #3938 > > │
00:00:27 v #3939 > > ................................................................................
00:00:27 v #3940 > > ................................................................................
00:00:27 v #3941 > > │
00:00:27 v #3942 > > ................................................................................
00:00:27 v #3943 > > ................................................................................
00:00:27 v #3944 > > │
00:00:27 v #3945 > > ................................................................................
00:00:27 v #3946 > > ................................................................................
00:00:27 v #3947 > > │
00:00:27 v #3948 > > ..................;;;...........................................................
00:00:27 v #3949 > > ................................................................................
00:00:27 v #3950 > > │
00:00:27 v #3951 > > ..................//;;;;;;/;;;;;;;;.............................................
00:00:27 v #3952 > > ................................................................................
00:00:27 v #3953 > > │
00:00:27 v #3954 > > ..................////////////////;;//;;;;;;;;;;;...............................
00:00:27 v #3955 > > ................................................................................
00:00:27 v #3956 > > │
00:00:27 v #3957 > > .................>///////////////////////////////;;;/;<<<<<.....................
00:00:27 v #3958 > > ................................................................................
00:00:27 v #3959 > > │
00:00:27 v #3960 > > .................>////////////////////////////////////<<<<<<<<..................
00:00:27 v #3961 > > ................................................................................
00:00:27 v #3962 > > │
00:00:27 v #3963 > > ................./////////////////////////////////////<<<<<<<<..................
00:00:27 v #3964 > > ................................................................................
00:00:27 v #3965 > > │
00:00:27 v #3966 > > .................////////////////////////////////////<<<<<<<<<.................>
00:00:27 v #3967 > > /;;;;;;;;;;;;;..................................................................
00:00:27 v #3968 > > │
00:00:27 v #3969 > > .................////////////////////////////////////<<<<<<<<..................>
00:00:27 v #3970 > > ///////;;;;;;;;/<<<<<<..........................................................
00:00:27 v #3971 > > │
00:00:27 v #3972 > > ................>///////////////////////////////////<<<<<<<<<..................
00:00:27 v #3973 > > ////////////////<<<<<<.............;;;;;;;;.....................................
00:00:27 v #3974 > > │
00:00:27 v #3975 > > ................>///////////////////////////////////<<<<<<<<...................
00:00:27 v #3976 > > ///////////////<<<<<<.............>//;;;//<<<<..................................
00:00:27 v #3977 > > │
00:00:27 v #3978 > > ................////////////////////////////////////<<<<<<<<..................>
00:00:27 v #3979 > > ///////////////<<<<<<.............>///////<<<<..................................
00:00:27 v #3980 > > │
00:00:27 v #3981 > > ................///////////////////////////////////<<<<<<<<<..................>
00:00:27 v #3982 > > //////////////<<<<<<..............////////<<<...................................
00:00:27 v #3983 > > │
00:00:27 v #3984 > > ................///////////////////////////////////<<<<<<<<...................
00:00:27 v #3985 > > //////////////<<<<<<..............///////<<<<...................................
00:00:27 v #3986 > > │
00:00:27 v #3987 > > ...............>///////////////////////////////////<<<<<<<<...................
00:00:27 v #3988 > > //////////////<<<<<<................/////<<<<...................................
00:00:27 v #3989 > > │
00:00:27 v #3990 > > ...............>//////////////////////////////////<<<<<<<<...................>
00:00:27 v #3991 > > /////////////<<<<<<.............................................................
00:00:27 v #3992 > > │
00:00:27 v #3993 > > ...............///////////////////////////////////<<<<<<<<......................
00:00:27 v #3994 > > .////////////<<<<<<.............................................................
00:00:27 v #3995 > > │
00:00:27 v #3996 > > ...............///////////////////////////////////<<<<<<<<......................
00:00:27 v #3997 > > ......../////<<<................................................................
00:00:27 v #3998 > > │
00:00:27 v #3999 > > ..............>//////////////////////////////////<<<<<<<<.......................
00:00:27 v #4000 > > ................................................................................
00:00:27 v #4001 > > │
00:00:27 v #4002 > > ..............>//////////////////////////////////<<<<<<<<.......................
00:00:27 v #4003 > > ................................................................................
00:00:27 v #4004 > > │
00:00:27 v #4005 > > ..................//////////////////////////////<<<<<<<<........................
00:00:27 v #4006 > > ................................................................................
00:00:27 v #4007 > > │
00:00:27 v #4008 > > ......................./////////////////////////<<<<<<..........................
00:00:27 v #4009 > > ................................................................................
00:00:27 v #4010 > > │
00:00:27 v #4011 > > .............................///////////////////<<<<............................
00:00:27 v #4012 > > ................................................................................
00:00:27 v #4013 > > │
00:00:27 v #4014 > > ...................................////////////<<<<.............................
00:00:27 v #4015 > > ................................................................................
00:00:27 v #4016 > > │
00:00:27 v #4017 > > .........................................//////<<...............................
00:00:27 v #4018 > > ................................................................................
00:00:27 v #4019 > > │
00:00:27 v #4020 > > ............................................../.................................
00:00:27 v #4021 > > ................................................................................
00:00:27 v #4022 > > │
00:00:27 v #4023 > > ................................................................................
00:00:27 v #4024 > > ................................................................................
00:00:27 v #4025 > > │
00:00:27 v #4026 > > ................................................................................
00:00:27 v #4027 > > ................................................................................
00:00:27 v #4028 > > │
00:00:27 v #4029 > > ................................................................................
00:00:27 v #4030 > > ................................................................................
00:00:27 v #4031 > > │
00:00:27 v #4032 > > ................................................................................
00:00:27 v #4033 > > ................................................................................
00:00:27 v #4034 > > │
00:00:27 v #4035 > > ................................................................................
00:00:27 v #4036 > > ................................................................................
00:00:27 v #4037 > > │
00:00:27 v #4038 > > ................................................................................
00:00:27 v #4039 > > ................................................................................
00:00:27 v #4040 > > │
00:00:27 v #4041 > > ................................................................................
00:00:27 v #4042 > > ................................................................................
00:00:27 v #4043 > > │
00:00:27 v #4044 > > ................................................................................
00:00:27 v #4045 > > ................................................................................
00:00:27 v #4046 > > │
00:00:27 v #4047 > > │
00:00:27 v #4048 > > ................................................................................
00:00:27 v #4049 > > ................................................................................
00:00:27 v #4050 > > │
00:00:27 v #4051 > > ................................................................................
00:00:27 v #4052 > > ................................................................................
00:00:27 v #4053 > > │
00:00:27 v #4054 > > ................................................................................
00:00:27 v #4055 > > ................................................................................
00:00:27 v #4056 > > │
00:00:27 v #4057 > > ................................................................................
00:00:27 v #4058 > > ................................................................................
00:00:27 v #4059 > > │
00:00:27 v #4060 > > ................................................................................
00:00:27 v #4061 > > ................................................................................
00:00:27 v #4062 > > │
00:00:27 v #4063 > > ................................................................................
00:00:27 v #4064 > > ................................................................................
00:00:27 v #4065 > > │
00:00:27 v #4066 > > ................................................................................
00:00:27 v #4067 > > ................................................................................
00:00:27 v #4068 > > │
00:00:27 v #4069 > > ................................................................................
00:00:27 v #4070 > > ................................................................................
00:00:27 v #4071 > > │
00:00:27 v #4072 > > ................................................................................
00:00:27 v #4073 > > ................................................................................
00:00:27 v #4074 > > │
00:00:27 v #4075 > > ................................................................................
00:00:27 v #4076 > > ................................................................................
00:00:27 v #4077 > > │
00:00:27 v #4078 > > ................................................................................
00:00:27 v #4079 > > ................................................................................
00:00:27 v #4080 > > │
00:00:27 v #4081 > > ................................................................................
00:00:27 v #4082 > > ................................................................................
00:00:27 v #4083 > > │
00:00:27 v #4084 > > .................>;;;;;;;;;;;;/;;;;;;;;.........................................
00:00:27 v #4085 > > ................................................................................
00:00:27 v #4086 > > │
00:00:27 v #4087 > > .................>////////////////////;;/;;/;;/;;;;;;;;<<.......................
00:00:27 v #4088 > > ................................................................................
00:00:27 v #4089 > > │
00:00:27 v #4090 > > .................>////////////////////////////////////<<<<<<....................
00:00:27 v #4091 > > ................................................................................
00:00:27 v #4092 > > │
00:00:27 v #4093 > > ................./////////////////////////////////////<<<<<<<...................
00:00:27 v #4094 > > ................................................................................
00:00:27 v #4095 > > │
00:00:27 v #4096 > > ................./////////////////////////////////////<<<<<<<...................
00:00:27 v #4097 > > ................................................................................
00:00:27 v #4098 > > │
00:00:27 v #4099 > > ................./////////////////////////////////////<<<<<<...................;
00:00:27 v #4100 > > ;;;;;/;;;;;;;...................................................................
00:00:27 v #4101 > > │
00:00:27 v #4102 > > .................////////////////////////////////////<<<<<<<...................>
00:00:27 v #4103 > > ////////;;;///;;<<<<<...........................................................
00:00:27 v #4104 > > │
00:00:27 v #4105 > > ................>////////////////////////////////////<<<<<<<...................
00:00:27 v #4106 > > ////////////////<<<<<..............;;;;;;;;.....................................
00:00:27 v #4107 > > │
00:00:27 v #4108 > > ................>////////////////////////////////////<<<<<<....................
00:00:27 v #4109 > > ///////////////<<<<<<.............>//;;;;;<<<<..................................
00:00:27 v #4110 > > │
00:00:27 v #4111 > > ................>////////////////////////////////////<<<<<<....................
00:00:27 v #4112 > > ///////////////<<<<<..............>///////<<<<..................................
00:00:27 v #4113 > > │
00:00:27 v #4114 > > ................>///////////////////////////////////<<<<<<<...................>
00:00:27 v #4115 > > ///////////////<<<<<..............>///////<<<...................................
00:00:27 v #4116 > > │
00:00:27 v #4117 > > ................////////////////////////////////////<<<<<<<...................>
00:00:27 v #4118 > > ///////////////<<<<<..............////////<<<...................................
00:00:27 v #4119 > > │
00:00:27 v #4120 > > ................////////////////////////////////////<<<<<<....................>
00:00:27 v #4121 > > ///////////////<<<<<...............///////<<=...................................
00:00:27 v #4122 > > │
00:00:27 v #4123 > > ................////////////////////////////////////<<<<<<....................
00:00:27 v #4124 > > //////////////<<<<<.............................................................
00:00:27 v #4125 > > │
00:00:27 v #4126 > > ...............>///////////////////////////////////<<<<<<<.....................
00:00:27 v #4127 > > //////////////<<<<<.............................................................
00:00:27 v #4128 > > │
00:00:27 v #4129 > > ...............>///////////////////////////////////<<<<<<.......................
00:00:27 v #4130 > > ........./////<<................................................................
00:00:27 v #4131 > > │
00:00:27 v #4132 > > ...............>///////////////////////////////////<<<<<<.......................
00:00:27 v #4133 > > ................................................................................
00:00:27 v #4134 > > │
00:00:27 v #4135 > > ...............>///////////////////////////////////<<<<<<.......................
00:00:27 v #4136 > > ................................................................................
00:00:27 v #4137 > > │
00:00:27 v #4138 > > ...............///////////////////////////////////<<<<<<........................
00:00:27 v #4139 > > ................................................................................
00:00:27 v #4140 > > │
00:00:27 v #4141 > > ......................////////////////////////////<<<<<.........................
00:00:27 v #4142 > > ................................................................................
00:00:27 v #4143 > > │
00:00:27 v #4144 > > ..............................////////////////////<<<...........................
00:00:27 v #4145 > > ................................................................................
00:00:27 v #4146 > > │
00:00:27 v #4147 > > ...................................../////////////<<............................
00:00:27 v #4148 > > ................................................................................
00:00:27 v #4149 > > │
00:00:27 v #4150 > > .............................................////<<.............................
00:00:27 v #4151 > > ................................................................................
00:00:27 v #4152 > > │
00:00:27 v #4153 > > ................................................................................
00:00:27 v #4154 > > ................................................................................
00:00:27 v #4155 > > │
00:00:27 v #4156 > > ................................................................................
00:00:27 v #4157 > > ................................................................................
00:00:27 v #4158 > > │
00:00:27 v #4159 > > ................................................................................
00:00:27 v #4160 > > ................................................................................
00:00:27 v #4161 > > │
00:00:27 v #4162 > > ................................................................................
00:00:27 v #4163 > > ................................................................................
00:00:27 v #4164 > > │
00:00:27 v #4165 > > ................................................................................
00:00:27 v #4166 > > ................................................................................
00:00:27 v #4167 > > │
00:00:27 v #4168 > > ................................................................................
00:00:27 v #4169 > > ................................................................................
00:00:27 v #4170 > > │
00:00:27 v #4171 > > ................................................................................
00:00:27 v #4172 > > ................................................................................
00:00:27 v #4173 > > │
00:00:27 v #4174 > > ................................................................................
00:00:27 v #4175 > > ................................................................................
00:00:27 v #4176 > > │
00:00:27 v #4177 > > ................................................................................
00:00:27 v #4178 > > ................................................................................
00:00:27 v #4179 > > │
00:00:27 v #4180 > > │
00:00:27 v #4181 > > ................................................................................
00:00:27 v #4182 > > ................................................................................
00:00:27 v #4183 > > │
00:00:27 v #4184 > > ................................................................................
00:00:27 v #4185 > > ................................................................................
00:00:27 v #4186 > > │
00:00:27 v #4187 > > ................................................................................
00:00:27 v #4188 > > ................................................................................
00:00:27 v #4189 > > │
00:00:27 v #4190 > > ................................................................................
00:00:27 v #4191 > > ................................................................................
00:00:27 v #4192 > > │
00:00:27 v #4193 > > ................................................................................
00:00:27 v #4194 > > ................................................................................
00:00:27 v #4195 > > │
00:00:27 v #4196 > > ................................................................................
00:00:27 v #4197 > > ................................................................................
00:00:27 v #4198 > > │
00:00:27 v #4199 > > ................................................................................
00:00:27 v #4200 > > ................................................................................
00:00:27 v #4201 > > │
00:00:27 v #4202 > > ................................................................................
00:00:27 v #4203 > > ................................................................................
00:00:27 v #4204 > > │
00:00:27 v #4205 > > ................................................................................
00:00:27 v #4206 > > ................................................................................
00:00:27 v #4207 > > │
00:00:27 v #4208 > > ................................................................................
00:00:27 v #4209 > > ................................................................................
00:00:27 v #4210 > > │
00:00:27 v #4211 > > ................................................................................
00:00:27 v #4212 > > ................................................................................
00:00:27 v #4213 > > │
00:00:27 v #4214 > > ................................................................................
00:00:27 v #4215 > > ................................................................................
00:00:27 v #4216 > > │
00:00:27 v #4217 > > .................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<........................
00:00:27 v #4218 > > ................................................................................
00:00:27 v #4219 > > │
00:00:27 v #4220 > > .................//////////////////////////////////////<<<......................
00:00:27 v #4221 > > ................................................................................
00:00:27 v #4222 > > │
00:00:27 v #4223 > > .................//////////////////////////////////////<<<<.....................
00:00:27 v #4224 > > ................................................................................
00:00:27 v #4225 > > │
00:00:27 v #4226 > > ................./////////////////////////////////////<<<<<.....................
00:00:27 v #4227 > > ................................................................................
00:00:27 v #4228 > > │
00:00:27 v #4229 > > ................./////////////////////////////////////<<<<<.....................
00:00:27 v #4230 > > ................................................................................
00:00:27 v #4231 > > │
00:00:27 v #4232 > > ................./////////////////////////////////////<<<<<....................;
00:00:27 v #4233 > > ;/;;;;;;;;;;....................................................................
00:00:27 v #4234 > > │
00:00:27 v #4235 > > ................./////////////////////////////////////<<<<<....................
00:00:27 v #4236 > > ////////////;;;;<<<<............................................................
00:00:27 v #4237 > > │
00:00:27 v #4238 > > ................./////////////////////////////////////<<<<<....................
00:00:27 v #4239 > > ////////////////<<<<...............;;;;;;;;.....................................
00:00:27 v #4240 > > │
00:00:27 v #4241 > > ................>/////////////////////////////////////<<<<<....................
00:00:27 v #4242 > > ////////////////<<<<..............>//;;;;;<<<<..................................
00:00:27 v #4243 > > │
00:00:27 v #4244 > > ................>/////////////////////////////////////<<<<.....................
00:00:27 v #4245 > > ////////////////<<<<..............>///////<<<...................................
00:00:27 v #4246 > > │
00:00:27 v #4247 > > ................>////////////////////////////////////<<<<<.....................
00:00:27 v #4248 > > ///////////////<<<<<..............>///////<<<...................................
00:00:27 v #4249 > > │
00:00:27 v #4250 > > ................>////////////////////////////////////<<<<<.....................
00:00:27 v #4251 > > ///////////////<<<<<..............>///////<<<...................................
00:00:27 v #4252 > > │
00:00:27 v #4253 > > ................>////////////////////////////////////<<<<<.....................
00:00:27 v #4254 > > ///////////////<<<<<..............////////<<....................................
00:00:27 v #4255 > > │
00:00:27 v #4256 > > ................>////////////////////////////////////<<<<<....................>
00:00:27 v #4257 > > ///////////////<<<<.............................................................
00:00:27 v #4258 > > │
00:00:27 v #4259 > > ................>////////////////////////////////////<<<<<....................
00:00:27 v #4260 > > ///////////////<<<<.............................................................
00:00:27 v #4261 > > │
00:00:27 v #4262 > > ................>////////////////////////////////////<<<<.......................
00:00:27 v #4263 > > ............///<................................................................
00:00:27 v #4264 > > │
00:00:27 v #4265 > > ................>////////////////////////////////////<<<<.......................
00:00:27 v #4266 > > ................................................................................
00:00:27 v #4267 > > │
00:00:27 v #4268 > > ................////////////////////////////////////<<<<<.......................
00:00:27 v #4269 > > ................................................................................
00:00:27 v #4270 > > │
00:00:27 v #4271 > > ................////////////////////////////////////<<<<........................
00:00:27 v #4272 > > ................................................................................
00:00:27 v #4273 > > │
00:00:27 v #4274 > > .................///////////////////////////////////<<<.........................
00:00:27 v #4275 > > ................................................................................
00:00:27 v #4276 > > │
00:00:27 v #4277 > > .............................///////////////////////<<..........................
00:00:27 v #4278 > > ................................................................................
00:00:27 v #4279 > > │
00:00:27 v #4280 > > .........................................///////////<...........................
00:00:27 v #4281 > > ................................................................................
00:00:27 v #4282 > > │
00:00:27 v #4283 > > ................................................................................
00:00:27 v #4284 > > ................................................................................
00:00:27 v #4285 > > │
00:00:27 v #4286 > > ................................................................................
00:00:27 v #4287 > > ................................................................................
00:00:27 v #4288 > > │
00:00:27 v #4289 > > ................................................................................
00:00:27 v #4290 > > ................................................................................
00:00:27 v #4291 > > │
00:00:27 v #4292 > > ................................................................................
00:00:27 v #4293 > > ................................................................................
00:00:27 v #4294 > > │
00:00:27 v #4295 > > ................................................................................
00:00:27 v #4296 > > ................................................................................
00:00:27 v #4297 > > │
00:00:27 v #4298 > > ................................................................................
00:00:27 v #4299 > > ................................................................................
00:00:27 v #4300 > > │
00:00:27 v #4301 > > ................................................................................
00:00:27 v #4302 > > ................................................................................
00:00:27 v #4303 > > │
00:00:27 v #4304 > > ................................................................................
00:00:27 v #4305 > > ................................................................................
00:00:27 v #4306 > > │
00:00:27 v #4307 > > ................................................................................
00:00:27 v #4308 > > ................................................................................
00:00:27 v #4309 > > │
00:00:27 v #4310 > > ................................................................................
00:00:27 v #4311 > > ................................................................................
00:00:27 v #4312 > > │
00:00:27 v #4313 > > │
00:00:27 v #4314 > > ................................................................................
00:00:27 v #4315 > > ................................................................................
00:00:27 v #4316 > > │
00:00:27 v #4317 > > ................................................................................
00:00:27 v #4318 > > ................................................................................
00:00:27 v #4319 > > │
00:00:27 v #4320 > > ................................................................................
00:00:27 v #4321 > > ................................................................................
00:00:27 v #4322 > > │
00:00:27 v #4323 > > ................................................................................
00:00:27 v #4324 > > ................................................................................
00:00:27 v #4325 > > │
00:00:27 v #4326 > > ................................................................................
00:00:27 v #4327 > > ................................................................................
00:00:27 v #4328 > > │
00:00:27 v #4329 > > ................................................................................
00:00:27 v #4330 > > ................................................................................
00:00:27 v #4331 > > │
00:00:27 v #4332 > > ................................................................................
00:00:27 v #4333 > > ................................................................................
00:00:27 v #4334 > > │
00:00:27 v #4335 > > ................................................................................
00:00:27 v #4336 > > ................................................................................
00:00:27 v #4337 > > │
00:00:27 v #4338 > > ................................................................................
00:00:27 v #4339 > > ................................................................................
00:00:27 v #4340 > > │
00:00:27 v #4341 > > ................................................................................
00:00:27 v #4342 > > ................................................................................
00:00:27 v #4343 > > │
00:00:27 v #4344 > > ................................................................................
00:00:27 v #4345 > > ................................................................................
00:00:27 v #4346 > > │
00:00:27 v #4347 > > ................................................................................
00:00:27 v #4348 > > ................................................................................
00:00:27 v #4349 > > │
00:00:27 v #4350 > > .................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<........................
00:00:27 v #4351 > > ................................................................................
00:00:27 v #4352 > > │
00:00:27 v #4353 > > ................;//////////////////////////////////////<<.......................
00:00:27 v #4354 > > ................................................................................
00:00:27 v #4355 > > │
00:00:27 v #4356 > > ................>//////////////////////////////////////<<<......................
00:00:27 v #4357 > > ................................................................................
00:00:27 v #4358 > > │
00:00:27 v #4359 > > ................>//////////////////////////////////////<<<......................
00:00:27 v #4360 > > ................................................................................
00:00:27 v #4361 > > │
00:00:27 v #4362 > > ................>//////////////////////////////////////<<<......................
00:00:27 v #4363 > > ................................................................................
00:00:27 v #4364 > > │
00:00:27 v #4365 > > ................>//////////////////////////////////////<<<.....................;
00:00:27 v #4366 > > ;;;;;;;;;;;;;;;;<<<.............................................................
00:00:27 v #4367 > > │
00:00:27 v #4368 > > .................//////////////////////////////////////<<<.....................
00:00:27 v #4369 > > ////////////////<<<<............................................................
00:00:27 v #4370 > > │
00:00:27 v #4371 > > .................//////////////////////////////////////<<<.....................
00:00:27 v #4372 > > ////////////////<<<<...............;;;;;;;;;<...................................
00:00:27 v #4373 > > │
00:00:27 v #4374 > > .................//////////////////////////////////////<<<.....................
00:00:27 v #4375 > > ////////////////<<<<..............;;;;;;;;;<<...................................
00:00:27 v #4376 > > │
00:00:27 v #4377 > > .................//////////////////////////////////////<<<.....................
00:00:27 v #4378 > > ////////////////<<<<..............>////////<<...................................
00:00:27 v #4379 > > │
00:00:27 v #4380 > > ................./////////////////////////////////////<<<<.....................
00:00:27 v #4381 > > ////////////////<<<<..............>////////<<...................................
00:00:27 v #4382 > > │
00:00:27 v #4383 > > ................./////////////////////////////////////<<<<.....................
00:00:27 v #4384 > > ////////////////<<<<..............>////////<<...................................
00:00:27 v #4385 > > │
00:00:27 v #4386 > > ................./////////////////////////////////////<<<<.....................
00:00:27 v #4387 > > ////////////////<<<<..............////////<<....................................
00:00:27 v #4388 > > │
00:00:27 v #4389 > > ................./////////////////////////////////////<<<<.....................
00:00:27 v #4390 > > ////////////////<<<<............................................................
00:00:27 v #4391 > > │
00:00:27 v #4392 > > ................./////////////////////////////////////<<<<.....................>
00:00:27 v #4393 > > ////////////////<<..............................................................
00:00:27 v #4394 > > │
00:00:27 v #4395 > > ................./////////////////////////////////////<<<.......................
00:00:27 v #4396 > > ................................................................................
00:00:27 v #4397 > > │
00:00:27 v #4398 > > ................./////////////////////////////////////<<<.......................
00:00:27 v #4399 > > ................................................................................
00:00:27 v #4400 > > │
00:00:27 v #4401 > > ................./////////////////////////////////////<<<.......................
00:00:27 v #4402 > > ................................................................................
00:00:27 v #4403 > > │
00:00:27 v #4404 > > ................./////////////////////////////////////<<<.......................
00:00:27 v #4405 > > ................................................................................
00:00:27 v #4406 > > │
00:00:27 v #4407 > > .................>////////////////////////////////////<<........................
00:00:27 v #4408 > > ................................................................................
00:00:27 v #4409 > > │
00:00:27 v #4410 > > ..........................////////////////////////////<<........................
00:00:27 v #4411 > > ................................................................................
00:00:27 v #4412 > > │
00:00:27 v #4413 > > ................................................//////<.........................
00:00:27 v #4414 > > ................................................................................
00:00:27 v #4415 > > │
00:00:27 v #4416 > > ................................................................................
00:00:27 v #4417 > > ................................................................................
00:00:27 v #4418 > > │
00:00:27 v #4419 > > ................................................................................
00:00:27 v #4420 > > ................................................................................
00:00:27 v #4421 > > │
00:00:27 v #4422 > > ................................................................................
00:00:27 v #4423 > > ................................................................................
00:00:27 v #4424 > > │
00:00:27 v #4425 > > ................................................................................
00:00:27 v #4426 > > ................................................................................
00:00:27 v #4427 > > │
00:00:27 v #4428 > > ................................................................................
00:00:27 v #4429 > > ................................................................................
00:00:27 v #4430 > > │
00:00:27 v #4431 > > ................................................................................
00:00:27 v #4432 > > ................................................................................
00:00:27 v #4433 > > │
00:00:27 v #4434 > > ................................................................................
00:00:27 v #4435 > > ................................................................................
00:00:27 v #4436 > > │
00:00:27 v #4437 > > ................................................................................
00:00:27 v #4438 > > ................................................................................
00:00:27 v #4439 > > │
00:00:27 v #4440 > > ................................................................................
00:00:27 v #4441 > > ................................................................................
00:00:27 v #4442 > > │
00:00:27 v #4443 > > ................................................................................
00:00:27 v #4444 > > ................................................................................
00:00:27 v #4445 > > │
00:00:27 v #4446 > > │
00:00:27 v #4447 > > ................................................................................
00:00:27 v #4448 > > ................................................................................
00:00:27 v #4449 > > │
00:00:27 v #4450 > > ................................................................................
00:00:27 v #4451 > > ................................................................................
00:00:27 v #4452 > > │
00:00:27 v #4453 > > ................................................................................
00:00:27 v #4454 > > ................................................................................
00:00:27 v #4455 > > │
00:00:27 v #4456 > > ................................................................................
00:00:27 v #4457 > > ................................................................................
00:00:27 v #4458 > > │
00:00:27 v #4459 > > ................................................................................
00:00:27 v #4460 > > ................................................................................
00:00:27 v #4461 > > │
00:00:27 v #4462 > > ................................................................................
00:00:27 v #4463 > > ................................................................................
00:00:27 v #4464 > > │
00:00:27 v #4465 > > ................................................................................
00:00:27 v #4466 > > ................................................................................
00:00:27 v #4467 > > │
00:00:27 v #4468 > > ................................................................................
00:00:27 v #4469 > > ................................................................................
00:00:27 v #4470 > > │
00:00:27 v #4471 > > ................................................................................
00:00:27 v #4472 > > ................................................................................
00:00:27 v #4473 > > │
00:00:27 v #4474 > > ................................................................................
00:00:27 v #4475 > > ................................................................................
00:00:27 v #4476 > > │
00:00:27 v #4477 > > ................................................................................
00:00:27 v #4478 > > ................................................................................
00:00:27 v #4479 > > │
00:00:27 v #4480 > > ..............................................;;;;;;;;;<........................
00:00:27 v #4481 > > ................................................................................
00:00:27 v #4482 > > │
00:00:27 v #4483 > > .........................;;;;;;;;;;;;;;;;;;;;;/////////<........................
00:00:27 v #4484 > > ................................................................................
00:00:27 v #4485 > > │
00:00:27 v #4486 > > ................;;;;;;;;;//////////////////////////////<........................
00:00:27 v #4487 > > ................................................................................
00:00:27 v #4488 > > │
00:00:27 v #4489 > > ................///////////////////////////////////////<........................
00:00:27 v #4490 > > ................................................................................
00:00:27 v #4491 > > │
00:00:27 v #4492 > > ................>//////////////////////////////////////<<.......................
00:00:27 v #4493 > > ................................................................................
00:00:27 v #4494 > > │
00:00:27 v #4495 > > ................>//////////////////////////////////////<<.......................
00:00:27 v #4496 > > ................................................................................
00:00:27 v #4497 > > │
00:00:27 v #4498 > > ................>//////////////////////////////////////<<.......................
00:00:27 v #4499 > > ..;;;;;;;;;;;;;;<<<.............................................................
00:00:27 v #4500 > > │
00:00:27 v #4501 > > ................>//////////////////////////////////////<<......................;
00:00:27 v #4502 > > ;;//////////////<<<.............................................................
00:00:27 v #4503 > > │
00:00:27 v #4504 > > .................//////////////////////////////////////<<......................
00:00:27 v #4505 > > ////////////////<<<....................;;;;<<...................................
00:00:27 v #4506 > > │
00:00:27 v #4507 > > .................//////////////////////////////////////<<......................
00:00:27 v #4508 > > ////////////////<<<...............;;;;;////<<...................................
00:00:27 v #4509 > > │
00:00:27 v #4510 > > .................//////////////////////////////////////<<......................>
00:00:27 v #4511 > > ////////////////<<<...............>////////<<...................................
00:00:27 v #4512 > > │
00:00:27 v #4513 > > .................>//////////////////////////////////////<......................>
00:00:27 v #4514 > > ////////////////<<<................////////<<...................................
00:00:27 v #4515 > > │
00:00:27 v #4516 > > .................>//////////////////////////////////////<......................>
00:00:27 v #4517 > > /////////////////<<<...............////////<<...................................
00:00:27 v #4518 > > │
00:00:27 v #4519 > > .................>//////////////////////////////////////<......................>
00:00:27 v #4520 > > /////////////////<<<.............../////////....................................
00:00:27 v #4521 > > │
00:00:27 v #4522 > > .................>//////////////////////////////////////<.......................
00:00:27 v #4523 > > /////////////////<<<............................................................
00:00:27 v #4524 > > │
00:00:27 v #4525 > > ..................//////////////////////////////////////<.......................
00:00:27 v #4526 > > /////////////////<<.............................................................
00:00:27 v #4527 > > │
00:00:27 v #4528 > > ..................//////////////////////////////////////<<......................
00:00:27 v #4529 > > ................................................................................
00:00:27 v #4530 > > │
00:00:27 v #4531 > > ..................//////////////////////////////////////<<......................
00:00:27 v #4532 > > ................................................................................
00:00:27 v #4533 > > │
00:00:27 v #4534 > > ..................//////////////////////////////////////<<......................
00:00:27 v #4535 > > ................................................................................
00:00:27 v #4536 > > │
00:00:27 v #4537 > > ..................>/////////////////////////////////////<<......................
00:00:27 v #4538 > > ................................................................................
00:00:27 v #4539 > > │
00:00:27 v #4540 > > ..................>/////////////////////////////////////<.......................
00:00:27 v #4541 > > ................................................................................
00:00:27 v #4542 > > │
00:00:27 v #4543 > > ..................//////////////////////////////////////<.......................
00:00:27 v #4544 > > ................................................................................
00:00:27 v #4545 > > │
00:00:27 v #4546 > > ................................................................................
00:00:27 v #4547 > > ................................................................................
00:00:27 v #4548 > > │
00:00:27 v #4549 > > ................................................................................
00:00:27 v #4550 > > ................................................................................
00:00:27 v #4551 > > │
00:00:27 v #4552 > > ................................................................................
00:00:27 v #4553 > > ................................................................................
00:00:27 v #4554 > > │
00:00:27 v #4555 > > ................................................................................
00:00:27 v #4556 > > ................................................................................
00:00:27 v #4557 > > │
00:00:27 v #4558 > > ................................................................................
00:00:27 v #4559 > > ................................................................................
00:00:27 v #4560 > > │
00:00:27 v #4561 > > ................................................................................
00:00:27 v #4562 > > ................................................................................
00:00:27 v #4563 > > │
00:00:27 v #4564 > > ................................................................................
00:00:27 v #4565 > > ................................................................................
00:00:27 v #4566 > > │
00:00:27 v #4567 > > ................................................................................
00:00:27 v #4568 > > ................................................................................
00:00:27 v #4569 > > │
00:00:27 v #4570 > > ................................................................................
00:00:27 v #4571 > > ................................................................................
00:00:27 v #4572 > > │
00:00:27 v #4573 > > ................................................................................
00:00:27 v #4574 > > ................................................................................
00:00:27 v #4575 > > │
00:00:27 v #4576 > > ................................................................................
00:00:27 v #4577 > > ................................................................................
00:00:27 v #4578 > > │
00:00:27 v #4579 > > │
00:00:27 v #4580 > > ................................................................................
00:00:27 v #4581 > > ................................................................................
00:00:27 v #4582 > > │
00:00:27 v #4583 > > ................................................................................
00:00:27 v #4584 > > ................................................................................
00:00:27 v #4585 > > │
00:00:27 v #4586 > > ................................................................................
00:00:27 v #4587 > > ................................................................................
00:00:27 v #4588 > > │
00:00:27 v #4589 > > ................................................................................
00:00:27 v #4590 > > ................................................................................
00:00:27 v #4591 > > │
00:00:27 v #4592 > > ................................................................................
00:00:27 v #4593 > > ................................................................................
00:00:27 v #4594 > > │
00:00:27 v #4595 > > ................................................................................
00:00:27 v #4596 > > ................................................................................
00:00:27 v #4597 > > │
00:00:27 v #4598 > > ................................................................................
00:00:27 v #4599 > > ................................................................................
00:00:27 v #4600 > > │
00:00:27 v #4601 > > ................................................................................
00:00:27 v #4602 > > ................................................................................
00:00:27 v #4603 > > │
00:00:27 v #4604 > > ................................................................................
00:00:27 v #4605 > > ................................................................................
00:00:27 v #4606 > > │
00:00:27 v #4607 > > ................................................................................
00:00:27 v #4608 > > ................................................................................
00:00:27 v #4609 > > │
00:00:27 v #4610 > > ......................................................<.........................
00:00:27 v #4611 > > ................................................................................
00:00:27 v #4612 > > │
00:00:27 v #4613 > > .........................................;;;;;;;;;;;;;<.........................
00:00:27 v #4614 > > ................................................................................
00:00:27 v #4615 > > │
00:00:27 v #4616 > > ...........................;;;;;;;;;;;;;;//////////////<........................
00:00:27 v #4617 > > ................................................................................
00:00:27 v #4618 > > │
00:00:27 v #4619 > > ...............;;;;;;;;;;;;;///////////////////////////<........................
00:00:27 v #4620 > > ................................................................................
00:00:27 v #4621 > > │
00:00:27 v #4622 > > ...............>///////////////////////////////////////<........................
00:00:27 v #4623 > > ................................................................................
00:00:27 v #4624 > > │
00:00:27 v #4625 > > ................///////////////////////////////////////<........................
00:00:27 v #4626 > > ................................................................................
00:00:27 v #4627 > > │
00:00:27 v #4628 > > ................///////////////////////////////////////<<.......................
00:00:27 v #4629 > > ................................................................................
00:00:27 v #4630 > > │
00:00:27 v #4631 > > ................>///////////////////////////////////////<.......................
00:00:27 v #4632 > > ....;;;;;;;;;;;;<<..............................................................
00:00:27 v #4633 > > │
00:00:27 v #4634 > > ................>///////////////////////////////////////<......................;
00:00:27 v #4635 > > ;;;;////////////<<..............................................................
00:00:27 v #4636 > > │
00:00:27 v #4637 > > .................///////////////////////////////////////<......................
00:00:27 v #4638 > > ////////////////<<<....................;;;<<....................................
00:00:27 v #4639 > > │
00:00:27 v #4640 > > .................///////////////////////////////////////<......................
00:00:27 v #4641 > > /////////////////<<...............;;;;;////<<...................................
00:00:27 v #4642 > > │
00:00:27 v #4643 > > .................>//////////////////////////////////////<<.....................>
00:00:27 v #4644 > > /////////////////<<...............>////////<<...................................
00:00:27 v #4645 > > │
00:00:27 v #4646 > > .................>///////////////////////////////////////<.....................>
00:00:27 v #4647 > > /////////////////<<................////////<<...................................
00:00:27 v #4648 > > │
00:00:27 v #4649 > > ..................///////////////////////////////////////<......................
00:00:27 v #4650 > > /////////////////<<................////////<<...................................
00:00:27 v #4651 > > │
00:00:27 v #4652 > > ..................///////////////////////////////////////<......................
00:00:27 v #4653 > > /////////////////<<<...............>////////....................................
00:00:27 v #4654 > > │
00:00:27 v #4655 > > ..................>//////////////////////////////////////<......................
00:00:27 v #4656 > > >/////////////////<<............................................................
00:00:27 v #4657 > > │
00:00:27 v #4658 > > ..................>///////////////////////////////////////<.....................
00:00:27 v #4659 > > >/////////////////<.............................................................
00:00:27 v #4660 > > │
00:00:27 v #4661 > > ...................///////////////////////////////////////<.....................
00:00:27 v #4662 > > ................................................................................
00:00:27 v #4663 > > │
00:00:27 v #4664 > > ...................///////////////////////////////////////<.....................
00:00:27 v #4665 > > ................................................................................
00:00:27 v #4666 > > │
00:00:27 v #4667 > > ...................>//////////////////////////////////////<.....................
00:00:27 v #4668 > > ................................................................................
00:00:27 v #4669 > > │
00:00:27 v #4670 > > ...................>//////////////////////////////////////<.....................
00:00:27 v #4671 > > ................................................................................
00:00:27 v #4672 > > │
00:00:27 v #4673 > > ...................>///////////////////////////////////////<....................
00:00:27 v #4674 > > ................................................................................
00:00:27 v #4675 > > │
00:00:27 v #4676 > > ....................////////////////////////////................................
00:00:27 v #4677 > > ................................................................................
00:00:27 v #4678 > > │
00:00:27 v #4679 > > ................................................................................
00:00:27 v #4680 > > ................................................................................
00:00:27 v #4681 > > │
00:00:27 v #4682 > > ................................................................................
00:00:27 v #4683 > > ................................................................................
00:00:27 v #4684 > > │
00:00:27 v #4685 > > ................................................................................
00:00:27 v #4686 > > ................................................................................
00:00:27 v #4687 > > │
00:00:27 v #4688 > > ................................................................................
00:00:27 v #4689 > > ................................................................................
00:00:27 v #4690 > > │
00:00:27 v #4691 > > ................................................................................
00:00:27 v #4692 > > ................................................................................
00:00:27 v #4693 > > │
00:00:27 v #4694 > > ................................................................................
00:00:27 v #4695 > > ................................................................................
00:00:27 v #4696 > > │
00:00:27 v #4697 > > ................................................................................
00:00:27 v #4698 > > ................................................................................
00:00:27 v #4699 > > │
00:00:27 v #4700 > > ................................................................................
00:00:27 v #4701 > > ................................................................................
00:00:27 v #4702 > > │
00:00:27 v #4703 > > ................................................................................
00:00:27 v #4704 > > ................................................................................
00:00:27 v #4705 > > │
00:00:27 v #4706 > > ................................................................................
00:00:27 v #4707 > > ................................................................................
00:00:27 v #4708 > > │
00:00:27 v #4709 > > ................................................................................
00:00:27 v #4710 > > ................................................................................
00:00:27 v #4711 > > │
00:00:27 v #4712 > > │
00:00:27 v #4713 > > ................................................................................
00:00:27 v #4714 > > ................................................................................
00:00:27 v #4715 > > │
00:00:27 v #4716 > > ................................................................................
00:00:27 v #4717 > > ................................................................................
00:00:27 v #4718 > > │
00:00:27 v #4719 > > ................................................................................
00:00:27 v #4720 > > ................................................................................
00:00:27 v #4721 > > │
00:00:27 v #4722 > > ................................................................................
00:00:27 v #4723 > > ................................................................................
00:00:27 v #4724 > > │
00:00:27 v #4725 > > ................................................................................
00:00:27 v #4726 > > ................................................................................
00:00:27 v #4727 > > │
00:00:27 v #4728 > > ................................................................................
00:00:27 v #4729 > > ................................................................................
00:00:27 v #4730 > > │
00:00:27 v #4731 > > ................................................................................
00:00:27 v #4732 > > ................................................................................
00:00:27 v #4733 > > │
00:00:27 v #4734 > > ................................................................................
00:00:27 v #4735 > > ................................................................................
00:00:27 v #4736 > > │
00:00:27 v #4737 > > ................................................................................
00:00:27 v #4738 > > ................................................................................
00:00:27 v #4739 > > │
00:00:27 v #4740 > > ................................................................................
00:00:27 v #4741 > > ................................................................................
00:00:27 v #4742 > > │
00:00:27 v #4743 > > .................................................;;;;;<.........................
00:00:27 v #4744 > > ................................................................................
00:00:27 v #4745 > > │
00:00:27 v #4746 > > .......................................;;;;;;;;;;/////<.........................
00:00:27 v #4747 > > ................................................................................
00:00:27 v #4748 > > │
00:00:27 v #4749 > > .............................;;;;;;;;;;///////////////<<........................
00:00:27 v #4750 > > ................................................................................
00:00:27 v #4751 > > │
00:00:27 v #4752 > > ...................;;;;;;;;;;//////////////////////////<........................
00:00:27 v #4753 > > ................................................................................
00:00:27 v #4754 > > │
00:00:27 v #4755 > > ...............;;;;////////////////////////////////////<........................
00:00:27 v #4756 > > ................................................................................
00:00:27 v #4757 > > │
00:00:27 v #4758 > > ...............>///////////////////////////////////////<<.......................
00:00:27 v #4759 > > ................................................................................
00:00:27 v #4760 > > │
00:00:27 v #4761 > > ...............>////////////////////////////////////////<.......................
00:00:27 v #4762 > > ................<...............................................................
00:00:27 v #4763 > > │
00:00:27 v #4764 > > ................////////////////////////////////////////<.......................
00:00:27 v #4765 > > .....;;;;;;;;;;;<...............................................................
00:00:27 v #4766 > > │
00:00:27 v #4767 > > ................>///////////////////////////////////////<<....................;;
00:00:27 v #4768 > > ;;;;;///////////<<..............................................................
00:00:27 v #4769 > > │
00:00:27 v #4770 > > .................////////////////////////////////////////<.....................
00:00:27 v #4771 > > ////////////////<<.....................;;;<<....................................
00:00:27 v #4772 > > │
00:00:27 v #4773 > > .................>///////////////////////////////////////<.....................
00:00:27 v #4774 > > /////////////////<................;;;;;////<....................................
00:00:27 v #4775 > > │
00:00:27 v #4776 > > .................>///////////////////////////////////////<<....................>
00:00:27 v #4777 > > /////////////////<<...............>////////<<...................................
00:00:27 v #4778 > > │
00:00:27 v #4779 > > ..................////////////////////////////////////////<.....................
00:00:27 v #4780 > > /////////////////<<................////////<<...................................
00:00:27 v #4781 > > │
00:00:27 v #4782 > > ..................>///////////////////////////////////////<.....................
00:00:27 v #4783 > > //////////////////<................>////////<...................................
00:00:27 v #4784 > > │
00:00:27 v #4785 > > ..................>///////////////////////////////////////<<....................
00:00:27 v #4786 > > >/////////////////<<................//////......................................
00:00:27 v #4787 > > │
00:00:27 v #4788 > > ...................////////////////////////////////////////<....................
00:00:27 v #4789 > > .//////////////////<............................................................
00:00:27 v #4790 > > │
00:00:27 v #4791 > > ...................>///////////////////////////////////////<....................
00:00:27 v #4792 > > .>///////////////...............................................................
00:00:27 v #4793 > > │
00:00:27 v #4794 > > ...................>///////////////////////////////////////<<...................
00:00:27 v #4795 > > .///............................................................................
00:00:27 v #4796 > > │
00:00:27 v #4797 > > ....................////////////////////////////////////////<...................
00:00:27 v #4798 > > ................................................................................
00:00:27 v #4799 > > │
00:00:27 v #4800 > > ....................>///////////////////////////////////////<...................
00:00:27 v #4801 > > ................................................................................
00:00:27 v #4802 > > │
00:00:27 v #4803 > > ....................>///////////////////////////////////////<<..................
00:00:27 v #4804 > > ................................................................................
00:00:27 v #4805 > > │
00:00:27 v #4806 > > ...................../////////////////////////////////////......................
00:00:27 v #4807 > > ................................................................................
00:00:27 v #4808 > > │
00:00:27 v #4809 > > .....................>/////////////////////.....................................
00:00:27 v #4810 > > ................................................................................
00:00:27 v #4811 > > │
00:00:27 v #4812 > > ......................///////...................................................
00:00:27 v #4813 > > ................................................................................
00:00:27 v #4814 > > │
00:00:27 v #4815 > > ................................................................................
00:00:27 v #4816 > > ................................................................................
00:00:27 v #4817 > > │
00:00:27 v #4818 > > ................................................................................
00:00:27 v #4819 > > ................................................................................
00:00:27 v #4820 > > │
00:00:27 v #4821 > > ................................................................................
00:00:27 v #4822 > > ................................................................................
00:00:27 v #4823 > > │
00:00:27 v #4824 > > ................................................................................
00:00:27 v #4825 > > ................................................................................
00:00:27 v #4826 > > │
00:00:27 v #4827 > > ................................................................................
00:00:27 v #4828 > > ................................................................................
00:00:27 v #4829 > > │
00:00:27 v #4830 > > ................................................................................
00:00:27 v #4831 > > ................................................................................
00:00:27 v #4832 > > │
00:00:27 v #4833 > > ................................................................................
00:00:27 v #4834 > > ................................................................................
00:00:27 v #4835 > > │
00:00:27 v #4836 > > ................................................................................
00:00:27 v #4837 > > ................................................................................
00:00:27 v #4838 > > │
00:00:27 v #4839 > > ................................................................................
00:00:27 v #4840 > > ................................................................................
00:00:27 v #4841 > > │
00:00:27 v #4842 > > ................................................................................
00:00:27 v #4843 > > ................................................................................
00:00:27 v #4844 > > │
00:00:27 v #4845 > > │
00:00:27 v #4846 > > ................................................................................
00:00:27 v #4847 > > ................................................................................
00:00:27 v #4848 > > │
00:00:27 v #4849 > > ................................................................................
00:00:27 v #4850 > > ................................................................................
00:00:27 v #4851 > > │
00:00:27 v #4852 > > ................................................................................
00:00:27 v #4853 > > ................................................................................
00:00:27 v #4854 > > │
00:00:27 v #4855 > > ................................................................................
00:00:27 v #4856 > > ................................................................................
00:00:27 v #4857 > > │
00:00:27 v #4858 > > ................................................................................
00:00:27 v #4859 > > ................................................................................
00:00:27 v #4860 > > │
00:00:27 v #4861 > > ................................................................................
00:00:27 v #4862 > > ................................................................................
00:00:27 v #4863 > > │
00:00:27 v #4864 > > ................................................................................
00:00:27 v #4865 > > ................................................................................
00:00:27 v #4866 > > │
00:00:27 v #4867 > > ................................................................................
00:00:27 v #4868 > > ................................................................................
00:00:27 v #4869 > > │
00:00:27 v #4870 > > ................................................................................
00:00:27 v #4871 > > ................................................................................
00:00:27 v #4872 > > │
00:00:27 v #4873 > > .....................................................<..........................
00:00:27 v #4874 > > ................................................................................
00:00:27 v #4875 > > │
00:00:27 v #4876 > > ..............................................;;;;;;;<<.........................
00:00:27 v #4877 > > ................................................................................
00:00:27 v #4878 > > │
00:00:27 v #4879 > > .....................................;;;;;;;;;////////<.........................
00:00:27 v #4880 > > ................................................................................
00:00:27 v #4881 > > │
00:00:27 v #4882 > > .............................;;;;;;;;;////////////////<<........................
00:00:27 v #4883 > > ................................................................................
00:00:27 v #4884 > > │
00:00:27 v #4885 > > ......................;;;;;;;//////////////////////////<........................
00:00:27 v #4886 > > ................................................................................
00:00:27 v #4887 > > │
00:00:27 v #4888 > > ...............;;;;;;;/////////////////////////////////<........................
00:00:27 v #4889 > > ................................................................................
00:00:27 v #4890 > > │
00:00:27 v #4891 > > .............../////////////////////////////////////////<.......................
00:00:27 v #4892 > > ................................................................................
00:00:27 v #4893 > > │
00:00:27 v #4894 > > ...............>////////////////////////////////////////<.......................
00:00:27 v #4895 > > .............;;;<...............................................................
00:00:27 v #4896 > > │
00:00:27 v #4897 > > ................/////////////////////////////////////////<......................
00:00:27 v #4898 > > .....;;;;;;;;///<...............................................................
00:00:27 v #4899 > > │
00:00:27 v #4900 > > ................>////////////////////////////////////////<....................;;
00:00:27 v #4901 > > ;;;;;///////////<<..............................................................
00:00:27 v #4902 > > │
00:00:27 v #4903 > > ................./////////////////////////////////////////<...................>
00:00:27 v #4904 > > /////////////////<.....................;;;<<....................................
00:00:27 v #4905 > > │
00:00:27 v #4906 > > .................>////////////////////////////////////////<....................
00:00:27 v #4907 > > /////////////////<<...............;;;;;////<....................................
00:00:27 v #4908 > > │
00:00:27 v #4909 > > ................../////////////////////////////////////////<...................>
00:00:27 v #4910 > > //////////////////<...............>////////<<...................................
00:00:27 v #4911 > > │
00:00:27 v #4912 > > ..................>////////////////////////////////////////<....................
00:00:27 v #4913 > > //////////////////<................/////////<...................................
00:00:27 v #4914 > > │
00:00:27 v #4915 > > ..................>////////////////////////////////////////<<...................
00:00:27 v #4916 > > >//////////////////<...............>////////<...................................
00:00:27 v #4917 > > │
00:00:27 v #4918 > > ...................>////////////////////////////////////////<...................
00:00:27 v #4919 > > .//////////////////<................/////=......................................
00:00:27 v #4920 > > │
00:00:27 v #4921 > > ...................>////////////////////////////////////////<<..................
00:00:27 v #4922 > > .>/////////////////<<...........................................................
00:00:27 v #4923 > > │
00:00:27 v #4924 > > ....................>////////////////////////////////////////<..................
00:00:27 v #4925 > > ../////////////.................................................................
00:00:27 v #4926 > > │
00:00:27 v #4927 > > ....................>////////////////////////////////////////<<.................
00:00:27 v #4928 > > ..>///..........................................................................
00:00:27 v #4929 > > │
00:00:27 v #4930 > > ...................../////////////////////////////////////////<.................
00:00:27 v #4931 > > ................................................................................
00:00:27 v #4932 > > │
00:00:27 v #4933 > > .....................>////////////////////////////////////////<.................
00:00:27 v #4934 > > ................................................................................
00:00:27 v #4935 > > │
00:00:27 v #4936 > > ......................///////////////////////////////////////...................
00:00:27 v #4937 > > ................................................................................
00:00:27 v #4938 > > │
00:00:27 v #4939 > > ......................>/////////////////////////////............................
00:00:27 v #4940 > > ................................................................................
00:00:27 v #4941 > > │
00:00:27 v #4942 > > .......................////////////////////.....................................
00:00:27 v #4943 > > ................................................................................
00:00:27 v #4944 > > │
00:00:27 v #4945 > > .......................>//////////..............................................
00:00:27 v #4946 > > ................................................................................
00:00:27 v #4947 > > │
00:00:27 v #4948 > > ................................................................................
00:00:27 v #4949 > > ................................................................................
00:00:27 v #4950 > > │
00:00:27 v #4951 > > ................................................................................
00:00:27 v #4952 > > ................................................................................
00:00:27 v #4953 > > │
00:00:27 v #4954 > > ................................................................................
00:00:27 v #4955 > > ................................................................................
00:00:27 v #4956 > > │
00:00:27 v #4957 > > ................................................................................
00:00:27 v #4958 > > ................................................................................
00:00:27 v #4959 > > │
00:00:27 v #4960 > > ................................................................................
00:00:27 v #4961 > > ................................................................................
00:00:27 v #4962 > > │
00:00:27 v #4963 > > ................................................................................
00:00:27 v #4964 > > ................................................................................
00:00:27 v #4965 > > │
00:00:27 v #4966 > > ................................................................................
00:00:27 v #4967 > > ................................................................................
00:00:27 v #4968 > > │
00:00:27 v #4969 > > ................................................................................
00:00:27 v #4970 > > ................................................................................
00:00:27 v #4971 > > │
00:00:27 v #4972 > > ................................................................................
00:00:27 v #4973 > > ................................................................................
00:00:27 v #4974 > > │
00:00:27 v #4975 > > ................................................................................
00:00:27 v #4976 > > ................................................................................
00:00:27 v #4977 > > │
00:00:27 v #4978 > > │
00:00:27 v #4979 > > ................................................................................
00:00:27 v #4980 > > ................................................................................
00:00:27 v #4981 > > │
00:00:27 v #4982 > > ................................................................................
00:00:27 v #4983 > > ................................................................................
00:00:27 v #4984 > > │
00:00:27 v #4985 > > ................................................................................
00:00:27 v #4986 > > ................................................................................
00:00:27 v #4987 > > │
00:00:27 v #4988 > > ................................................................................
00:00:27 v #4989 > > ................................................................................
00:00:27 v #4990 > > │
00:00:27 v #4991 > > ................................................................................
00:00:27 v #4992 > > ................................................................................
00:00:27 v #4993 > > │
00:00:27 v #4994 > > ................................................................................
00:00:27 v #4995 > > ................................................................................
00:00:27 v #4996 > > │
00:00:27 v #4997 > > ................................................................................
00:00:27 v #4998 > > ................................................................................
00:00:27 v #4999 > > │
00:00:27 v #5000 > > ................................................................................
00:00:27 v #5001 > > ................................................................................
00:00:27 v #5002 > > │
00:00:27 v #5003 > > ................................................................................
00:00:27 v #5004 > > ................................................................................
00:00:27 v #5005 > > │
00:00:27 v #5006 > > ..................................................;;;<..........................
00:00:27 v #5007 > > ................................................................................
00:00:27 v #5008 > > │
00:00:27 v #5009 > > ............................................;;;;;;///<..........................
00:00:27 v #5010 > > ................................................................................
00:00:27 v #5011 > > │
00:00:27 v #5012 > > .....................................;;;;;;;/////////<<.........................
00:00:27 v #5013 > > ................................................................................
00:00:27 v #5014 > > │
00:00:27 v #5015 > > ..............................;;;;;;;/////////////////<<........................
00:00:27 v #5016 > > ................................................................................
00:00:27 v #5017 > > │
00:00:27 v #5018 > > .......................;;;;;;;/////////////////////////<........................
00:00:27 v #5019 > > ................................................................................
00:00:27 v #5020 > > │
00:00:27 v #5021 > > .................;;;;;;;///////////////////////////////<<.......................
00:00:27 v #5022 > > ................................................................................
00:00:27 v #5023 > > │
00:00:27 v #5024 > > ..............;;;///////////////////////////////////////<.......................
00:00:27 v #5025 > > ................................................................................
00:00:27 v #5026 > > │
00:00:27 v #5027 > > ...............//////////////////////////////////////////<......................
00:00:27 v #5028 > > ............;;;<................................................................
00:00:27 v #5029 > > │
00:00:27 v #5030 > > ...............>/////////////////////////////////////////<<.....................
00:00:27 v #5031 > > .....;;;;;;;////<...............................................................
00:00:27 v #5032 > > │
00:00:27 v #5033 > > ................>/////////////////////////////////////////<....................;
00:00:27 v #5034 > > ;;;;;///////////<<..............................................................
00:00:27 v #5035 > > │
00:00:27 v #5036 > > ................./////////////////////////////////////////<<..................;
00:00:27 v #5037 > > /////////////////<.....................;;;<<....................................
00:00:27 v #5038 > > │
00:00:27 v #5039 > > .................>/////////////////////////////////////////<...................
00:00:27 v #5040 > > /////////////////<<...............;;;;;////<....................................
00:00:27 v #5041 > > │
00:00:27 v #5042 > > ..................//////////////////////////////////////////<...................
00:00:27 v #5043 > > //////////////////<<..............>////////<<...................................
00:00:27 v #5044 > > │
00:00:27 v #5045 > > ..................>/////////////////////////////////////////<<..................
00:00:27 v #5046 > > >//////////////////<...............>////////<...................................
00:00:27 v #5047 > > │
00:00:27 v #5048 > > ...................>/////////////////////////////////////////<..................
00:00:27 v #5049 > > .//////////////////<<...............////////<<..................................
00:00:27 v #5050 > > │
00:00:27 v #5051 > > ..................../////////////////////////////////////////<<.................
00:00:27 v #5052 > > .>//////////////////<...............>////.......................................
00:00:27 v #5053 > > │
00:00:27 v #5054 > > ....................>/////////////////////////////////////////<.................
00:00:27 v #5055 > > ..///////////////////...........................................................
00:00:27 v #5056 > > │
00:00:27 v #5057 > > ...................../////////////////////////////////////////<<................
00:00:27 v #5058 > > ..>////////////.................................................................
00:00:27 v #5059 > > │
00:00:27 v #5060 > > .....................>/////////////////////////////////////////<................
00:00:27 v #5061 > > ...>////........................................................................
00:00:27 v #5062 > > │
00:00:27 v #5063 > > ......................>/////////////////////////////////////////<...............
00:00:27 v #5064 > > ................................................................................
00:00:27 v #5065 > > │
00:00:27 v #5066 > > ......................./////////////////////////////////////////................
00:00:27 v #5067 > > ................................................................................
00:00:27 v #5068 > > │
00:00:27 v #5069 > > .......................>/////////////////////////////////.......................
00:00:27 v #5070 > > ................................................................................
00:00:27 v #5071 > > │
00:00:27 v #5072 > > ........................//////////////////////////..............................
00:00:27 v #5073 > > ................................................................................
00:00:27 v #5074 > > │
00:00:27 v #5075 > > ........................>//////////////////.....................................
00:00:27 v #5076 > > ................................................................................
00:00:27 v #5077 > > │
00:00:27 v #5078 > > .........................>//////////............................................
00:00:27 v #5079 > > ................................................................................
00:00:27 v #5080 > > │
00:00:27 v #5081 > > ..........................////..................................................
00:00:27 v #5082 > > ................................................................................
00:00:27 v #5083 > > │
00:00:27 v #5084 > > ................................................................................
00:00:27 v #5085 > > ................................................................................
00:00:27 v #5086 > > │
00:00:27 v #5087 > > ................................................................................
00:00:27 v #5088 > > ................................................................................
00:00:27 v #5089 > > │
00:00:27 v #5090 > > ................................................................................
00:00:27 v #5091 > > ................................................................................
00:00:27 v #5092 > > │
00:00:27 v #5093 > > ................................................................................
00:00:27 v #5094 > > ................................................................................
00:00:27 v #5095 > > │
00:00:27 v #5096 > > ................................................................................
00:00:27 v #5097 > > ................................................................................
00:00:27 v #5098 > > │
00:00:27 v #5099 > > ................................................................................
00:00:27 v #5100 > > ................................................................................
00:00:27 v #5101 > > │
00:00:27 v #5102 > > ................................................................................
00:00:27 v #5103 > > ................................................................................
00:00:27 v #5104 > > │
00:00:27 v #5105 > > ................................................................................
00:00:27 v #5106 > > ................................................................................
00:00:27 v #5107 > > │
00:00:27 v #5108 > > ................................................................................
00:00:27 v #5109 > > ................................................................................
00:00:27 v #5110 > > │
00:00:27 v #5111 > > │
00:00:27 v #5112 > > ................................................................................
00:00:27 v #5113 > > ................................................................................
00:00:27 v #5114 > > │
00:00:27 v #5115 > > ................................................................................
00:00:27 v #5116 > > ................................................................................
00:00:27 v #5117 > > │
00:00:27 v #5118 > > ................................................................................
00:00:27 v #5119 > > ................................................................................
00:00:27 v #5120 > > │
00:00:27 v #5121 > > ................................................................................
00:00:27 v #5122 > > ................................................................................
00:00:27 v #5123 > > │
00:00:27 v #5124 > > ................................................................................
00:00:27 v #5125 > > ................................................................................
00:00:27 v #5126 > > │
00:00:27 v #5127 > > ................................................................................
00:00:27 v #5128 > > ................................................................................
00:00:27 v #5129 > > │
00:00:27 v #5130 > > ................................................................................
00:00:27 v #5131 > > ................................................................................
00:00:27 v #5132 > > │
00:00:27 v #5133 > > ................................................................................
00:00:27 v #5134 > > ................................................................................
00:00:27 v #5135 > > │
00:00:27 v #5136 > > ................................................................................
00:00:27 v #5137 > > ................................................................................
00:00:27 v #5138 > > │
00:00:27 v #5139 > > ................................................;;;/;...........................
00:00:27 v #5140 > > ................................................................................
00:00:27 v #5141 > > │
00:00:27 v #5142 > > ..........................................;;;;/;//////..........................
00:00:27 v #5143 > > ................................................................................
00:00:27 v #5144 > > │
00:00:27 v #5145 > > ....................................;;;;///////////////.........................
00:00:27 v #5146 > > ................................................................................
00:00:27 v #5147 > > │
00:00:27 v #5148 > > ...............................;;/;;///////////////////<........................
00:00:27 v #5149 > > ................................................................................
00:00:27 v #5150 > > │
00:00:27 v #5151 > > .........................;;;;/;/////////////////////////........................
00:00:27 v #5152 > > ................................................................................
00:00:27 v #5153 > > │
00:00:27 v #5154 > > ...................;;;;//;///////////////////////////////.......................
00:00:27 v #5155 > > ................................................................................
00:00:27 v #5156 > > │
00:00:27 v #5157 > > ..............;;/;;//////////////////////////////////////<......................
00:00:27 v #5158 > > ................................................................................
00:00:27 v #5159 > > │
00:00:27 v #5160 > > ..............>>//////////////////////////////////////////......................
00:00:27 v #5161 > > ...........;;;//................................................................
00:00:27 v #5162 > > │
00:00:27 v #5163 > > ...............>>//////////////////////////////////////////.....................
00:00:27 v #5164 > > ......;;/////////...............................................................
00:00:27 v #5165 > > │
00:00:27 v #5166 > > ................>///////////////////////////////////////////....................
00:00:27 v #5167 > > ;;;///////////////..............................................................
00:00:27 v #5168 > > │
00:00:27 v #5169 > > .................>//////////////////////////////////////////<.................;>
00:00:27 v #5170 > > //////////////////<...................;;///<....................................
00:00:27 v #5171 > > │
00:00:27 v #5172 > > .................>>//////////////////////////////////////////..................>
00:00:27 v #5173 > > ///////////////////...............;;;;//////....................................
00:00:27 v #5174 > > │
00:00:27 v #5175 > > ..................>>//////////////////////////////////////////..................
00:00:27 v #5176 > > >///////////////////...............>/////////...................................
00:00:27 v #5177 > > │
00:00:27 v #5178 > > ...................>//////////////////////////////////////////<.................
00:00:27 v #5179 > > >>///////////////////..............>>////////<..................................
00:00:27 v #5180 > > │
00:00:27 v #5181 > > ....................>//////////////////////////////////////////.................
00:00:27 v #5182 > > .>>//////////////////...............>>////////..................................
00:00:27 v #5183 > > │
00:00:27 v #5184 > > ....................>>//////////////////////////////////////////................
00:00:27 v #5185 > > ..>///////////////////...............>///.......................................
00:00:27 v #5186 > > │
00:00:27 v #5187 > > .....................>///////////////////////////////////////////...............
00:00:27 v #5188 > > ...>////////////////............................................................
00:00:27 v #5189 > > │
00:00:27 v #5190 > > ......................>//////////////////////////////////////////<..............
00:00:27 v #5191 > > ...>>/////////..................................................................
00:00:27 v #5192 > > │
00:00:27 v #5193 > > ......................>>//////////////////////////////////////////..............
00:00:27 v #5194 > > ....>////.......................................................................
00:00:27 v #5195 > > │
00:00:27 v #5196 > > .......................>>/////////////////////////////////////////..............
00:00:27 v #5197 > > ................................................................................
00:00:27 v #5198 > > │
00:00:27 v #5199 > > ........................>>//////////////////////////////////....................
00:00:27 v #5200 > > ................................................................................
00:00:27 v #5201 > > │
00:00:27 v #5202 > > .........................>////////////////////////////..........................
00:00:27 v #5203 > > ................................................................................
00:00:27 v #5204 > > │
00:00:27 v #5205 > > .........................>>//////////////////////...............................
00:00:27 v #5206 > > ................................................................................
00:00:27 v #5207 > > │
00:00:27 v #5208 > > ..........................>>////////////////....................................
00:00:27 v #5209 > > ................................................................................
00:00:27 v #5210 > > │
00:00:27 v #5211 > > ...........................>///////////.........................................
00:00:27 v #5212 > > ................................................................................
00:00:27 v #5213 > > │
00:00:27 v #5214 > > ............................>////...............................................
00:00:27 v #5215 > > ................................................................................
00:00:27 v #5216 > > │
00:00:27 v #5217 > > ................................................................................
00:00:27 v #5218 > > ................................................................................
00:00:27 v #5219 > > │
00:00:27 v #5220 > > ................................................................................
00:00:27 v #5221 > > ................................................................................
00:00:27 v #5222 > > │
00:00:27 v #5223 > > ................................................................................
00:00:27 v #5224 > > ................................................................................
00:00:27 v #5225 > > │
00:00:27 v #5226 > > ................................................................................
00:00:27 v #5227 > > ................................................................................
00:00:27 v #5228 > > │
00:00:27 v #5229 > > ................................................................................
00:00:27 v #5230 > > ................................................................................
00:00:27 v #5231 > > │
00:00:27 v #5232 > > ................................................................................
00:00:27 v #5233 > > ................................................................................
00:00:27 v #5234 > > │
00:00:27 v #5235 > > ................................................................................
00:00:27 v #5236 > > ................................................................................
00:00:27 v #5237 > > │
00:00:27 v #5238 > > ................................................................................
00:00:27 v #5239 > > ................................................................................
00:00:27 v #5240 > > │
00:00:27 v #5241 > > ................................................................................
00:00:27 v #5242 > > ................................................................................
00:00:27 v #5243 > > │
00:00:27 v #5244 > > │
00:00:27 v #5245 > > ................................................................................
00:00:27 v #5246 > > ................................................................................
00:00:27 v #5247 > > │
00:00:27 v #5248 > > ................................................................................
00:00:27 v #5249 > > ................................................................................
00:00:27 v #5250 > > │
00:00:27 v #5251 > > ................................................................................
00:00:27 v #5252 > > ................................................................................
00:00:27 v #5253 > > │
00:00:27 v #5254 > > ................................................................................
00:00:27 v #5255 > > ................................................................................
00:00:27 v #5256 > > │
00:00:27 v #5257 > > ................................................................................
00:00:27 v #5258 > > ................................................................................
00:00:27 v #5259 > > │
00:00:27 v #5260 > > ................................................................................
00:00:27 v #5261 > > ................................................................................
00:00:27 v #5262 > > │
00:00:27 v #5263 > > ................................................................................
00:00:27 v #5264 > > ................................................................................
00:00:27 v #5265 > > │
00:00:27 v #5266 > > ................................................................................
00:00:27 v #5267 > > ................................................................................
00:00:27 v #5268 > > │
00:00:27 v #5269 > > ...................................................;............................
00:00:27 v #5270 > > ................................................................................
00:00:27 v #5271 > > │
00:00:27 v #5272 > > ..............................................;/;;///...........................
00:00:27 v #5273 > > ................................................................................
00:00:27 v #5274 > > │
00:00:27 v #5275 > > .........................................;;;//////////..........................
00:00:27 v #5276 > > ................................................................................
00:00:27 v #5277 > > │
00:00:27 v #5278 > > ....................................;;;///////////////<.........................
00:00:27 v #5279 > > ................................................................................
00:00:27 v #5280 > > │
00:00:27 v #5281 > > ...............................;;;/;///////////////////<........................
00:00:27 v #5282 > > ................................................................................
00:00:27 v #5283 > > │
00:00:27 v #5284 > > ..........................;;;/;/////////////////////////<.......................
00:00:27 v #5285 > > ................................................................................
00:00:27 v #5286 > > │
00:00:27 v #5287 > > ......................;;/////////////////////////////////.......................
00:00:27 v #5288 > > ................................................................................
00:00:27 v #5289 > > │
00:00:27 v #5290 > > .................;;;//////////////////////////////////////......................
00:00:27 v #5291 > > ................................................................................
00:00:27 v #5292 > > │
00:00:27 v #5293 > > ..............;>///////////////////////////////////////////.....................
00:00:27 v #5294 > > ...........;;;;/................................................................
00:00:27 v #5295 > > │
00:00:27 v #5296 > > ...............>///////////////////////////////////////////<....................
00:00:27 v #5297 > > ......;;/////////...............................................................
00:00:27 v #5298 > > │
00:00:27 v #5299 > > ................>///////////////////////////////////////////<...................
00:00:27 v #5300 > > .;;;//////////////..............................................................
00:00:27 v #5301 > > │
00:00:27 v #5302 > > .................>///////////////////////////////////////////<................;>
00:00:27 v #5303 > > ///////////////////...................;;///<....................................
00:00:27 v #5304 > > │
00:00:27 v #5305 > > .................>>///////////////////////////////////////////.................>
00:00:27 v #5306 > > >///////////////////..............;;;;//////....................................
00:00:27 v #5307 > > │
00:00:27 v #5308 > > ..................>>///////////////////////////////////////////.................
00:00:27 v #5309 > > >///////////////////<.............>>/////////...................................
00:00:27 v #5310 > > │
00:00:27 v #5311 > > ...................>>///////////////////////////////////////////................
00:00:27 v #5312 > > .>///////////////////<.............>>/////////..................................
00:00:27 v #5313 > > │
00:00:27 v #5314 > > ....................>>///////////////////////////////////////////...............
00:00:27 v #5315 > > .>>///////////////////..............>>////////..................................
00:00:27 v #5316 > > │
00:00:27 v #5317 > > .....................>///////////////////////////////////////////<..............
00:00:27 v #5318 > > ..>>///////////////////..............>////......................................
00:00:27 v #5319 > > │
00:00:27 v #5320 > > ......................>///////////////////////////////////////////<.............
00:00:27 v #5321 > > ...>>//////////////.............................................................
00:00:27 v #5322 > > │
00:00:27 v #5323 > > .......................>///////////////////////////////////////////.............
00:00:27 v #5324 > > ....>>////////..................................................................
00:00:27 v #5325 > > │
00:00:27 v #5326 > > ........................>//////////////////////////////////////////.............
00:00:27 v #5327 > > .....>////......................................................................
00:00:27 v #5328 > > │
00:00:27 v #5329 > > ........................>>/////////////////////////////////////.................
00:00:27 v #5330 > > ................................................................................
00:00:27 v #5331 > > │
00:00:27 v #5332 > > .........................>>///////////////////////////////......................
00:00:27 v #5333 > > ................................................................................
00:00:27 v #5334 > > │
00:00:27 v #5335 > > ..........................>>//////////////////////////..........................
00:00:27 v #5336 > > ................................................................................
00:00:27 v #5337 > > │
00:00:27 v #5338 > > ...........................>>////////////////////...............................
00:00:27 v #5339 > > ................................................................................
00:00:27 v #5340 > > │
00:00:27 v #5341 > > ............................>>///////////////...................................
00:00:27 v #5342 > > ................................................................................
00:00:27 v #5343 > > │
00:00:27 v #5344 > > .............................>>/////////........................................
00:00:27 v #5345 > > ................................................................................
00:00:27 v #5346 > > │
00:00:27 v #5347 > > ..............................>/////............................................
00:00:27 v #5348 > > ................................................................................
00:00:27 v #5349 > > │
00:00:27 v #5350 > > .............................../................................................
00:00:27 v #5351 > > ................................................................................
00:00:27 v #5352 > > │
00:00:27 v #5353 > > ................................................................................
00:00:27 v #5354 > > ................................................................................
00:00:27 v #5355 > > │
00:00:27 v #5356 > > ................................................................................
00:00:27 v #5357 > > ................................................................................
00:00:27 v #5358 > > │
00:00:27 v #5359 > > ................................................................................
00:00:27 v #5360 > > ................................................................................
00:00:27 v #5361 > > │
00:00:27 v #5362 > > ................................................................................
00:00:27 v #5363 > > ................................................................................
00:00:27 v #5364 > > │
00:00:27 v #5365 > > ................................................................................
00:00:27 v #5366 > > ................................................................................
00:00:27 v #5367 > > │
00:00:27 v #5368 > > ................................................................................
00:00:27 v #5369 > > ................................................................................
00:00:27 v #5370 > > │
00:00:27 v #5371 > > ................................................................................
00:00:27 v #5372 > > ................................................................................
00:00:27 v #5373 > > │
00:00:27 v #5374 > > ................................................................................
00:00:27 v #5375 > > ................................................................................
00:00:27 v #5376 > > │
00:00:27 v #5377 > > │
00:00:27 v #5378 > > ................................................................................
00:00:27 v #5379 > > ................................................................................
00:00:27 v #5380 > > │
00:00:27 v #5381 > > ................................................................................
00:00:27 v #5382 > > ................................................................................
00:00:27 v #5383 > > │
00:00:27 v #5384 > > ................................................................................
00:00:27 v #5385 > > ................................................................................
00:00:27 v #5386 > > │
00:00:27 v #5387 > > ................................................................................
00:00:27 v #5388 > > ................................................................................
00:00:27 v #5389 > > │
00:00:27 v #5390 > > ................................................................................
00:00:27 v #5391 > > ................................................................................
00:00:27 v #5392 > > │
00:00:27 v #5393 > > ................................................................................
00:00:27 v #5394 > > ................................................................................
00:00:27 v #5395 > > │
00:00:27 v #5396 > > ................................................................................
00:00:27 v #5397 > > ................................................................................
00:00:27 v #5398 > > │
00:00:27 v #5399 > > ................................................................................
00:00:27 v #5400 > > ................................................................................
00:00:27 v #5401 > > │
00:00:27 v #5402 > > ................................................;;/<............................
00:00:27 v #5403 > > ................................................................................
00:00:27 v #5404 > > │
00:00:27 v #5405 > > ............................................;;//////<...........................
00:00:27 v #5406 > > ................................................................................
00:00:27 v #5407 > > │
00:00:27 v #5408 > > ........................................;;;//////////<..........................
00:00:27 v #5409 > > ................................................................................
00:00:27 v #5410 > > │
00:00:27 v #5411 > > ....................................;/;;//////////////<.........................
00:00:27 v #5412 > > ................................................................................
00:00:27 v #5413 > > │
00:00:27 v #5414 > > ................................;;/////////////////////<........................
00:00:27 v #5415 > > ................................................................................
00:00:27 v #5416 > > │
00:00:27 v #5417 > > ...........................;;//;////////////////////////........................
00:00:27 v #5418 > > ................................................................................
00:00:27 v #5419 > > │
00:00:27 v #5420 > > .......................;;;///////////////////////////////<......................
00:00:27 v #5421 > > ................................................................................
00:00:27 v #5422 > > │
00:00:27 v #5423 > > ...................;/;////////////////////////////////////<.....................
00:00:27 v #5424 > > ..............;.................................................................
00:00:27 v #5425 > > │
00:00:27 v #5426 > > ..............;;;;/////////////////////////////////////////<....................
00:00:27 v #5427 > > ..........;/////................................................................
00:00:27 v #5428 > > │
00:00:27 v #5429 > > ..............;>////////////////////////////////////////////<...................
00:00:27 v #5430 > > ......;;;;///////...............................................................
00:00:27 v #5431 > > │
00:00:27 v #5432 > > ................>////////////////////////////////////////////<..................
00:00:27 v #5433 > > ..;///////////////..............................................................
00:00:27 v #5434 > > │
00:00:27 v #5435 > > .................>////////////////////////////////////////////.................;
00:00:27 v #5436 > > ;//////////////////...................;;;//<....................................
00:00:27 v #5437 > > │
00:00:27 v #5438 > > ..................>////////////////////////////////////////////................>
00:00:27 v #5439 > > >///////////////////..............;;;///////<...................................
00:00:27 v #5440 > > │
00:00:27 v #5441 > > ...................>////////////////////////////////////////////<..............>
00:00:27 v #5442 > > >>///////////////////.............>>/////////<..................................
00:00:27 v #5443 > > │
00:00:27 v #5444 > > ....................>////////////////////////////////////////////<..............
00:00:27 v #5445 > > >>>///////////////////.............>>/////////..................................
00:00:27 v #5446 > > │
00:00:27 v #5447 > > .....................>////////////////////////////////////////////<.............
00:00:27 v #5448 > > .>>>///////////////////.............>>////////..................................
00:00:27 v #5449 > > │
00:00:27 v #5450 > > ......................>////////////////////////////////////////////<............
00:00:27 v #5451 > > ..>>>/////////////////...............>>///......................................
00:00:27 v #5452 > > │
00:00:27 v #5453 > > .......................>////////////////////////////////////////////............
00:00:27 v #5454 > > ...>>>////////////..............................................................
00:00:27 v #5455 > > │
00:00:27 v #5456 > > ........................>///////////////////////////////////////////............
00:00:27 v #5457 > > ....>>>///////..................................................................
00:00:27 v #5458 > > │
00:00:27 v #5459 > > .........................>>/////////////////////////////////////................
00:00:27 v #5460 > > .....>>////.....................................................................
00:00:27 v #5461 > > │
00:00:27 v #5462 > > ..........................>/////////////////////////////////....................
00:00:27 v #5463 > > ................................................................................
00:00:27 v #5464 > > │
00:00:27 v #5465 > > ...........................>>////////////////////////////.......................
00:00:27 v #5466 > > ................................................................................
00:00:27 v #5467 > > │
00:00:27 v #5468 > > ............................>>///////////////////////...........................
00:00:27 v #5469 > > ................................................................................
00:00:27 v #5470 > > │
00:00:27 v #5471 > > .............................>////////////////////..............................
00:00:27 v #5472 > > ................................................................................
00:00:27 v #5473 > > │
00:00:27 v #5474 > > ..............................>>//////////////..................................
00:00:27 v #5475 > > ................................................................................
00:00:27 v #5476 > > │
00:00:27 v #5477 > > ...............................>>/////////......................................
00:00:27 v #5478 > > ................................................................................
00:00:27 v #5479 > > │
00:00:27 v #5480 > > ................................>>////..........................................
00:00:27 v #5481 > > ................................................................................
00:00:27 v #5482 > > │
00:00:27 v #5483 > > .................................>/.............................................
00:00:27 v #5484 > > ................................................................................
00:00:27 v #5485 > > │
00:00:27 v #5486 > > ................................................................................
00:00:27 v #5487 > > ................................................................................
00:00:27 v #5488 > > │
00:00:27 v #5489 > > ................................................................................
00:00:27 v #5490 > > ................................................................................
00:00:27 v #5491 > > │
00:00:27 v #5492 > > ................................................................................
00:00:27 v #5493 > > ................................................................................
00:00:27 v #5494 > > │
00:00:27 v #5495 > > ................................................................................
00:00:27 v #5496 > > ................................................................................
00:00:27 v #5497 > > │
00:00:27 v #5498 > > ................................................................................
00:00:27 v #5499 > > ................................................................................
00:00:27 v #5500 > > │
00:00:27 v #5501 > > ................................................................................
00:00:27 v #5502 > > ................................................................................
00:00:27 v #5503 > > │
00:00:27 v #5504 > > ................................................................................
00:00:27 v #5505 > > ................................................................................
00:00:27 v #5506 > > │
00:00:27 v #5507 > > ................................................................................
00:00:27 v #5508 > > ................................................................................
00:00:27 v #5509 > > │
00:00:27 v #5510 > > │
00:00:27 v #5511 > > ................................................................................
00:00:27 v #5512 > > ................................................................................
00:00:27 v #5513 > > │
00:00:27 v #5514 > > ................................................................................
00:00:27 v #5515 > > ................................................................................
00:00:27 v #5516 > > │
00:00:27 v #5517 > > ................................................................................
00:00:27 v #5518 > > ................................................................................
00:00:27 v #5519 > > │
00:00:27 v #5520 > > ................................................................................
00:00:27 v #5521 > > ................................................................................
00:00:27 v #5522 > > │
00:00:27 v #5523 > > ................................................................................
00:00:27 v #5524 > > ................................................................................
00:00:27 v #5525 > > │
00:00:27 v #5526 > > ................................................................................
00:00:27 v #5527 > > ................................................................................
00:00:27 v #5528 > > │
00:00:27 v #5529 > > ................................................................................
00:00:27 v #5530 > > ................................................................................
00:00:27 v #5531 > > │
00:00:27 v #5532 > > ................................................................................
00:00:27 v #5533 > > ................................................................................
00:00:27 v #5534 > > │
00:00:27 v #5535 > > ...............................................;;;/.............................
00:00:27 v #5536 > > ................................................................................
00:00:27 v #5537 > > │
00:00:27 v #5538 > > ...........................................;;;//////............................
00:00:27 v #5539 > > ................................................................................
00:00:27 v #5540 > > │
00:00:27 v #5541 > > .......................................;;;///////////...........................
00:00:27 v #5542 > > ................................................................................
00:00:27 v #5543 > > │
00:00:27 v #5544 > > ....................................;;////////////////..........................
00:00:27 v #5545 > > ................................................................................
00:00:27 v #5546 > > │
00:00:27 v #5547 > > ................................;;;////////////////////<........................
00:00:27 v #5548 > > ................................................................................
00:00:27 v #5549 > > │
00:00:27 v #5550 > > ............................;;/;////////////////////////<.......................
00:00:27 v #5551 > > ................................................................................
00:00:27 v #5552 > > │
00:00:27 v #5553 > > .........................;;//////////////////////////////<......................
00:00:27 v #5554 > > ................................................................................
00:00:27 v #5555 > > │
00:00:27 v #5556 > > .....................;/////////////////////////////////////.....................
00:00:27 v #5557 > > .............;;.................................................................
00:00:27 v #5558 > > │
00:00:27 v #5559 > > .................;/;////////////////////////////////////////....................
00:00:27 v #5560 > > ..........;;////................................................................
00:00:27 v #5561 > > │
00:00:27 v #5562 > > ...............;/////////////////////////////////////////////...................
00:00:27 v #5563 > > ......;;;////////...............................................................
00:00:27 v #5564 > > │
00:00:27 v #5565 > > ...............>>/////////////////////////////////////////////..................
00:00:27 v #5566 > > ...;//////////////<.............................................................
00:00:27 v #5567 > > │
00:00:27 v #5568 > > ................>>/////////////////////////////////////////////................;
00:00:27 v #5569 > > ;///////////////////..................;;;//<....................................
00:00:27 v #5570 > > │
00:00:27 v #5571 > > ..................>>////////////////////////////////////////////<.............;;
00:00:27 v #5572 > > >////////////////////..............;/////////...................................
00:00:27 v #5573 > > │
00:00:27 v #5574 > > ...................>>////////////////////////////////////////////<............\>
00:00:27 v #5575 > > >>////////////////////............;>//////////..................................
00:00:27 v #5576 > > │
00:00:27 v #5577 > > ....................>>////////////////////////////////////////////<.............
00:00:27 v #5578 > > >>>////////////////////...........\>>//////////.................................
00:00:27 v #5579 > > │
00:00:27 v #5580 > > .....................>>/////////////////////////////////////////////............
00:00:27 v #5581 > > .>>>////////////////////............>>>//////...................................
00:00:27 v #5582 > > │
00:00:27 v #5583 > > .......................>/////////////////////////////////////////////...........
00:00:27 v #5584 > > ..>>>////////////////................>>///......................................
00:00:27 v #5585 > > │
00:00:27 v #5586 > > ........................>////////////////////////////////////////////...........
00:00:27 v #5587 > > ...>>>////////////..............................................................
00:00:27 v #5588 > > │
00:00:27 v #5589 > > .........................>>///////////////////////////////////////..............
00:00:27 v #5590 > > ....>>>>///////.................................................................
00:00:27 v #5591 > > │
00:00:27 v #5592 > > ..........................>>///////////////////////////////////.................
00:00:27 v #5593 > > .....\>>>///....................................................................
00:00:27 v #5594 > > │
00:00:27 v #5595 > > ...........................>>//////////////////////////////.....................
00:00:27 v #5596 > > ................................................................................
00:00:27 v #5597 > > │
00:00:27 v #5598 > > ............................>>//////////////////////////........................
00:00:27 v #5599 > > ................................................................................
00:00:27 v #5600 > > │
00:00:27 v #5601 > > .............................>>//////////////////////...........................
00:00:27 v #5602 > > ................................................................................
00:00:27 v #5603 > > │
00:00:27 v #5604 > > ...............................>//////////////////..............................
00:00:27 v #5605 > > ................................................................................
00:00:27 v #5606 > > │
00:00:27 v #5607 > > ................................>>/////////////.................................
00:00:27 v #5608 > > ................................................................................
00:00:27 v #5609 > > │
00:00:27 v #5610 > > .................................>>/////////....................................
00:00:27 v #5611 > > ................................................................................
00:00:27 v #5612 > > │
00:00:27 v #5613 > > ..................................>>/////.......................................
00:00:27 v #5614 > > ................................................................................
00:00:27 v #5615 > > │
00:00:27 v #5616 > > ...................................>//..........................................
00:00:27 v #5617 > > ................................................................................
00:00:27 v #5618 > > │
00:00:27 v #5619 > > ................................................................................
00:00:27 v #5620 > > ................................................................................
00:00:27 v #5621 > > │
00:00:27 v #5622 > > ................................................................................
00:00:27 v #5623 > > ................................................................................
00:00:27 v #5624 > > │
00:00:27 v #5625 > > ................................................................................
00:00:27 v #5626 > > ................................................................................
00:00:27 v #5627 > > │
00:00:27 v #5628 > > ................................................................................
00:00:27 v #5629 > > ................................................................................
00:00:27 v #5630 > > │
00:00:27 v #5631 > > ................................................................................
00:00:27 v #5632 > > ................................................................................
00:00:27 v #5633 > > │
00:00:27 v #5634 > > ................................................................................
00:00:27 v #5635 > > ................................................................................
00:00:27 v #5636 > > │
00:00:27 v #5637 > > ................................................................................
00:00:27 v #5638 > > ................................................................................
00:00:27 v #5639 > > │
00:00:27 v #5640 > > ................................................................................
00:00:27 v #5641 > > ................................................................................
00:00:27 v #5642 > > │
00:00:27 v #5643 > > │
00:00:27 v #5644 > > ................................................................................
00:00:27 v #5645 > > ................................................................................
00:00:27 v #5646 > > │
00:00:27 v #5647 > > ................................................................................
00:00:27 v #5648 > > ................................................................................
00:00:27 v #5649 > > │
00:00:27 v #5650 > > ................................................................................
00:00:27 v #5651 > > ................................................................................
00:00:27 v #5652 > > │
00:00:27 v #5653 > > ................................................................................
00:00:27 v #5654 > > ................................................................................
00:00:27 v #5655 > > │
00:00:27 v #5656 > > ................................................................................
00:00:27 v #5657 > > ................................................................................
00:00:27 v #5658 > > │
00:00:27 v #5659 > > ................................................................................
00:00:27 v #5660 > > ................................................................................
00:00:27 v #5661 > > │
00:00:27 v #5662 > > ................................................................................
00:00:27 v #5663 > > ................................................................................
00:00:27 v #5664 > > │
00:00:27 v #5665 > > ................................................................................
00:00:27 v #5666 > > ................................................................................
00:00:27 v #5667 > > │
00:00:27 v #5668 > > .............................................;;///..............................
00:00:27 v #5669 > > ................................................................................
00:00:27 v #5670 > > │
00:00:27 v #5671 > > ..........................................;;;//////<............................
00:00:27 v #5672 > > ................................................................................
00:00:27 v #5673 > > │
00:00:27 v #5674 > > .......................................;////////////<...........................
00:00:27 v #5675 > > ................................................................................
00:00:27 v #5676 > > │
00:00:27 v #5677 > > ....................................;/////////////////..........................
00:00:27 v #5678 > > ................................................................................
00:00:27 v #5679 > > │
00:00:27 v #5680 > > ................................;;;////////////////////<........................
00:00:27 v #5681 > > ................................................................................
00:00:27 v #5682 > > │
00:00:27 v #5683 > > .............................;;;////////////////////////<.......................
00:00:27 v #5684 > > ................................................................................
00:00:27 v #5685 > > │
00:00:27 v #5686 > > ..........................;///////////////////////////////......................
00:00:27 v #5687 > > ................................................................................
00:00:27 v #5688 > > │
00:00:27 v #5689 > > ......................;;///////////////////////////////////.....................
00:00:27 v #5690 > > .............;/.................................................................
00:00:27 v #5691 > > │
00:00:27 v #5692 > > ...................;;;//////////////////////////////////////<...................
00:00:27 v #5693 > > ..........;;////................................................................
00:00:27 v #5694 > > │
00:00:27 v #5695 > > ................;;////////////////////////////////////////////..................
00:00:27 v #5696 > > ......;;;////////...............................................................
00:00:27 v #5697 > > │
00:00:27 v #5698 > > ...............;>//////////////////////////////////////////////.................
00:00:27 v #5699 > > ...;;//////////////......................<......................................
00:00:27 v #5700 > > │
00:00:27 v #5701 > > ................>>//////////////////////////////////////////////................
00:00:27 v #5702 > > ;///////////////////..................;;;//<....................................
00:00:27 v #5703 > > │
00:00:27 v #5704 > > .................>>>//////////////////////////////////////////////............;;
00:00:27 v #5705 > > >////////////////////..............;;;///////...................................
00:00:27 v #5706 > > │
00:00:27 v #5707 > > ..................>>>//////////////////////////////////////////////...........>>
00:00:27 v #5708 > > >>////////////////////<..........;;;>/////////..................................
00:00:27 v #5709 > > │
00:00:27 v #5710 > > ...................>>>//////////////////////////////////////////////...........>
00:00:27 v #5711 > > >>>/////////////////////..........>>>>/////////.................................
00:00:27 v #5712 > > │
00:00:27 v #5713 > > .....................>>>/////////////////////////////////////////////<..........
00:00:27 v #5714 > > >>>>>//////////////////............>>>>//////...................................
00:00:27 v #5715 > > │
00:00:27 v #5716 > > ......................>>>////////////////////////////////////////////...........
00:00:27 v #5717 > > .\>>>>///////////////................>>>//......................................
00:00:27 v #5718 > > │
00:00:27 v #5719 > > ........................>>>////////////////////////////////////////.............
00:00:27 v #5720 > > ...>>>>///////////..............................................................
00:00:27 v #5721 > > │
00:00:27 v #5722 > > .........................>>>////////////////////////////////////................
00:00:27 v #5723 > > ....>>>>>//////.................................................................
00:00:27 v #5724 > > │
00:00:27 v #5725 > > ..........................>>>////////////////////////////////...................
00:00:27 v #5726 > > ......>>>>//....................................................................
00:00:27 v #5727 > > │
00:00:27 v #5728 > > ............................>>>////////////////////////////.....................
00:00:27 v #5729 > > ................................................................................
00:00:27 v #5730 > > │
00:00:27 v #5731 > > .............................>>>////////////////////////........................
00:00:27 v #5732 > > ................................................................................
00:00:27 v #5733 > > │
00:00:27 v #5734 > > ..............................>>>////////////////////...........................
00:00:27 v #5735 > > ................................................................................
00:00:27 v #5736 > > │
00:00:27 v #5737 > > ................................>>>////////////////.............................
00:00:27 v #5738 > > ................................................................................
00:00:27 v #5739 > > │
00:00:27 v #5740 > > .................................>>>////////////................................
00:00:27 v #5741 > > ................................................................................
00:00:27 v #5742 > > │
00:00:27 v #5743 > > ...................................>>>////////..................................
00:00:27 v #5744 > > ................................................................................
00:00:27 v #5745 > > │
00:00:27 v #5746 > > ....................................>>>////.....................................
00:00:27 v #5747 > > ................................................................................
00:00:27 v #5748 > > │
00:00:27 v #5749 > > ......................................>//.......................................
00:00:27 v #5750 > > ................................................................................
00:00:27 v #5751 > > │
00:00:27 v #5752 > > ................................................................................
00:00:27 v #5753 > > ................................................................................
00:00:27 v #5754 > > │
00:00:27 v #5755 > > ................................................................................
00:00:27 v #5756 > > ................................................................................
00:00:27 v #5757 > > │
00:00:27 v #5758 > > ................................................................................
00:00:27 v #5759 > > ................................................................................
00:00:27 v #5760 > > │
00:00:27 v #5761 > > ................................................................................
00:00:27 v #5762 > > ................................................................................
00:00:27 v #5763 > > │
00:00:27 v #5764 > > ................................................................................
00:00:27 v #5765 > > ................................................................................
00:00:27 v #5766 > > │
00:00:27 v #5767 > > ................................................................................
00:00:27 v #5768 > > ................................................................................
00:00:27 v #5769 > > │
00:00:27 v #5770 > > ................................................................................
00:00:27 v #5771 > > ................................................................................
00:00:27 v #5772 > > │
00:00:27 v #5773 > > ................................................................................
00:00:27 v #5774 > > ................................................................................
00:00:27 v #5775 > > │
00:00:27 v #5776 > > │
00:00:27 v #5777 > > ................................................................................
00:00:27 v #5778 > > ................................................................................
00:00:27 v #5779 > > │
00:00:27 v #5780 > > ................................................................................
00:00:27 v #5781 > > ................................................................................
00:00:27 v #5782 > > │
00:00:27 v #5783 > > ................................................................................
00:00:27 v #5784 > > ................................................................................
00:00:27 v #5785 > > │
00:00:27 v #5786 > > ................................................................................
00:00:27 v #5787 > > ................................................................................
00:00:27 v #5788 > > │
00:00:27 v #5789 > > ................................................................................
00:00:27 v #5790 > > ................................................................................
00:00:27 v #5791 > > │
00:00:27 v #5792 > > ................................................................................
00:00:27 v #5793 > > ................................................................................
00:00:27 v #5794 > > │
00:00:27 v #5795 > > ................................................................................
00:00:27 v #5796 > > ................................................................................
00:00:27 v #5797 > > │
00:00:27 v #5798 > > ...............................................;<...............................
00:00:27 v #5799 > > ................................................................................
00:00:27 v #5800 > > │
00:00:27 v #5801 > > ............................................;;;//<..............................
00:00:27 v #5802 > > ................................................................................
00:00:27 v #5803 > > │
00:00:27 v #5804 > > ..........................................;;///////<............................
00:00:27 v #5805 > > ................................................................................
00:00:27 v #5806 > > │
00:00:27 v #5807 > > .......................................;////////////<...........................
00:00:27 v #5808 > > ................................................................................
00:00:27 v #5809 > > │
00:00:27 v #5810 > > ....................................;/////////////////..........................
00:00:27 v #5811 > > ................................................................................
00:00:27 v #5812 > > │
00:00:27 v #5813 > > .................................;/////////////////////<........................
00:00:27 v #5814 > > ................................................................................
00:00:27 v #5815 > > │
00:00:27 v #5816 > > ..............................;;/////////////////////////.......................
00:00:27 v #5817 > > ................................................................................
00:00:27 v #5818 > > │
00:00:27 v #5819 > > ...........................;;/////////////////////////////......................
00:00:27 v #5820 > > ................................................................................
00:00:27 v #5821 > > │
00:00:27 v #5822 > > ........................;;//////////////////////////////////....................
00:00:27 v #5823 > > ............;;<.................................................................
00:00:27 v #5824 > > │
00:00:27 v #5825 > > .....................;;//////////////////////////////////////...................
00:00:27 v #5826 > > .........;//////................................................................
00:00:27 v #5827 > > │
00:00:27 v #5828 > > ..................;///////////////////////////////////////////<.................
00:00:27 v #5829 > > .......;//////////..............................................................
00:00:27 v #5830 > > │
00:00:27 v #5831 > > ................;///////////////////////////////////////////////................
00:00:27 v #5832 > > ....;;/////////////......................;......................................
00:00:27 v #5833 > > │
00:00:27 v #5834 > > ................>>>//////////////////////////////////////////////<..............
00:00:27 v #5835 > > .;;/////////////////<.................;;///<....................................
00:00:27 v #5836 > > │
00:00:27 v #5837 > > ................>>>>///////////////////////////////////////////////............;
00:00:27 v #5838 > > >/////////////////////.............;;////////...................................
00:00:27 v #5839 > > │
00:00:27 v #5840 > > ................;>>>>>//////////////////////////////////////////////<........;;>
00:00:27 v #5841 > > >>/////////////////////<.........;;;>/////////<.................................
00:00:27 v #5842 > > │
00:00:27 v #5843 > > ..................>>>>>//////////////////////////////////////////////<........>>
00:00:27 v #5844 > > >>>>////////////////////..........>>>>/////////.................................
00:00:27 v #5845 > > │
00:00:27 v #5846 > > ...................>>>>>//////////////////////////////////////////////..........
00:00:27 v #5847 > > >>>>>//////////////////............>>>>>/////...................................
00:00:27 v #5848 > > │
00:00:27 v #5849 > > .....................>>>>>//////////////////////////////////////////............
00:00:27 v #5850 > > .>>>>>>/////////////.................>>>>/......................................
00:00:27 v #5851 > > │
00:00:27 v #5852 > > ......................>>>>>>/////////////////////////////////////...............
00:00:27 v #5853 > > ...>>>>>//////////..............................................................
00:00:27 v #5854 > > │
00:00:27 v #5855 > > ........................>>>>>//////////////////////////////////.................
00:00:27 v #5856 > > ....>>>>>>/////.................................................................
00:00:27 v #5857 > > │
00:00:27 v #5858 > > ..........................>>>>>//////////////////////////////...................
00:00:27 v #5859 > > ......>>>>>//...................................................................
00:00:27 v #5860 > > │
00:00:27 v #5861 > > ...........................>>>>>///////////////////////////.....................
00:00:27 v #5862 > > ................................................................................
00:00:27 v #5863 > > │
00:00:27 v #5864 > > .............................>>>>>///////////////////////.......................
00:00:27 v #5865 > > ................................................................................
00:00:27 v #5866 > > │
00:00:27 v #5867 > > ..............................>>>>>///////////////////..........................
00:00:27 v #5868 > > ................................................................................
00:00:27 v #5869 > > │
00:00:27 v #5870 > > ................................>>>>>///////////////............................
00:00:27 v #5871 > > ................................................................................
00:00:27 v #5872 > > │
00:00:27 v #5873 > > .................................>>>>>>///////////..............................
00:00:27 v #5874 > > ................................................................................
00:00:27 v #5875 > > │
00:00:27 v #5876 > > ...................................=>>>>///////.................................
00:00:27 v #5877 > > ................................................................................
00:00:27 v #5878 > > │
00:00:27 v #5879 > > ......................................>>>>///...................................
00:00:27 v #5880 > > ................................................................................
00:00:27 v #5881 > > │
00:00:27 v #5882 > > ........................................=>/.....................................
00:00:27 v #5883 > > ................................................................................
00:00:27 v #5884 > > │
00:00:27 v #5885 > > ................................................................................
00:00:27 v #5886 > > ................................................................................
00:00:27 v #5887 > > │
00:00:27 v #5888 > > ................................................................................
00:00:27 v #5889 > > ................................................................................
00:00:27 v #5890 > > │
00:00:27 v #5891 > > ................................................................................
00:00:27 v #5892 > > ................................................................................
00:00:27 v #5893 > > │
00:00:27 v #5894 > > ................................................................................
00:00:27 v #5895 > > ................................................................................
00:00:27 v #5896 > > │
00:00:27 v #5897 > > ................................................................................
00:00:27 v #5898 > > ................................................................................
00:00:27 v #5899 > > │
00:00:27 v #5900 > > ................................................................................
00:00:27 v #5901 > > ................................................................................
00:00:27 v #5902 > > │
00:00:27 v #5903 > > ................................................................................
00:00:27 v #5904 > > ................................................................................
00:00:27 v #5905 > > │
00:00:27 v #5906 > > ................................................................................
00:00:27 v #5907 > > ................................................................................
00:00:27 v #5908 > > │
00:00:27 v #5909 > > │
00:00:27 v #5910 > > ................................................................................
00:00:27 v #5911 > > ................................................................................
00:00:27 v #5912 > > │
00:00:27 v #5913 > > ................................................................................
00:00:27 v #5914 > > ................................................................................
00:00:27 v #5915 > > │
00:00:27 v #5916 > > ................................................................................
00:00:27 v #5917 > > ................................................................................
00:00:27 v #5918 > > │
00:00:27 v #5919 > > ................................................................................
00:00:27 v #5920 > > ................................................................................
00:00:27 v #5921 > > │
00:00:27 v #5922 > > ................................................................................
00:00:27 v #5923 > > ................................................................................
00:00:27 v #5924 > > │
00:00:27 v #5925 > > ................................................................................
00:00:27 v #5926 > > ................................................................................
00:00:27 v #5927 > > │
00:00:27 v #5928 > > ................................................................................
00:00:27 v #5929 > > ................................................................................
00:00:27 v #5930 > > │
00:00:27 v #5931 > > ..............................................;/................................
00:00:27 v #5932 > > ................................................................................
00:00:27 v #5933 > > │
00:00:27 v #5934 > > ............................................;////...............................
00:00:27 v #5935 > > ................................................................................
00:00:27 v #5936 > > │
00:00:27 v #5937 > > .........................................;;///////<.............................
00:00:27 v #5938 > > ................................................................................
00:00:27 v #5939 > > │
00:00:27 v #5940 > > ......................................;;////////////............................
00:00:27 v #5941 > > ................................................................................
00:00:27 v #5942 > > │
00:00:27 v #5943 > > ....................................;;///////////////<..........................
00:00:27 v #5944 > > ................................................................................
00:00:27 v #5945 > > │
00:00:27 v #5946 > > .................................;/////////////////////<........................
00:00:27 v #5947 > > ................................................................................
00:00:27 v #5948 > > │
00:00:27 v #5949 > > ..............................;;;////////////////////////.......................
00:00:27 v #5950 > > ................................................................................
00:00:27 v #5951 > > │
00:00:27 v #5952 > > ............................;/////////////////////////////<.....................
00:00:27 v #5953 > > ................................................................................
00:00:27 v #5954 > > │
00:00:27 v #5955 > > .........................;;/////////////////////////////////....................
00:00:27 v #5956 > > ...........;;/..................................................................
00:00:27 v #5957 > > │
00:00:27 v #5958 > > .......................;;/////////////////////////////////////..................
00:00:27 v #5959 > > .........;;/////................................................................
00:00:27 v #5960 > > │
00:00:27 v #5961 > > ....................;;/////////////////////////////////////////.................
00:00:27 v #5962 > > .......;//////////..............................................................
00:00:27 v #5963 > > │
00:00:27 v #5964 > > ..................;;/////////////////////////////////////////////...............
00:00:27 v #5965 > > ....;;/////////////......................;......................................
00:00:27 v #5966 > > │
00:00:27 v #5967 > > ................;;>///////////////////////////////////////////////<.............
00:00:27 v #5968 > > ..;;/////////////////.................;;///<....................................
00:00:27 v #5969 > > │
00:00:27 v #5970 > > ................;>>>////////////////////////////////////////////////...........;
00:00:27 v #5971 > > ;/////////////////////.............\;////////<..................................
00:00:27 v #5972 > > │
00:00:27 v #5973 > > ................>>>>>>///////////////////////////////////////////////<.......;;;
00:00:27 v #5974 > > >>>/////////////////////.........;;;>//////////.................................
00:00:27 v #5975 > > │
00:00:27 v #5976 > > ................>>>>>>>>//////////////////////////////////////////////.......>>>
00:00:27 v #5977 > > >>>>////////////////////.........>>>>>>////////.................................
00:00:27 v #5978 > > │
00:00:27 v #5979 > > ..................>>>>>>>>//////////////////////////////////////////...........>
00:00:27 v #5980 > > >>>>>>////////////////.............>>>>>/////...................................
00:00:27 v #5981 > > │
00:00:27 v #5982 > > ...................\>>>>>>>///////////////////////////////////////..............
00:00:27 v #5983 > > .>>>>>>>////////////.................>>>>//.....................................
00:00:27 v #5984 > > │
00:00:27 v #5985 > > .....................>>>>>>>>///////////////////////////////////................
00:00:27 v #5986 > > ..>>>>>>>/////////..............................................................
00:00:27 v #5987 > > │
00:00:27 v #5988 > > .......................>>>>>>>>///////////////////////////////..................
00:00:27 v #5989 > > ....>>>>>>>/////................................................................
00:00:27 v #5990 > > │
00:00:27 v #5991 > > .........................>>>>>>>/////////////////////////////...................
00:00:27 v #5992 > > ......>>>>>>//..................................................................
00:00:27 v #5993 > > │
00:00:27 v #5994 > > ..........................>>>>>>>>/////////////////////////.....................
00:00:27 v #5995 > > ................................................................................
00:00:27 v #5996 > > │
00:00:27 v #5997 > > ............................>>>>>>>>/////////////////////.......................
00:00:27 v #5998 > > ................................................................................
00:00:27 v #5999 > > │
00:00:27 v #6000 > > ..............................>>>>>>>>/////////////////.........................
00:00:27 v #6001 > > ................................................................................
00:00:27 v #6002 > > │
00:00:27 v #6003 > > ................................>>>>>>>//////////////...........................
00:00:27 v #6004 > > ................................................................................
00:00:27 v #6005 > > │
00:00:27 v #6006 > > .................................>>>>>>>>//////////.............................
00:00:27 v #6007 > > ................................................................................
00:00:27 v #6008 > > │
00:00:27 v #6009 > > ....................................>>>>>>>//////...............................
00:00:27 v #6010 > > ................................................................................
00:00:27 v #6011 > > │
00:00:27 v #6012 > > ........................................>>>>///.................................
00:00:27 v #6013 > > ................................................................................
00:00:27 v #6014 > > │
00:00:27 v #6015 > > ...........................................>>/..................................
00:00:27 v #6016 > > ................................................................................
00:00:27 v #6017 > > │
00:00:27 v #6018 > > ................................................................................
00:00:27 v #6019 > > ................................................................................
00:00:27 v #6020 > > │
00:00:27 v #6021 > > ................................................................................
00:00:27 v #6022 > > ................................................................................
00:00:27 v #6023 > > │
00:00:27 v #6024 > > ................................................................................
00:00:27 v #6025 > > ................................................................................
00:00:27 v #6026 > > │
00:00:27 v #6027 > > ................................................................................
00:00:27 v #6028 > > ................................................................................
00:00:27 v #6029 > > │
00:00:27 v #6030 > > ................................................................................
00:00:27 v #6031 > > ................................................................................
00:00:27 v #6032 > > │
00:00:27 v #6033 > > ................................................................................
00:00:27 v #6034 > > ................................................................................
00:00:27 v #6035 > > │
00:00:27 v #6036 > > ................................................................................
00:00:27 v #6037 > > ................................................................................
00:00:27 v #6038 > > │
00:00:27 v #6039 > > ................................................................................
00:00:27 v #6040 > > ................................................................................
00:00:27 v #6041 > > │
00:00:27 v #6042 > > │
00:00:27 v #6043 > > ................................................................................
00:00:27 v #6044 > > ................................................................................
00:00:27 v #6045 > > │
00:00:27 v #6046 > > ................................................................................
00:00:27 v #6047 > > ................................................................................
00:00:27 v #6048 > > │
00:00:27 v #6049 > > ................................................................................
00:00:27 v #6050 > > ................................................................................
00:00:27 v #6051 > > │
00:00:27 v #6052 > > ................................................................................
00:00:27 v #6053 > > ................................................................................
00:00:27 v #6054 > > │
00:00:27 v #6055 > > ................................................................................
00:00:27 v #6056 > > ................................................................................
00:00:27 v #6057 > > │
00:00:27 v #6058 > > ................................................................................
00:00:27 v #6059 > > ................................................................................
00:00:27 v #6060 > > │
00:00:27 v #6061 > > ................................................................................
00:00:27 v #6062 > > ................................................................................
00:00:27 v #6063 > > │
00:00:27 v #6064 > > .............................................;/.................................
00:00:27 v #6065 > > ................................................................................
00:00:27 v #6066 > > │
00:00:27 v #6067 > > ...........................................;;////...............................
00:00:27 v #6068 > > ................................................................................
00:00:27 v #6069 > > │
00:00:27 v #6070 > > ........................................;;////////<.............................
00:00:27 v #6071 > > ................................................................................
00:00:27 v #6072 > > │
00:00:27 v #6073 > > ......................................;/////////////............................
00:00:27 v #6074 > > ................................................................................
00:00:27 v #6075 > > │
00:00:27 v #6076 > > ....................................;/////////////////..........................
00:00:27 v #6077 > > ................................................................................
00:00:27 v #6078 > > │
00:00:27 v #6079 > > .................................;;////////////////////<........................
00:00:27 v #6080 > > ................................................................................
00:00:27 v #6081 > > │
00:00:27 v #6082 > > ...............................;/////////////////////////.......................
00:00:27 v #6083 > > ................................................................................
00:00:27 v #6084 > > │
00:00:27 v #6085 > > .............................;/////////////////////////////.....................
00:00:27 v #6086 > > ................................................................................
00:00:27 v #6087 > > │
00:00:27 v #6088 > > ..........................;;////////////////////////////////<...................
00:00:27 v #6089 > > ...........;;/..................................................................
00:00:27 v #6090 > > │
00:00:27 v #6091 > > ........................;;////////////////////////////////////..................
00:00:27 v #6092 > > ........;;//////................................................................
00:00:27 v #6093 > > │
00:00:27 v #6094 > > ......................;/////////////////////////////////////////................
00:00:27 v #6095 > > ......;;//////////..............................................................
00:00:27 v #6096 > > │
00:00:27 v #6097 > > ...................;;////////////////////////////////////////////<..............
00:00:27 v #6098 > > ....;;;////////////<....................;;......................................
00:00:27 v #6099 > > │
00:00:27 v #6100 > > .................;;////////////////////////////////////////////////<............
00:00:27 v #6101 > > ..;;/////////////////................;;;////....................................
00:00:27 v #6102 > > │
00:00:27 v #6103 > > ................;;>>>////////////////////////////////////////////////...........
00:00:27 v #6104 > > ;;/////////////////////............\;;///////<..................................
00:00:27 v #6105 > > │
00:00:27 v #6106 > > ................;>>>>>>///////////////////////////////////////////////.......;;;
00:00:27 v #6107 > > ;>>/////////////////////.........;;;>//////////.................................
00:00:27 v #6108 > > │
00:00:27 v #6109 > > ...............;>>>>>>>>/////////////////////////////////////////////........;>>
00:00:27 v #6110 > > >>>>>///////////////////.........;>>>>>////////.................................
00:00:27 v #6111 > > │
00:00:27 v #6112 > > ................>>>>>>>>>>/////////////////////////////////////////...........>>
00:00:27 v #6113 > > >>>>>>>///////////////.............>>>>>>////...................................
00:00:27 v #6114 > > │
00:00:27 v #6115 > > ..................>>>>>>>>>>>////////////////////////////////////...............
00:00:27 v #6116 > > >>>>>>>>>///////////................\>>>>>/.....................................
00:00:27 v #6117 > > │
00:00:27 v #6118 > > ....................>>>>>>>>>>//////////////////////////////////................
00:00:27 v #6119 > > ..>>>>>>>>////////..............................................................
00:00:27 v #6120 > > │
00:00:27 v #6121 > > ......................>>>>>>>>>>//////////////////////////////..................
00:00:27 v #6122 > > ....>>>>>>>>////................................................................
00:00:27 v #6123 > > │
00:00:27 v #6124 > > ........................>>>>>>>>>>///////////////////////////...................
00:00:27 v #6125 > > ......>>>>>>>//.................................................................
00:00:27 v #6126 > > │
00:00:27 v #6127 > > ..........................>>>>>>>>>>///////////////////////.....................
00:00:27 v #6128 > > ................................................................................
00:00:27 v #6129 > > │
00:00:27 v #6130 > > ............................>>>>>>>>>>///////////////////.......................
00:00:27 v #6131 > > ................................................................................
00:00:27 v #6132 > > │
00:00:27 v #6133 > > ..............................>>>>>>>>>>////////////////........................
00:00:27 v #6134 > > ................................................................................
00:00:27 v #6135 > > │
00:00:27 v #6136 > > ................................>>>>>>>>>>////////////..........................
00:00:27 v #6137 > > ................................................................................
00:00:27 v #6138 > > │
00:00:27 v #6139 > > ..................................>>>>>>>>>>////////............................
00:00:27 v #6140 > > ................................................................................
00:00:27 v #6141 > > │
00:00:27 v #6142 > > ....................................=>>>>>>>>>/////.............................
00:00:27 v #6143 > > ................................................................................
00:00:27 v #6144 > > │
00:00:27 v #6145 > > ..........................................>>>>>//...............................
00:00:27 v #6146 > > ................................................................................
00:00:27 v #6147 > > │
00:00:27 v #6148 > > .............................................../................................
00:00:27 v #6149 > > ................................................................................
00:00:27 v #6150 > > │
00:00:27 v #6151 > > ................................................................................
00:00:27 v #6152 > > ................................................................................
00:00:27 v #6153 > > │
00:00:27 v #6154 > > ................................................................................
00:00:27 v #6155 > > ................................................................................
00:00:27 v #6156 > > │
00:00:27 v #6157 > > ................................................................................
00:00:27 v #6158 > > ................................................................................
00:00:27 v #6159 > > │
00:00:27 v #6160 > > ................................................................................
00:00:27 v #6161 > > ................................................................................
00:00:27 v #6162 > > │
00:00:27 v #6163 > > ................................................................................
00:00:27 v #6164 > > ................................................................................
00:00:27 v #6165 > > │
00:00:27 v #6166 > > ................................................................................
00:00:27 v #6167 > > ................................................................................
00:00:27 v #6168 > > │
00:00:27 v #6169 > > ................................................................................
00:00:27 v #6170 > > ................................................................................
00:00:27 v #6171 > > │
00:00:27 v #6172 > > ................................................................................
00:00:27 v #6173 > > ................................................................................
00:00:27 v #6174 > > │
00:00:27 v #6175 > > │
00:00:27 v #6176 > > ................................................................................
00:00:27 v #6177 > > ................................................................................
00:00:27 v #6178 > > │
00:00:27 v #6179 > > ................................................................................
00:00:27 v #6180 > > ................................................................................
00:00:27 v #6181 > > │
00:00:27 v #6182 > > ................................................................................
00:00:27 v #6183 > > ................................................................................
00:00:27 v #6184 > > │
00:00:27 v #6185 > > ................................................................................
00:00:27 v #6186 > > ................................................................................
00:00:27 v #6187 > > │
00:00:27 v #6188 > > ................................................................................
00:00:27 v #6189 > > ................................................................................
00:00:27 v #6190 > > │
00:00:27 v #6191 > > ................................................................................
00:00:27 v #6192 > > ................................................................................
00:00:27 v #6193 > > │
00:00:27 v #6194 > > ................................................................................
00:00:27 v #6195 > > ................................................................................
00:00:27 v #6196 > > │
00:00:27 v #6197 > > ............................................;;..................................
00:00:27 v #6198 > > ................................................................................
00:00:27 v #6199 > > │
00:00:27 v #6200 > > ..........................................;;////................................
00:00:27 v #6201 > > ................................................................................
00:00:27 v #6202 > > │
00:00:27 v #6203 > > ........................................;;////////..............................
00:00:27 v #6204 > > ................................................................................
00:00:27 v #6205 > > │
00:00:27 v #6206 > > ......................................;////////////<............................
00:00:27 v #6207 > > ................................................................................
00:00:27 v #6208 > > │
00:00:27 v #6209 > > ....................................;////////////////<..........................
00:00:27 v #6210 > > ................................................................................
00:00:27 v #6211 > > │
00:00:27 v #6212 > > ..................................;////////////////////<........................
00:00:27 v #6213 > > ................................................................................
00:00:27 v #6214 > > │
00:00:27 v #6215 > > ................................;////////////////////////<......................
00:00:27 v #6216 > > ................................................................................
00:00:27 v #6217 > > │
00:00:27 v #6218 > > ..............................;////////////////////////////.....................
00:00:27 v #6219 > > ................................................................................
00:00:27 v #6220 > > │
00:00:27 v #6221 > > ............................;////////////////////////////////...................
00:00:27 v #6222 > > ..........;;//..................................................................
00:00:27 v #6223 > > │
00:00:27 v #6224 > > ..........................;////////////////////////////////////.................
00:00:27 v #6225 > > ........;;//////................................................................
00:00:27 v #6226 > > │
00:00:27 v #6227 > > ........................;///////////////////////////////////////<...............
00:00:27 v #6228 > > .....;;;//////////..............................................................
00:00:27 v #6229 > > │
00:00:27 v #6230 > > ......................;///////////////////////////////////////////<.............
00:00:27 v #6231 > > ...\;;//////////////....................;<......................................
00:00:27 v #6232 > > │
00:00:27 v #6233 > > ....................;;//////////////////////////////////////////////<...........
00:00:27 v #6234 > > ..;;;/////////////////...............;;;///<....................................
00:00:27 v #6235 > > │
00:00:27 v #6236 > > ..................;;>////////////////////////////////////////////////...........
00:00:27 v #6237 > > ;;;/////////////////////...........;;;///////<..................................
00:00:27 v #6238 > > │
00:00:27 v #6239 > > ................;;>>>>>//////////////////////////////////////////////.........;;
00:00:27 v #6240 > > ;;>/////////////////////..........;;;//////////.................................
00:00:27 v #6241 > > │
00:00:27 v #6242 > > ...............;;>>>>>>>>//////////////////////////////////////////.........\;;>
00:00:27 v #6243 > > >>>>>//////////////////..........;;>>>>////////.................................
00:00:27 v #6244 > > │
00:00:27 v #6245 > > ..............;>>>>>>>>>>>>///////////////////////////////////////...........>>>
00:00:27 v #6246 > > >>>>>>>///////////////.............>>>>>>////...................................
00:00:27 v #6247 > > │
00:00:27 v #6248 > > ................>>>>>>>>>>>>>////////////////////////////////////...............
00:00:27 v #6249 > > >>>>>>>>>>//////////.................>>>>>/.....................................
00:00:27 v #6250 > > │
00:00:27 v #6251 > > ..................>>>>>>>>>>>>>>///////////////////////////////.................
00:00:27 v #6252 > > .\>>>>>>>>>////////...................=.........................................
00:00:27 v #6253 > > │
00:00:27 v #6254 > > ....................\>>>>>>>>>>>>>////////////////////////////..................
00:00:27 v #6255 > > ....>>>>>>>>>////...............................................................
00:00:27 v #6256 > > │
00:00:27 v #6257 > > .......................>>>>>>>>>>>>>/////////////////////////...................
00:00:27 v #6258 > > ......>>>>>>>>>/................................................................
00:00:27 v #6259 > > │
00:00:27 v #6260 > > .........................>>>>>>>>>>>>>/////////////////////.....................
00:00:27 v #6261 > > ................................................................................
00:00:27 v #6262 > > │
00:00:27 v #6263 > > ...........................>>>>>>>>>>>>>//////////////////......................
00:00:27 v #6264 > > ................................................................................
00:00:27 v #6265 > > │
00:00:27 v #6266 > > .............................>>>>>>>>>>>>>///////////////.......................
00:00:27 v #6267 > > ................................................................................
00:00:27 v #6268 > > │
00:00:27 v #6269 > > ...............................>>>>>>>>>>>>>>//////////.........................
00:00:27 v #6270 > > ................................................................................
00:00:27 v #6271 > > │
00:00:27 v #6272 > > ..................................>>>>>>>>>>>>>///////..........................
00:00:27 v #6273 > > ................................................................................
00:00:27 v #6274 > > │
00:00:27 v #6275 > > ....................................=>>>>>>>>>>>>////...........................
00:00:27 v #6276 > > ................................................................................
00:00:27 v #6277 > > │
00:00:27 v #6278 > > ............................................=>>>>>/.............................
00:00:27 v #6279 > > ................................................................................
00:00:27 v #6280 > > │
00:00:27 v #6281 > > ................................................................................
00:00:27 v #6282 > > ................................................................................
00:00:27 v #6283 > > │
00:00:27 v #6284 > > ................................................................................
00:00:27 v #6285 > > ................................................................................
00:00:27 v #6286 > > │
00:00:27 v #6287 > > ................................................................................
00:00:27 v #6288 > > ................................................................................
00:00:27 v #6289 > > │
00:00:27 v #6290 > > ................................................................................
00:00:27 v #6291 > > ................................................................................
00:00:27 v #6292 > > │
00:00:27 v #6293 > > ................................................................................
00:00:27 v #6294 > > ................................................................................
00:00:27 v #6295 > > │
00:00:27 v #6296 > > ................................................................................
00:00:27 v #6297 > > ................................................................................
00:00:27 v #6298 > > │
00:00:27 v #6299 > > ................................................................................
00:00:27 v #6300 > > ................................................................................
00:00:27 v #6301 > > │
00:00:27 v #6302 > > ................................................................................
00:00:27 v #6303 > > ................................................................................
00:00:27 v #6304 > > │
00:00:27 v #6305 > > ................................................................................
00:00:27 v #6306 > > ................................................................................
00:00:27 v #6307 > > │
00:00:27 v #6308 > > │
00:00:27 v #6309 > > ................................................................................
00:00:27 v #6310 > > ................................................................................
00:00:27 v #6311 > > │
00:00:27 v #6312 > > ................................................................................
00:00:27 v #6313 > > ................................................................................
00:00:27 v #6314 > > │
00:00:27 v #6315 > > ................................................................................
00:00:27 v #6316 > > ................................................................................
00:00:27 v #6317 > > │
00:00:27 v #6318 > > ................................................................................
00:00:27 v #6319 > > ................................................................................
00:00:27 v #6320 > > │
00:00:27 v #6321 > > ................................................................................
00:00:27 v #6322 > > ................................................................................
00:00:27 v #6323 > > │
00:00:27 v #6324 > > ................................................................................
00:00:27 v #6325 > > ................................................................................
00:00:27 v #6326 > > │
00:00:27 v #6327 > > ................................................................................
00:00:27 v #6328 > > ................................................................................
00:00:27 v #6329 > > │
00:00:27 v #6330 > > ...........................................;/<..................................
00:00:27 v #6331 > > ................................................................................
00:00:27 v #6332 > > │
00:00:27 v #6333 > > .........................................;;////<................................
00:00:27 v #6334 > > ................................................................................
00:00:27 v #6335 > > │
00:00:27 v #6336 > > .......................................;;////////<..............................
00:00:27 v #6337 > > ................................................................................
00:00:27 v #6338 > > │
00:00:27 v #6339 > > .....................................;;////////////<............................
00:00:27 v #6340 > > ................................................................................
00:00:27 v #6341 > > │
00:00:27 v #6342 > > ...................................;;;///////////////<..........................
00:00:27 v #6343 > > ................................................................................
00:00:27 v #6344 > > │
00:00:27 v #6345 > > .................................;;////////////////////<........................
00:00:27 v #6346 > > ................................................................................
00:00:27 v #6347 > > │
00:00:27 v #6348 > > ................................;;///////////////////////<......................
00:00:27 v #6349 > > ................................................................................
00:00:27 v #6350 > > │
00:00:27 v #6351 > > ..............................;;///////////////////////////<....................
00:00:27 v #6352 > > ................................................................................
00:00:27 v #6353 > > │
00:00:27 v #6354 > > ............................;;///////////////////////////////<..................
00:00:27 v #6355 > > ..........;;//..................................................................
00:00:27 v #6356 > > │
00:00:27 v #6357 > > ..........................;;;//////////////////////////////////.................
00:00:27 v #6358 > > .......;;;//////................................................................
00:00:27 v #6359 > > │
00:00:27 v #6360 > > .........................;;//////////////////////////////////////...............
00:00:27 v #6361 > > .....;;;//////////..............................................................
00:00:27 v #6362 > > │
00:00:27 v #6363 > > .......................;;//////////////////////////////////////////<............
00:00:27 v #6364 > > ...;;;;/////////////....................;/......................................
00:00:27 v #6365 > > │
00:00:27 v #6366 > > .....................;;//////////////////////////////////////////////...........
00:00:27 v #6367 > > .;;;;/////////////////...............;;;////....................................
00:00:27 v #6368 > > │
00:00:27 v #6369 > > ...................;;;///////////////////////////////////////////////...........
00:00:27 v #6370 > > ;;;;////////////////////...........;;;////////..................................
00:00:27 v #6371 > > │
00:00:27 v #6372 > > ..................;;>>>>////////////////////////////////////////////..........;;
00:00:27 v #6373 > > ;;;>////////////////////..........;;;//////////.................................
00:00:27 v #6374 > > │
00:00:27 v #6375 > > ................;;>>>>>>>>////////////////////////////////////////...........;;;
00:00:27 v #6376 > > >>>>>>/////////////////..........;;>>>>///////..................................
00:00:27 v #6377 > > │
00:00:27 v #6378 > > ..............;;>>>>>>>>>>>>/////////////////////////////////////...........;>>>
00:00:27 v #6379 > > >>>>>>>>/////////////.............>>>>>>>>///...................................
00:00:27 v #6380 > > │
00:00:27 v #6381 > > ..............>>>>>>>>>>>>>>>>>/////////////////////////////////...............>
00:00:27 v #6382 > > >>>>>>>>>>//////////................\>>>>>>/....................................
00:00:27 v #6383 > > │
00:00:27 v #6384 > > ................\>>>>>>>>>>>>>>>>//////////////////////////////.................
00:00:27 v #6385 > > .>>>>>>>>>>>///////....................=........................................
00:00:27 v #6386 > > │
00:00:27 v #6387 > > ...................>>>>>>>>>>>>>>>>///////////////////////////..................
00:00:27 v #6388 > > ...>>>>>>>>>>>>///..............................................................
00:00:27 v #6389 > > │
00:00:27 v #6390 > > .....................\>>>>>>>>>>>>>>>>///////////////////////...................
00:00:27 v #6391 > > ......>>>>>>>>>>................................................................
00:00:27 v #6392 > > │
00:00:27 v #6393 > > ........................>>>>>>>>>>>>>>>>////////////////////....................
00:00:27 v #6394 > > ................................................................................
00:00:27 v #6395 > > │
00:00:27 v #6396 > > ..........................>>>>>>>>>>>>>>>>/////////////////.....................
00:00:27 v #6397 > > ................................................................................
00:00:27 v #6398 > > │
00:00:27 v #6399 > > .............................>>>>>>>>>>>>>>>>/////////////......................
00:00:27 v #6400 > > ................................................................................
00:00:27 v #6401 > > │
00:00:27 v #6402 > > ...............................>>>>>>>>>>>>>>>>/////////........................
00:00:27 v #6403 > > ................................................................................
00:00:27 v #6404 > > │
00:00:27 v #6405 > > ..................................>>>>>>>>>>>>>>>>/////.........................
00:00:27 v #6406 > > ................................................................................
00:00:27 v #6407 > > │
00:00:27 v #6408 > > ....................................=>>>>>>>>>>>>>>>//..........................
00:00:27 v #6409 > > ................................................................................
00:00:27 v #6410 > > │
00:00:27 v #6411 > > .................................................>>>>...........................
00:00:27 v #6412 > > ................................................................................
00:00:27 v #6413 > > │
00:00:27 v #6414 > > ................................................................................
00:00:27 v #6415 > > ................................................................................
00:00:27 v #6416 > > │
00:00:27 v #6417 > > ................................................................................
00:00:27 v #6418 > > ................................................................................
00:00:27 v #6419 > > │
00:00:27 v #6420 > > ................................................................................
00:00:27 v #6421 > > ................................................................................
00:00:27 v #6422 > > │
00:00:27 v #6423 > > ................................................................................
00:00:27 v #6424 > > ................................................................................
00:00:27 v #6425 > > │
00:00:27 v #6426 > > ................................................................................
00:00:27 v #6427 > > ................................................................................
00:00:27 v #6428 > > │
00:00:27 v #6429 > > ................................................................................
00:00:27 v #6430 > > ................................................................................
00:00:27 v #6431 > > │
00:00:27 v #6432 > > ................................................................................
00:00:27 v #6433 > > ................................................................................
00:00:27 v #6434 > > │
00:00:27 v #6435 > > ................................................................................
00:00:27 v #6436 > > ................................................................................
00:00:27 v #6437 > > │
00:00:27 v #6438 > > ................................................................................
00:00:27 v #6439 > > ................................................................................
00:00:27 v #6440 > > │
00:00:27 v #6441 > > │
00:00:27 v #6442 > > ................................................................................
00:00:27 v #6443 > > ................................................................................
00:00:27 v #6444 > > │
00:00:27 v #6445 > > ................................................................................
00:00:27 v #6446 > > ................................................................................
00:00:27 v #6447 > > │
00:00:27 v #6448 > > ................................................................................
00:00:27 v #6449 > > ................................................................................
00:00:27 v #6450 > > │
00:00:27 v #6451 > > ................................................................................
00:00:27 v #6452 > > ................................................................................
00:00:27 v #6453 > > │
00:00:27 v #6454 > > ................................................................................
00:00:27 v #6455 > > ................................................................................
00:00:27 v #6456 > > │
00:00:27 v #6457 > > ................................................................................
00:00:27 v #6458 > > ................................................................................
00:00:27 v #6459 > > │
00:00:27 v #6460 > > ................................................................................
00:00:27 v #6461 > > ................................................................................
00:00:27 v #6462 > > │
00:00:27 v #6463 > > ..........................................;//...................................
00:00:27 v #6464 > > ................................................................................
00:00:27 v #6465 > > │
00:00:27 v #6466 > > ........................................;;/////.................................
00:00:27 v #6467 > > ................................................................................
00:00:27 v #6468 > > │
00:00:27 v #6469 > > ......................................;;/////////...............................
00:00:27 v #6470 > > ................................................................................
00:00:27 v #6471 > > │
00:00:27 v #6472 > > ....................................;;;////////////.............................
00:00:27 v #6473 > > ................................................................................
00:00:27 v #6474 > > │
00:00:27 v #6475 > > ..................................;;;////////////////...........................
00:00:27 v #6476 > > ................................................................................
00:00:27 v #6477 > > │
00:00:27 v #6478 > > ................................;;;;///////////////////<........................
00:00:27 v #6479 > > ................................................................................
00:00:27 v #6480 > > │
00:00:27 v #6481 > > ..............................;;;;///////////////////////<......................
00:00:27 v #6482 > > ................................................................................
00:00:27 v #6483 > > │
00:00:27 v #6484 > > .............................;;;;//////////////////////////<....................
00:00:27 v #6485 > > ................................................................................
00:00:27 v #6486 > > │
00:00:27 v #6487 > > ...........................;;;;///////////////////////////////..................
00:00:27 v #6488 > > .........;;;//..................................................................
00:00:27 v #6489 > > │
00:00:27 v #6490 > > ..........................;;;;//////////////////////////////////................
00:00:27 v #6491 > > ......;;;;//////................................................................
00:00:27 v #6492 > > │
00:00:27 v #6493 > > ........................;;;;//////////////////////////////////////..............
00:00:27 v #6494 > > ....;;;;;/////////..............................................................
00:00:27 v #6495 > > │
00:00:27 v #6496 > > ......................;;;;;/////////////////////////////////////////............
00:00:27 v #6497 > > ...;;;;/////////////<..................<;<......................................
00:00:27 v #6498 > > │
00:00:27 v #6499 > > .....................;;;;///////////////////////////////////////////............
00:00:27 v #6500 > > .;;;;;/////////////////..............;;;////....................................
00:00:27 v #6501 > > │
00:00:27 v #6502 > > ...................;;;;;////////////////////////////////////////////............
00:00:27 v #6503 > > ;;;;////////////////////...........;;;;///////..................................
00:00:27 v #6504 > > │
00:00:27 v #6505 > > ..................;;;;;>///////////////////////////////////////////...........;;
00:00:27 v #6506 > > ;;;>////////////////////..........;;;//////////.................................
00:00:27 v #6507 > > │
00:00:27 v #6508 > > ................;;;;;>>>>>////////////////////////////////////////...........;;;
00:00:27 v #6509 > > ;;>>>>/////////////////..........;;;>>>>//////..................................
00:00:27 v #6510 > > │
00:00:27 v #6511 > > ...............;;;>>>>>>>>>>>////////////////////////////////////...........;;>>
00:00:27 v #6512 > > >>>>>>>>>/////////////............>>>>>>>>///...................................
00:00:27 v #6513 > > │
00:00:27 v #6514 > > .............;;;>>>>>>>>>>>>>>>>////////////////////////////////..............>>
00:00:27 v #6515 > > >>>>>>>>>>>/////////................>>>>>>>/....................................
00:00:27 v #6516 > > │
00:00:27 v #6517 > > ..............\>>>>>>>>>>>>>>>>>>>/////////////////////////////.................
00:00:27 v #6518 > > .>>>>>>>>>>>>>/////....................>........................................
00:00:27 v #6519 > > │
00:00:27 v #6520 > > .................>>>>>>>>>>>>>>>>>>>>/////////////////////////..................
00:00:27 v #6521 > > ...>>>>>>>>>>>>>//..............................................................
00:00:27 v #6522 > > │
00:00:27 v #6523 > > ....................>>>>>>>>>>>>>>>>>>>>/////////////////////...................
00:00:27 v #6524 > > ......>>>>>>>>>>>...............................................................
00:00:27 v #6525 > > │
00:00:27 v #6526 > > .......................>>>>>>>>>>>>>>>>>>>//////////////////....................
00:00:27 v #6527 > > ................................................................................
00:00:27 v #6528 > > │
00:00:27 v #6529 > > ..........................>>>>>>>>>>>>>>>>>>>//////////////.....................
00:00:27 v #6530 > > ................................................................................
00:00:27 v #6531 > > │
00:00:27 v #6532 > > ............................>>>>>>>>>>>>>>>>>>>>///////////.....................
00:00:27 v #6533 > > ................................................................................
00:00:27 v #6534 > > │
00:00:27 v #6535 > > ...............................>>>>>>>>>>>>>>>>>>>////////......................
00:00:27 v #6536 > > ................................................................................
00:00:27 v #6537 > > │
00:00:27 v #6538 > > ..................................>>>>>>>>>>>>>>>>>>>////.......................
00:00:27 v #6539 > > ................................................................................
00:00:27 v #6540 > > │
00:00:27 v #6541 > > .....................................>>>>>>>>>>>>>>>>>>/........................
00:00:27 v #6542 > > ................................................................................
00:00:27 v #6543 > > │
00:00:27 v #6544 > > ................................................................................
00:00:27 v #6545 > > ................................................................................
00:00:27 v #6546 > > │
00:00:27 v #6547 > > ................................................................................
00:00:27 v #6548 > > ................................................................................
00:00:27 v #6549 > > │
00:00:27 v #6550 > > ................................................................................
00:00:27 v #6551 > > ................................................................................
00:00:27 v #6552 > > │
00:00:27 v #6553 > > ................................................................................
00:00:27 v #6554 > > ................................................................................
00:00:27 v #6555 > > │
00:00:27 v #6556 > > ................................................................................
00:00:27 v #6557 > > ................................................................................
00:00:27 v #6558 > > │
00:00:27 v #6559 > > ................................................................................
00:00:27 v #6560 > > ................................................................................
00:00:27 v #6561 > > │
00:00:27 v #6562 > > ................................................................................
00:00:27 v #6563 > > ................................................................................
00:00:27 v #6564 > > │
00:00:27 v #6565 > > ................................................................................
00:00:27 v #6566 > > ................................................................................
00:00:27 v #6567 > > │
00:00:27 v #6568 > > ................................................................................
00:00:27 v #6569 > > ................................................................................
00:00:27 v #6570 > > │
00:00:27 v #6571 > > ................................................................................
00:00:27 v #6572 > > ................................................................................
00:00:27 v #6573 > > │
00:00:27 v #6574 > > │
00:00:27 v #6575 > > ................................................................................
00:00:27 v #6576 > > ................................................................................
00:00:27 v #6577 > > │
00:00:27 v #6578 > > ................................................................................
00:00:27 v #6579 > > ................................................................................
00:00:27 v #6580 > > │
00:00:27 v #6581 > > ................................................................................
00:00:27 v #6582 > > ................................................................................
00:00:27 v #6583 > > │
00:00:27 v #6584 > > ................................................................................
00:00:27 v #6585 > > ................................................................................
00:00:27 v #6586 > > │
00:00:27 v #6587 > > ................................................................................
00:00:27 v #6588 > > ................................................................................
00:00:27 v #6589 > > │
00:00:27 v #6590 > > ................................................................................
00:00:27 v #6591 > > ................................................................................
00:00:27 v #6592 > > │
00:00:27 v #6593 > > ................................................................................
00:00:27 v #6594 > > ................................................................................
00:00:27 v #6595 > > │
00:00:27 v #6596 > > .........................................;;/....................................
00:00:27 v #6597 > > ................................................................................
00:00:27 v #6598 > > │
00:00:27 v #6599 > > .......................................;;/////<.................................
00:00:27 v #6600 > > ................................................................................
00:00:27 v #6601 > > │
00:00:27 v #6602 > > .....................................;;;/////////...............................
00:00:27 v #6603 > > ................................................................................
00:00:27 v #6604 > > │
00:00:27 v #6605 > > ...................................;;;;////////////.............................
00:00:27 v #6606 > > ................................................................................
00:00:27 v #6607 > > │
00:00:27 v #6608 > > .................................;;;;;///////////////...........................
00:00:27 v #6609 > > ................................................................................
00:00:27 v #6610 > > │
00:00:27 v #6611 > > ...............................;;;;;///////////////////<........................
00:00:27 v #6612 > > ................................................................................
00:00:27 v #6613 > > │
00:00:27 v #6614 > > .............................;;;;;;//////////////////////<......................
00:00:27 v #6615 > > ................................................................................
00:00:27 v #6616 > > │
00:00:27 v #6617 > > ...........................;;;;;;;//////////////////////////....................
00:00:27 v #6618 > > ................................................................................
00:00:27 v #6619 > > │
00:00:27 v #6620 > > ..........................;;;;;;//////////////////////////////..................
00:00:27 v #6621 > > .........;;//<..................................................................
00:00:27 v #6622 > > │
00:00:27 v #6623 > > .........................;;;;;;/////////////////////////////////................
00:00:27 v #6624 > > ......;;;;//////................................................................
00:00:27 v #6625 > > │
00:00:27 v #6626 > > .......................;;;;;;;////////////////////////////////////<.............
00:00:27 v #6627 > > ...;;;;;;/////////<.............................................................
00:00:27 v #6628 > > │
00:00:27 v #6629 > > ......................;;;;;;;///////////////////////////////////////............
00:00:27 v #6630 > > ..;;;;;//////////////..................;;.......................................
00:00:27 v #6631 > > │
00:00:27 v #6632 > > .....................;;;;;;////////////////////////////////////////.............
00:00:27 v #6633 > > .;;;;;;////////////////.............;;;;////....................................
00:00:27 v #6634 > > │
00:00:27 v #6635 > > ...................;;;;;;;////////////////////////////////////////..............
00:00:27 v #6636 > > ;;;;;;//////////////////...........;;;;///////<.................................
00:00:27 v #6637 > > │
00:00:27 v #6638 > > ..................;;;;;;;/////////////////////////////////////////............\;
00:00:27 v #6639 > > ;;;;///////////////////...........;;;;/////////.................................
00:00:27 v #6640 > > │
00:00:27 v #6641 > > .................;;;;;;;>>>//////////////////////////////////////............;;;
00:00:27 v #6642 > > ;;;>>>>///////////////...........;;;;>>>//////..................................
00:00:27 v #6643 > > │
00:00:27 v #6644 > > ...............;;;;;;>>>>>>>>>>/////////////////////////////////............;;;>
00:00:27 v #6645 > > >>>>>>>>>////////////............\>>>>>>>>>//...................................
00:00:27 v #6646 > > │
00:00:27 v #6647 > > ..............;;;;>>>>>>>>>>>>>>>///////////////////////////////.............>>>
00:00:27 v #6648 > > >>>>>>>>>>>>/////////...............>>>>>>>>....................................
00:00:27 v #6649 > > │
00:00:27 v #6650 > > .............;;>>>>>>>>>>>>>>>>>>>>>///////////////////////////.................
00:00:27 v #6651 > > >>>>>>>>>>>>>>>/////...................>........................................
00:00:27 v #6652 > > │
00:00:27 v #6653 > > ...............>>>>>>>>>>>>>>>>>>>>>>>>///////////////////////..................
00:00:27 v #6654 > > ...>>>>>>>>>>>>>>>/.............................................................
00:00:27 v #6655 > > │
00:00:27 v #6656 > > ..................>>>>>>>>>>>>>>>>>>>>>>>>////////////////////..................
00:00:27 v #6657 > > ......>>>>>>>>>>>/..............................................................
00:00:27 v #6658 > > │
00:00:27 v #6659 > > .....................>>>>>>>>>>>>>>>>>>>>>>>>////////////////...................
00:00:27 v #6660 > > ................................................................................
00:00:27 v #6661 > > │
00:00:27 v #6662 > > ........................>>>>>>>>>>>>>>>>>>>>>>>>////////////....................
00:00:27 v #6663 > > ................................................................................
00:00:27 v #6664 > > │
00:00:27 v #6665 > > ............................>>>>>>>>>>>>>>>>>>>>>>>/////////....................
00:00:27 v #6666 > > ................................................................................
00:00:27 v #6667 > > │
00:00:27 v #6668 > > ...............................>>>>>>>>>>>>>>>>>>>>>>>/////.....................
00:00:27 v #6669 > > ................................................................................
00:00:27 v #6670 > > │
00:00:27 v #6671 > > ..................................>>>>>>>>>>>>>>>>>>>>>>//......................
00:00:27 v #6672 > > ................................................................................
00:00:27 v #6673 > > │
00:00:27 v #6674 > > .....................................>>>>>>>>>>>>>>>>>>>>/......................
00:00:27 v #6675 > > ................................................................................
00:00:27 v #6676 > > │
00:00:27 v #6677 > > ................................................................................
00:00:27 v #6678 > > ................................................................................
00:00:27 v #6679 > > │
00:00:27 v #6680 > > ................................................................................
00:00:27 v #6681 > > ................................................................................
00:00:27 v #6682 > > │
00:00:27 v #6683 > > ................................................................................
00:00:27 v #6684 > > ................................................................................
00:00:27 v #6685 > > │
00:00:27 v #6686 > > ................................................................................
00:00:27 v #6687 > > ................................................................................
00:00:27 v #6688 > > │
00:00:27 v #6689 > > ................................................................................
00:00:27 v #6690 > > ................................................................................
00:00:27 v #6691 > > │
00:00:27 v #6692 > > ................................................................................
00:00:27 v #6693 > > ................................................................................
00:00:27 v #6694 > > │
00:00:27 v #6695 > > ................................................................................
00:00:27 v #6696 > > ................................................................................
00:00:27 v #6697 > > │
00:00:27 v #6698 > > ................................................................................
00:00:27 v #6699 > > ................................................................................
00:00:27 v #6700 > > │
00:00:27 v #6701 > > ................................................................................
00:00:27 v #6702 > > ................................................................................
00:00:27 v #6703 > > │
00:00:27 v #6704 > > ................................................................................
00:00:27 v #6705 > > ................................................................................
00:00:27 v #6706 > > │
00:00:27 v #6707 > > │
00:00:27 v #6708 > > ................................................................................
00:00:27 v #6709 > > ................................................................................
00:00:27 v #6710 > > │
00:00:27 v #6711 > > ................................................................................
00:00:27 v #6712 > > ................................................................................
00:00:27 v #6713 > > │
00:00:27 v #6714 > > ................................................................................
00:00:27 v #6715 > > ................................................................................
00:00:27 v #6716 > > │
00:00:27 v #6717 > > ................................................................................
00:00:27 v #6718 > > ................................................................................
00:00:27 v #6719 > > │
00:00:27 v #6720 > > ................................................................................
00:00:27 v #6721 > > ................................................................................
00:00:27 v #6722 > > │
00:00:27 v #6723 > > ................................................................................
00:00:27 v #6724 > > ................................................................................
00:00:27 v #6725 > > │
00:00:27 v #6726 > > ................................................................................
00:00:27 v #6727 > > ................................................................................
00:00:27 v #6728 > > │
00:00:27 v #6729 > > ........................................;;/<....................................
00:00:27 v #6730 > > ................................................................................
00:00:27 v #6731 > > │
00:00:27 v #6732 > > ......................................;;;/////..................................
00:00:27 v #6733 > > ................................................................................
00:00:27 v #6734 > > │
00:00:27 v #6735 > > ....................................;;;;////////................................
00:00:27 v #6736 > > ................................................................................
00:00:27 v #6737 > > │
00:00:27 v #6738 > > ..................................;;;;;////////////.............................
00:00:27 v #6739 > > ................................................................................
00:00:27 v #6740 > > │
00:00:27 v #6741 > > ................................;;;;;;///////////////...........................
00:00:27 v #6742 > > ................................................................................
00:00:27 v #6743 > > │
00:00:27 v #6744 > > ..............................;;;;;;;//////////////////.........................
00:00:27 v #6745 > > ................................................................................
00:00:27 v #6746 > > │
00:00:27 v #6747 > > ............................;;;;;;;;//////////////////////......................
00:00:27 v #6748 > > ................................................................................
00:00:27 v #6749 > > │
00:00:27 v #6750 > > ..........................;;;;;;;;//////////////////////////....................
00:00:27 v #6751 > > ................................................................................
00:00:27 v #6752 > > │
00:00:27 v #6753 > > .........................;;;;;;;;/////////////////////////////<.................
00:00:27 v #6754 > > ........;;;//...................................................................
00:00:27 v #6755 > > │
00:00:27 v #6756 > > ........................;;;;;;;;////////////////////////////////<...............
00:00:27 v #6757 > > .....;;;;;//////................................................................
00:00:27 v #6758 > > │
00:00:27 v #6759 > > .......................;;;;;;;;////////////////////////////////////.............
00:00:27 v #6760 > > ..<;;;;;;/////////<.............................................................
00:00:27 v #6761 > > │
00:00:27 v #6762 > > .....................\;;;;;;;;/////////////////////////////////////.............
00:00:27 v #6763 > > ..;;;;;;/////////////..................;;<......................................
00:00:27 v #6764 > > │
00:00:27 v #6765 > > ....................;;;;;;;;;/////////////////////////////////////..............
00:00:27 v #6766 > > \;;;;;;/////////////////............;;;;////....................................
00:00:27 v #6767 > > │
00:00:27 v #6768 > > ...................;;;;;;;;;//////////////////////////////////////..............
00:00:27 v #6769 > > ;;;;;;/////////////////............;;;;////////.................................
00:00:27 v #6770 > > │
00:00:27 v #6771 > > ..................;;;;;;;;;//////////////////////////////////////.............\;
00:00:27 v #6772 > > ;;;;;//////////////////...........;;;;/////////.................................
00:00:27 v #6773 > > │
00:00:27 v #6774 > > .................;;;;;;;;;;>/////////////////////////////////////............\;;
00:00:27 v #6775 > > ;;;;;>>///////////////...........;;;;;>>>/////..................................
00:00:27 v #6776 > > │
00:00:27 v #6777 > > ................;;;;;;;;>>>>>>>>////////////////////////////////............\;;;
00:00:27 v #6778 > > ;>>>>>>>>>////////////...........;>>>>>>>>>//...................................
00:00:27 v #6779 > > │
00:00:27 v #6780 > > ...............;;;;;;>>>>>>>>>>>>>>/////////////////////////////............;>>>
00:00:27 v #6781 > > >>>>>>>>>>>>>////////...............>>>>>>>>/...................................
00:00:27 v #6782 > > │
00:00:27 v #6783 > > ..............;;;;>>>>>>>>>>>>>>>>>>>>/////////////////////////................>
00:00:27 v #6784 > > >>>>>>>>>>>>>>>>////...................=>.......................................
00:00:27 v #6785 > > │
00:00:27 v #6786 > > .............;>>>>>>>>>>>>>>>>>>>>>>>>>>>//////////////////////.................
00:00:27 v #6787 > > ..\>>>>>>>>>>>>>>>>.............................................................
00:00:27 v #6788 > > │
00:00:27 v #6789 > > ................>>>>>>>>>>>>>>>>>>>>>>>>>>>>//////////////////..................
00:00:27 v #6790 > > ......>>>>>>>>>=>...............................................................
00:00:27 v #6791 > > │
00:00:27 v #6792 > > ....................>>>>>>>>>>>>>>>>>>>>>>>>>>>>//////////////..................
00:00:27 v #6793 > > ................................................................................
00:00:27 v #6794 > > │
00:00:27 v #6795 > > .......................>>>>>>>>>>>>>>>>>>>>>>>>>>>///////////...................
00:00:27 v #6796 > > ................................................................................
00:00:27 v #6797 > > │
00:00:27 v #6798 > > ...........................>>>>>>>>>>>>>>>>>>>>>>>>>>>///////...................
00:00:27 v #6799 > > ................................................................................
00:00:27 v #6800 > > │
00:00:27 v #6801 > > ..............................>>>>>>>>>>>>>>>>>>>>>>>>>>>///....................
00:00:27 v #6802 > > ................................................................................
00:00:27 v #6803 > > │
00:00:27 v #6804 > > ..................................>>>>>>>>>>>>>>>>>>>>>>>>>/....................
00:00:27 v #6805 > > ................................................................................
00:00:27 v #6806 > > │
00:00:27 v #6807 > > ......................................>>>>>=>=>>................................
00:00:27 v #6808 > > ................................................................................
00:00:27 v #6809 > > │
00:00:27 v #6810 > > ................................................................................
00:00:27 v #6811 > > ................................................................................
00:00:27 v #6812 > > │
00:00:27 v #6813 > > ................................................................................
00:00:27 v #6814 > > ................................................................................
00:00:27 v #6815 > > │
00:00:27 v #6816 > > ................................................................................
00:00:27 v #6817 > > ................................................................................
00:00:27 v #6818 > > │
00:00:27 v #6819 > > ................................................................................
00:00:27 v #6820 > > ................................................................................
00:00:27 v #6821 > > │
00:00:27 v #6822 > > ................................................................................
00:00:27 v #6823 > > ................................................................................
00:00:27 v #6824 > > │
00:00:27 v #6825 > > ................................................................................
00:00:27 v #6826 > > ................................................................................
00:00:27 v #6827 > > │
00:00:27 v #6828 > > ................................................................................
00:00:27 v #6829 > > ................................................................................
00:00:27 v #6830 > > │
00:00:27 v #6831 > > ................................................................................
00:00:27 v #6832 > > ................................................................................
00:00:27 v #6833 > > │
00:00:27 v #6834 > > ................................................................................
00:00:27 v #6835 > > ................................................................................
00:00:27 v #6836 > > │
00:00:27 v #6837 > > ................................................................................
00:00:27 v #6838 > > ................................................................................
00:00:27 v #6839 > > │
00:00:27 v #6840 > > │
00:00:27 v #6841 > > ................................................................................
00:00:27 v #6842 > > ................................................................................
00:00:27 v #6843 > > │
00:00:27 v #6844 > > ................................................................................
00:00:27 v #6845 > > ................................................................................
00:00:27 v #6846 > > │
00:00:27 v #6847 > > ................................................................................
00:00:27 v #6848 > > ................................................................................
00:00:27 v #6849 > > │
00:00:27 v #6850 > > ................................................................................
00:00:27 v #6851 > > ................................................................................
00:00:27 v #6852 > > │
00:00:27 v #6853 > > ................................................................................
00:00:27 v #6854 > > ................................................................................
00:00:27 v #6855 > > │
00:00:27 v #6856 > > ................................................................................
00:00:27 v #6857 > > ................................................................................
00:00:27 v #6858 > > │
00:00:27 v #6859 > > ................................................................................
00:00:27 v #6860 > > ................................................................................
00:00:27 v #6861 > > │
00:00:27 v #6862 > > .......................................;;//.....................................
00:00:27 v #6863 > > ................................................................................
00:00:27 v #6864 > > │
00:00:27 v #6865 > > .....................................;;;/////<..................................
00:00:27 v #6866 > > ................................................................................
00:00:27 v #6867 > > │
00:00:27 v #6868 > > ...................................;;;;/////////................................
00:00:27 v #6869 > > ................................................................................
00:00:27 v #6870 > > │
00:00:27 v #6871 > > .................................;;;;;;///////////<.............................
00:00:27 v #6872 > > ................................................................................
00:00:27 v #6873 > > │
00:00:27 v #6874 > > ...............................;;;;;;;///////////////...........................
00:00:27 v #6875 > > ................................................................................
00:00:27 v #6876 > > │
00:00:27 v #6877 > > .............................;;;;;;;;//////////////////.........................
00:00:27 v #6878 > > ................................................................................
00:00:27 v #6879 > > │
00:00:27 v #6880 > > ...........................;;;;;;;;;//////////////////////......................
00:00:27 v #6881 > > ................................................................................
00:00:27 v #6882 > > │
00:00:27 v #6883 > > .........................;;;;;;;;;;/////////////////////////....................
00:00:27 v #6884 > > ................................................................................
00:00:27 v #6885 > > │
00:00:27 v #6886 > > ........................;;;;;;;;;;;///////////////////////////<.................
00:00:27 v #6887 > > ........;;;//...................................................................
00:00:27 v #6888 > > │
00:00:27 v #6889 > > .......................;;;;;;;;;;;///////////////////////////////...............
00:00:27 v #6890 > > .....;;;;;//////................................................................
00:00:27 v #6891 > > │
00:00:27 v #6892 > > ......................;;;;;;;;;;;/////////////////////////////////..............
00:00:27 v #6893 > > ..;;;;;;;/////////<.............................................................
00:00:27 v #6894 > > │
00:00:27 v #6895 > > .....................;;;;;;;;;;;//////////////////////////////////..............
00:00:27 v #6896 > > .;;;;;;;/////////////..................;;<......................................
00:00:27 v #6897 > > │
00:00:27 v #6898 > > ....................;;;;;;;;;;;//////////////////////////////////...............
00:00:27 v #6899 > > ;;;;;;;;///////////////.............;;;;////<...................................
00:00:27 v #6900 > > │
00:00:27 v #6901 > > ...................;;;;;;;;;;;;//////////////////////////////////..............;
00:00:27 v #6902 > > ;;;;;;;////////////////............;;;;////////.................................
00:00:27 v #6903 > > │
00:00:27 v #6904 > > ..................;;;;;;;;;;;;///////////////////////////////////..............;
00:00:27 v #6905 > > ;;;;;;/////////////////...........;;;;;////////.................................
00:00:27 v #6906 > > │
00:00:27 v #6907 > > .................;;;;;;;;;;;;///////////////////////////////////..............;;
00:00:27 v #6908 > > ;;;;;;>>//////////////...........;;;;;>>>/////..................................
00:00:27 v #6909 > > │
00:00:27 v #6910 > > ................;;;;;;;;;;;;>>>>>///////////////////////////////.............;;;
00:00:27 v #6911 > > ;;>>>>>>>>>///////////...........;>>>>>>>>>>//..................................
00:00:27 v #6912 > > │
00:00:27 v #6913 > > ...............;;;;;;;;;>>>>>>>>>>>>////////////////////////////............\;;>
00:00:27 v #6914 > > >>>>>>>>>>>>>>///////...............>>>>>>>>>...................................
00:00:27 v #6915 > > │
00:00:27 v #6916 > > ..............;;;;;;;>>>>>>>>>>>>>>>>>>>///////////////////////...............\>
00:00:27 v #6917 > > >>>>>>>>>>>>>>>>>>///..................>=.......................................
00:00:27 v #6918 > > │
00:00:27 v #6919 > > .............;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>////////////////////.................
00:00:27 v #6920 > > ..>>>>>>>>>>>>>>>>>>............................................................
00:00:27 v #6921 > > │
00:00:27 v #6922 > > .............>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/////////////////.................
00:00:27 v #6923 > > ......>>>>>>>>>>=...............................................................
00:00:27 v #6924 > > │
00:00:27 v #6925 > > .................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>////////////..................
00:00:27 v #6926 > > ................................................................................
00:00:27 v #6927 > > │
00:00:27 v #6928 > > ......................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>////////..................
00:00:27 v #6929 > > ................................................................................
00:00:27 v #6930 > > │
00:00:27 v #6931 > > ..........................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/////..................
00:00:27 v #6932 > > ................................................................................
00:00:27 v #6933 > > │
00:00:27 v #6934 > > ..............................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//..................
00:00:27 v #6935 > > ................................................................................
00:00:27 v #6936 > > │
00:00:27 v #6937 > > ..................................>>>>>>>>>>>>>>>>>>>>>>>>>>>...................
00:00:27 v #6938 > > ................................................................................
00:00:27 v #6939 > > │
00:00:27 v #6940 > > ......................................>>>==.....................................
00:00:27 v #6941 > > ................................................................................
00:00:27 v #6942 > > │
00:00:27 v #6943 > > ................................................................................
00:00:27 v #6944 > > ................................................................................
00:00:27 v #6945 > > │
00:00:27 v #6946 > > ................................................................................
00:00:27 v #6947 > > ................................................................................
00:00:27 v #6948 > > │
00:00:27 v #6949 > > ................................................................................
00:00:27 v #6950 > > ................................................................................
00:00:27 v #6951 > > │
00:00:27 v #6952 > > ................................................................................
00:00:27 v #6953 > > ................................................................................
00:00:27 v #6954 > > │
00:00:27 v #6955 > > ................................................................................
00:00:27 v #6956 > > ................................................................................
00:00:27 v #6957 > > │
00:00:27 v #6958 > > ................................................................................
00:00:27 v #6959 > > ................................................................................
00:00:27 v #6960 > > │
00:00:27 v #6961 > > ................................................................................
00:00:27 v #6962 > > ................................................................................
00:00:27 v #6963 > > │
00:00:27 v #6964 > > ................................................................................
00:00:27 v #6965 > > ................................................................................
00:00:27 v #6966 > > │
00:00:27 v #6967 > > ................................................................................
00:00:27 v #6968 > > ................................................................................
00:00:27 v #6969 > > │
00:00:27 v #6970 > > ................................................................................
00:00:27 v #6971 > > ................................................................................
00:00:27 v #6972 > > │
00:00:27 v #6973 > > │
00:00:27 v #6974 > > ................................................................................
00:00:27 v #6975 > > ................................................................................
00:00:27 v #6976 > > │
00:00:27 v #6977 > > ................................................................................
00:00:27 v #6978 > > ................................................................................
00:00:27 v #6979 > > │
00:00:27 v #6980 > > ................................................................................
00:00:27 v #6981 > > ................................................................................
00:00:27 v #6982 > > │
00:00:27 v #6983 > > ................................................................................
00:00:27 v #6984 > > ................................................................................
00:00:27 v #6985 > > │
00:00:27 v #6986 > > ................................................................................
00:00:27 v #6987 > > ................................................................................
00:00:27 v #6988 > > │
00:00:27 v #6989 > > ................................................................................
00:00:27 v #6990 > > ................................................................................
00:00:27 v #6991 > > │
00:00:27 v #6992 > > ................................................................................
00:00:27 v #6993 > > ................................................................................
00:00:27 v #6994 > > │
00:00:27 v #6995 > > .......................................;;/<.....................................
00:00:27 v #6996 > > ................................................................................
00:00:27 v #6997 > > │
00:00:27 v #6998 > > ....................................<;;;/////...................................
00:00:27 v #6999 > > ................................................................................
00:00:27 v #7000 > > │
00:00:27 v #7001 > > ..................................;;;;;////////<................................
00:00:27 v #7002 > > ................................................................................
00:00:27 v #7003 > > │
00:00:27 v #7004 > > ................................;;;;;;;///////////..............................
00:00:27 v #7005 > > ................................................................................
00:00:27 v #7006 > > │
00:00:27 v #7007 > > ..............................;;;;;;;;//////////////<...........................
00:00:27 v #7008 > > ................................................................................
00:00:27 v #7009 > > │
00:00:27 v #7010 > > ............................;;;;;;;;;;/////////////////.........................
00:00:27 v #7011 > > ................................................................................
00:00:27 v #7012 > > │
00:00:27 v #7013 > > ..........................;;;;;;;;;;;////////////////////<......................
00:00:27 v #7014 > > ................................................................................
00:00:27 v #7015 > > │
00:00:27 v #7016 > > ........................;;;;;;;;;;;;////////////////////////....................
00:00:27 v #7017 > > ................................................................................
00:00:27 v #7018 > > │
00:00:27 v #7019 > > .......................;;;;;;;;;;;;;///////////////////////////.................
00:00:27 v #7020 > > ........;;///...................................................................
00:00:27 v #7021 > > │
00:00:27 v #7022 > > ......................;;;;;;;;;;;;;//////////////////////////////...............
00:00:27 v #7023 > > .....;;;;;//////................................................................
00:00:27 v #7024 > > │
00:00:27 v #7025 > > .....................;;;;;;;;;;;;;;//////////////////////////////...............
00:00:27 v #7026 > > ..;;;;;;;//////////.............................................................
00:00:27 v #7027 > > │
00:00:27 v #7028 > > ....................;;;;;;;;;;;;;;///////////////////////////////...............
00:00:27 v #7029 > > \;;;;;;;;////////////<.................;;.......................................
00:00:27 v #7030 > > │
00:00:27 v #7031 > > ...................\;;;;;;;;;;;;;///////////////////////////////................
00:00:27 v #7032 > > ;;;;;;;;///////////////............<;;;;////<...................................
00:00:27 v #7033 > > │
00:00:27 v #7034 > > ...................;;;;;;;;;;;;;;///////////////////////////////...............;
00:00:27 v #7035 > > ;;;;;;;;///////////////...........\;;;;////////.................................
00:00:27 v #7036 > > │
00:00:27 v #7037 > > ..................;;;;;;;;;;;;;;////////////////////////////////..............\;
00:00:27 v #7038 > > ;;;;;;;///////////////............;;;;;////////.................................
00:00:27 v #7039 > > │
00:00:27 v #7040 > > .................;;;;;;;;;;;;;;;////////////////////////////////..............;;
00:00:27 v #7041 > > ;;;;;;;>//////////////...........\;;;;;>>>////..................................
00:00:27 v #7042 > > │
00:00:27 v #7043 > > ................;;;;;;;;;;;;;;;>>>//////////////////////////////.............;;;
00:00:27 v #7044 > > ;;;;>>>>>>>>//////////...........;;>>>>>>>>>>/..................................
00:00:27 v #7045 > > │
00:00:27 v #7046 > > ................;;;;;;;;;;;;>>>>>>>>>>//////////////////////////.............;;;
00:00:27 v #7047 > > >>>>>>>>>>>>>>>>/////..............\>>>>>>>>/...................................
00:00:27 v #7048 > > │
00:00:27 v #7049 > > ...............;;;;;;;;;>>>>>>>>>>>>>>>>>>//////////////////////.............\>>
00:00:27 v #7050 > > >>>>>>>>>>>>>>>>>>>//..................\=.......................................
00:00:27 v #7051 > > │
00:00:27 v #7052 > > ..............;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>//////////////////................
00:00:27 v #7053 > > .\>>>>>>>>>>>>>>>>>>/...........................................................
00:00:27 v #7054 > > │
00:00:27 v #7055 > > .............;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/////////////.................
00:00:27 v #7056 > > ......>>>>>>>>>>................................................................
00:00:27 v #7057 > > │
00:00:27 v #7058 > > ...............>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//////////.................
00:00:27 v #7059 > > ................................................................................
00:00:27 v #7060 > > │
00:00:27 v #7061 > > ...................\>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//////.................
00:00:27 v #7062 > > ................................................................................
00:00:27 v #7063 > > │
00:00:27 v #7064 > > ........................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//.................
00:00:27 v #7065 > > ................................................................................
00:00:27 v #7066 > > │
00:00:27 v #7067 > > .............................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/.................
00:00:27 v #7068 > > ................................................................................
00:00:27 v #7069 > > │
00:00:27 v #7070 > > ..................................>>>>>>>>>>>>>>>>>>>>==........................
00:00:27 v #7071 > > ................................................................................
00:00:27 v #7072 > > │
00:00:27 v #7073 > > .......................................>==......................................
00:00:27 v #7074 > > ................................................................................
00:00:27 v #7075 > > │
00:00:27 v #7076 > > ................................................................................
00:00:27 v #7077 > > ................................................................................
00:00:27 v #7078 > > │
00:00:27 v #7079 > > ................................................................................
00:00:27 v #7080 > > ................................................................................
00:00:27 v #7081 > > │
00:00:27 v #7082 > > ................................................................................
00:00:27 v #7083 > > ................................................................................
00:00:27 v #7084 > > │
00:00:27 v #7085 > > ................................................................................
00:00:27 v #7086 > > ................................................................................
00:00:27 v #7087 > > │
00:00:27 v #7088 > > ................................................................................
00:00:27 v #7089 > > ................................................................................
00:00:27 v #7090 > > │
00:00:27 v #7091 > > ................................................................................
00:00:27 v #7092 > > ................................................................................
00:00:27 v #7093 > > │
00:00:27 v #7094 > > ................................................................................
00:00:27 v #7095 > > ................................................................................
00:00:27 v #7096 > > │
00:00:27 v #7097 > > ................................................................................
00:00:27 v #7098 > > ................................................................................
00:00:27 v #7099 > > │
00:00:27 v #7100 > > ................................................................................
00:00:27 v #7101 > > ................................................................................
00:00:27 v #7102 > > │
00:00:27 v #7103 > > ................................................................................
00:00:27 v #7104 > > ................................................................................
00:00:27 v #7105 > > │
00:00:27 v #7106 > > │
00:00:27 v #7107 > > ................................................................................
00:00:27 v #7108 > > ................................................................................
00:00:27 v #7109 > > │
00:00:27 v #7110 > > ................................................................................
00:00:27 v #7111 > > ................................................................................
00:00:27 v #7112 > > │
00:00:27 v #7113 > > ................................................................................
00:00:27 v #7114 > > ................................................................................
00:00:27 v #7115 > > │
00:00:27 v #7116 > > ................................................................................
00:00:27 v #7117 > > ................................................................................
00:00:27 v #7118 > > │
00:00:27 v #7119 > > ................................................................................
00:00:27 v #7120 > > ................................................................................
00:00:27 v #7121 > > │
00:00:27 v #7122 > > ................................................................................
00:00:27 v #7123 > > ................................................................................
00:00:27 v #7124 > > │
00:00:27 v #7125 > > ................................................................................
00:00:27 v #7126 > > ................................................................................
00:00:27 v #7127 > > │
00:00:27 v #7128 > > ......................................;;//......................................
00:00:27 v #7129 > > ................................................................................
00:00:27 v #7130 > > │
00:00:27 v #7131 > > ....................................;;;;////....................................
00:00:27 v #7132 > > ................................................................................
00:00:27 v #7133 > > │
00:00:27 v #7134 > > ..................................;;;;;////////.................................
00:00:27 v #7135 > > ................................................................................
00:00:27 v #7136 > > │
00:00:27 v #7137 > > ...............................<;;;;;;;///////////..............................
00:00:27 v #7138 > > ................................................................................
00:00:27 v #7139 > > │
00:00:27 v #7140 > > .............................;;;;;;;;;//////////////............................
00:00:27 v #7141 > > ................................................................................
00:00:27 v #7142 > > │
00:00:27 v #7143 > > ...........................;;;;;;;;;;;/////////////////.........................
00:00:27 v #7144 > > ................................................................................
00:00:27 v #7145 > > │
00:00:27 v #7146 > > .........................;;;;;;;;;;;;;///////////////////<......................
00:00:27 v #7147 > > ................................................................................
00:00:27 v #7148 > > │
00:00:27 v #7149 > > .......................;;;;;;;;;;;;;;///////////////////////....................
00:00:27 v #7150 > > ................................................................................
00:00:27 v #7151 > > │
00:00:27 v #7152 > > .....................\;;;;;;;;;;;;;;;//////////////////////////.................
00:00:27 v #7153 > > .......<;;//<...................................................................
00:00:27 v #7154 > > │
00:00:27 v #7155 > > .....................;;;;;;;;;;;;;;;;///////////////////////////................
00:00:27 v #7156 > > ....<;;;;;//////................................................................
00:00:27 v #7157 > > │
00:00:27 v #7158 > > ....................;;;;;;;;;;;;;;;;////////////////////////////................
00:00:27 v #7159 > > ..;;;;;;;;/////////.............................................................
00:00:27 v #7160 > > │
00:00:27 v #7161 > > ....................;;;;;;;;;;;;;;;;////////////////////////////................
00:00:27 v #7162 > > ;;;;;;;;;/////////////.................;/.......................................
00:00:27 v #7163 > > │
00:00:27 v #7164 > > ...................;;;;;;;;;;;;;;;;/////////////////////////////...............;
00:00:27 v #7165 > > ;;;;;;;;;/////////////.............<;;;;////<...................................
00:00:27 v #7166 > > │
00:00:27 v #7167 > > ..................;;;;;;;;;;;;;;;;;/////////////////////////////...............;
00:00:27 v #7168 > > ;;;;;;;;//////////////............\;;;;;//////..................................
00:00:27 v #7169 > > │
00:00:27 v #7170 > > ..................;;;;;;;;;;;;;;;;;/////////////////////////////..............\;
00:00:27 v #7171 > > ;;;;;;;;//////////////............;;;;;///////..................................
00:00:27 v #7172 > > │
00:00:27 v #7173 > > .................;;;;;;;;;;;;;;;;;//////////////////////////////..............;;
00:00:27 v #7174 > > ;;;;;;;;>/////////////............;;;;;>>>////..................................
00:00:27 v #7175 > > │
00:00:27 v #7176 > > .................;;;;;;;;;;;;;;;;;>/////////////////////////////..............;;
00:00:27 v #7177 > > ;;;;;;>>>>>>>/////////...........;;;>>>>>>>>>/..................................
00:00:27 v #7178 > > │
00:00:27 v #7179 > > ................;;;;;;;;;;;;;;;;>>>>>>>/////////////////////////.............;;;
00:00:27 v #7180 > > ;;>>>>>>>>>>>>>>>/////.............\>>>>>>>>>=..................................
00:00:27 v #7181 > > │
00:00:27 v #7182 > > ...............;;;;;;;;;;;;;>>>>>>>>>>>>>>>/////////////////////.............;>>
00:00:27 v #7183 > > >>>>>>>>>>>>>>>>>>>>>/..................>.......................................
00:00:27 v #7184 > > │
00:00:27 v #7185 > > ...............;;;;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>////////////////................
00:00:27 v #7186 > > .>>>>>>>>>>>>>>>>>>>/...........................................................
00:00:27 v #7187 > > │
00:00:27 v #7188 > > ..............;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>////////////................
00:00:27 v #7189 > > ......>>>>>>>>>>................................................................
00:00:27 v #7190 > > │
00:00:27 v #7191 > > ..............;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>////////................
00:00:27 v #7192 > > ................................................................................
00:00:27 v #7193 > > │
00:00:27 v #7194 > > .................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>////................
00:00:27 v #7195 > > ................................................................................
00:00:27 v #7196 > > │
00:00:27 v #7197 > > ......................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>................
00:00:27 v #7198 > > ................................................................................
00:00:27 v #7199 > > │
00:00:27 v #7200 > > ............................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>..................
00:00:27 v #7201 > > ................................................................................
00:00:27 v #7202 > > │
00:00:27 v #7203 > > ..................................>>>>>>>>>>>>>>>>>>............................
00:00:27 v #7204 > > ................................................................................
00:00:27 v #7205 > > │
00:00:27 v #7206 > > .......................................>=.......................................
00:00:27 v #7207 > > ................................................................................
00:00:27 v #7208 > > │
00:00:27 v #7209 > > ................................................................................
00:00:27 v #7210 > > ................................................................................
00:00:27 v #7211 > > │
00:00:27 v #7212 > > ................................................................................
00:00:27 v #7213 > > ................................................................................
00:00:27 v #7214 > > │
00:00:27 v #7215 > > ................................................................................
00:00:27 v #7216 > > ................................................................................
00:00:27 v #7217 > > │
00:00:27 v #7218 > > ................................................................................
00:00:27 v #7219 > > ................................................................................
00:00:27 v #7220 > > │
00:00:27 v #7221 > > ................................................................................
00:00:27 v #7222 > > ................................................................................
00:00:27 v #7223 > > │
00:00:27 v #7224 > > ................................................................................
00:00:27 v #7225 > > ................................................................................
00:00:27 v #7226 > > │
00:00:27 v #7227 > > ................................................................................
00:00:27 v #7228 > > ................................................................................
00:00:27 v #7229 > > │
00:00:27 v #7230 > > ................................................................................
00:00:27 v #7231 > > ................................................................................
00:00:27 v #7232 > > │
00:00:27 v #7233 > > ................................................................................
00:00:27 v #7234 > > ................................................................................
00:00:27 v #7235 > > │
00:00:27 v #7236 > > ................................................................................
00:00:27 v #7237 > > ................................................................................
00:00:27 v #7238 > > │
00:00:27 v #7239 > > │
00:00:27 v #7240 > > ................................................................................
00:00:27 v #7241 > > ................................................................................
00:00:27 v #7242 > > │
00:00:27 v #7243 > > ................................................................................
00:00:27 v #7244 > > ................................................................................
00:00:27 v #7245 > > │
00:00:27 v #7246 > > ................................................................................
00:00:27 v #7247 > > ................................................................................
00:00:27 v #7248 > > │
00:00:27 v #7249 > > ................................................................................
00:00:27 v #7250 > > ................................................................................
00:00:27 v #7251 > > │
00:00:27 v #7252 > > ................................................................................
00:00:27 v #7253 > > ................................................................................
00:00:27 v #7254 > > │
00:00:27 v #7255 > > ................................................................................
00:00:27 v #7256 > > ................................................................................
00:00:27 v #7257 > > │
00:00:27 v #7258 > > ................................................................................
00:00:27 v #7259 > > ................................................................................
00:00:27 v #7260 > > │
00:00:27 v #7261 > > .....................................<;;/<......................................
00:00:27 v #7262 > > ................................................................................
00:00:27 v #7263 > > │
00:00:27 v #7264 > > ...................................;;;;;///<....................................
00:00:27 v #7265 > > ................................................................................
00:00:27 v #7266 > > │
00:00:27 v #7267 > > .................................;;;;;;///////<.................................
00:00:27 v #7268 > > ................................................................................
00:00:27 v #7269 > > │
00:00:27 v #7270 > > ...............................;;;;;;;;//////////<..............................
00:00:27 v #7271 > > ................................................................................
00:00:27 v #7272 > > │
00:00:27 v #7273 > > ............................<;;;;;;;;;;/////////////............................
00:00:27 v #7274 > > ................................................................................
00:00:27 v #7275 > > │
00:00:27 v #7276 > > ..........................<;;;;;;;;;;;;///////////////<.........................
00:00:27 v #7277 > > ................................................................................
00:00:27 v #7278 > > │
00:00:27 v #7279 > > ........................;;;;;;;;;;;;;;;//////////////////<......................
00:00:27 v #7280 > > ................................................................................
00:00:27 v #7281 > > │
00:00:27 v #7282 > > ......................;;;;;;;;;;;;;;;;//////////////////////....................
00:00:27 v #7283 > > ................................................................................
00:00:27 v #7284 > > │
00:00:27 v #7285 > > ....................;;;;;;;;;;;;;;;;;;////////////////////////..................
00:00:27 v #7286 > > .......;;;//....................................................................
00:00:27 v #7287 > > │
00:00:27 v #7288 > > ....................;;;;;;;;;;;;;;;;;;/////////////////////////.................
00:00:27 v #7289 > > ....;;;;;;//////................................................................
00:00:27 v #7290 > > │
00:00:27 v #7291 > > ...................;;;;;;;;;;;;;;;;;;;/////////////////////////.................
00:00:27 v #7292 > > .<;;;;;;;;////////<.............................................................
00:00:27 v #7293 > > │
00:00:27 v #7294 > > ...................;;;;;;;;;;;;;;;;;;;/////////////////////////................;
00:00:27 v #7295 > > ;;;;;;;;;;////////////.................;/.......................................
00:00:27 v #7296 > > │
00:00:27 v #7297 > > ..................\;;;;;;;;;;;;;;;;;;//////////////////////////................;
00:00:27 v #7298 > > ;;;;;;;;;/////////////.............<;;;;////<...................................
00:00:27 v #7299 > > │
00:00:27 v #7300 > > ..................;;;;;;;;;;;;;;;;;;;//////////////////////////................;
00:00:27 v #7301 > > ;;;;;;;;;/////////////............;;;;;;//////..................................
00:00:27 v #7302 > > │
00:00:27 v #7303 > > ..................;;;;;;;;;;;;;;;;;;;///////////////////////////..............;;
00:00:27 v #7304 > > ;;;;;;;;;/////////////............;;;;;;//////..................................
00:00:27 v #7305 > > │
00:00:27 v #7306 > > .................;;;;;;;;;;;;;;;;;;;;///////////////////////////..............;;
00:00:27 v #7307 > > ;;;;;;;;;>////////////............;;;;;;>>////..................................
00:00:27 v #7308 > > │
00:00:27 v #7309 > > .................;;;;;;;;;;;;;;;;;;;;///////////////////////////..............;;
00:00:27 v #7310 > > ;;;;;;;;>>>>/>////////............;;;>>>>>>>>>..................................
00:00:27 v #7311 > > │
00:00:27 v #7312 > > ................;;;;;;;;;;;;;;;;;;;;>>>>>///////////////////////.............\;;
00:00:27 v #7313 > > ;;;>>>>>>>>>>>>>/>////.............>>>>>>>>>=...................................
00:00:27 v #7314 > > │
00:00:27 v #7315 > > ................;;;;;;;;;;;;;;;;>>>>>>>>>>>>>>//////////////////.............;;;
00:00:27 v #7316 > > >>>>>>>>>>>>>>>>>>>>>>..................=.......................................
00:00:27 v #7317 > > │
00:00:27 v #7318 > > ...............;;;;;;;;;;;;>>>>>>>>>>>>>>>>>>>>>>>//////////////................
00:00:27 v #7319 > > >>>>>>>>>>>>>>>>>>>>>...........................................................
00:00:27 v #7320 > > │
00:00:27 v #7321 > > ...............;;;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//////////...............
00:00:27 v #7322 > > .....\>>>>>>>>=.................................................................
00:00:27 v #7323 > > │
00:00:27 v #7324 > > ..............;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/////...............
00:00:27 v #7325 > > ................................................................................
00:00:27 v #7326 > > │
00:00:27 v #7327 > > ..............;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/...............
00:00:27 v #7328 > > ................................................................................
00:00:27 v #7329 > > │
00:00:27 v #7330 > > ....................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>...............
00:00:27 v #7331 > > ................................................................................
00:00:27 v #7332 > > │
00:00:27 v #7333 > > ..........................\>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>......................
00:00:27 v #7334 > > ................................................................................
00:00:27 v #7335 > > │
00:00:27 v #7336 > > .................................>>>>>>>>>>>>>>>>...............................
00:00:27 v #7337 > > ................................................................................
00:00:27 v #7338 > > │
00:00:27 v #7339 > > ........................................=.......................................
00:00:27 v #7340 > > ................................................................................
00:00:27 v #7341 > > │
00:00:27 v #7342 > > ................................................................................
00:00:27 v #7343 > > ................................................................................
00:00:27 v #7344 > > │
00:00:27 v #7345 > > ................................................................................
00:00:27 v #7346 > > ................................................................................
00:00:27 v #7347 > > │
00:00:27 v #7348 > > ................................................................................
00:00:27 v #7349 > > ................................................................................
00:00:27 v #7350 > > │
00:00:27 v #7351 > > ................................................................................
00:00:27 v #7352 > > ................................................................................
00:00:27 v #7353 > > │
00:00:27 v #7354 > > ................................................................................
00:00:27 v #7355 > > ................................................................................
00:00:27 v #7356 > > │
00:00:27 v #7357 > > ................................................................................
00:00:27 v #7358 > > ................................................................................
00:00:27 v #7359 > > │
00:00:27 v #7360 > > ................................................................................
00:00:27 v #7361 > > ................................................................................
00:00:27 v #7362 > > │
00:00:27 v #7363 > > ................................................................................
00:00:27 v #7364 > > ................................................................................
00:00:27 v #7365 > > │
00:00:27 v #7366 > > ................................................................................
00:00:27 v #7367 > > ................................................................................
00:00:27 v #7368 > > │
00:00:27 v #7369 > > ................................................................................
00:00:27 v #7370 > > ................................................................................
00:00:27 v #7371 > > │
00:00:27 v #7372 > > │
00:00:27 v #7373 > > ................................................................................
00:00:27 v #7374 > > ................................................................................
00:00:27 v #7375 > > │
00:00:27 v #7376 > > ................................................................................
00:00:27 v #7377 > > ................................................................................
00:00:27 v #7378 > > │
00:00:27 v #7379 > > ................................................................................
00:00:27 v #7380 > > ................................................................................
00:00:27 v #7381 > > │
00:00:27 v #7382 > > ................................................................................
00:00:27 v #7383 > > ................................................................................
00:00:27 v #7384 > > │
00:00:27 v #7385 > > ................................................................................
00:00:27 v #7386 > > ................................................................................
00:00:27 v #7387 > > │
00:00:27 v #7388 > > ................................................................................
00:00:27 v #7389 > > ................................................................................
00:00:27 v #7390 > > │
00:00:27 v #7391 > > ................................................................................
00:00:27 v #7392 > > ................................................................................
00:00:27 v #7393 > > │
00:00:27 v #7394 > > .....................................;;//.......................................
00:00:27 v #7395 > > ................................................................................
00:00:27 v #7396 > > │
00:00:27 v #7397 > > ...................................;;;;////<....................................
00:00:27 v #7398 > > ................................................................................
00:00:27 v #7399 > > │
00:00:27 v #7400 > > ................................<;;;;;;///////..................................
00:00:27 v #7401 > > ................................................................................
00:00:27 v #7402 > > │
00:00:27 v #7403 > > ..............................<;;;;;;;;/////////<...............................
00:00:27 v #7404 > > ................................................................................
00:00:27 v #7405 > > │
00:00:27 v #7406 > > ............................;;;;;;;;;;;////////////<............................
00:00:27 v #7407 > > ................................................................................
00:00:27 v #7408 > > │
00:00:27 v #7409 > > ..........................;;;;;;;;;;;;;///////////////<.........................
00:00:27 v #7410 > > ................................................................................
00:00:27 v #7411 > > │
00:00:27 v #7412 > > .......................<;;;;;;;;;;;;;;;//////////////////.......................
00:00:27 v #7413 > > ................................................................................
00:00:27 v #7414 > > │
00:00:27 v #7415 > > .....................;;;;;;;;;;;;;;;;;;/////////////////////....................
00:00:27 v #7416 > > ................................................................................
00:00:27 v #7417 > > │
00:00:27 v #7418 > > ...................;;;;;;;;;;;;;;;;;;;;//////////////////////...................
00:00:27 v #7419 > > .......;;;//....................................................................
00:00:27 v #7420 > > │
00:00:27 v #7421 > > ...................;;;;;;;;;;;;;;;;;;;;///////////////////////..................
00:00:27 v #7422 > > ....;;;;;;//////................................................................
00:00:27 v #7423 > > │
00:00:27 v #7424 > > ..................\;;;;;;;;;;;;;;;;;;;;///////////////////////..................
00:00:27 v #7425 > > .;;;;;;;;;/////////.............................................................
00:00:27 v #7426 > > │
00:00:27 v #7427 > > ..................;;;;;;;;;;;;;;;;;;;;;///////////////////////.................;
00:00:27 v #7428 > > ;;;;;;;;;;///////////..................;/.......................................
00:00:27 v #7429 > > │
00:00:27 v #7430 > > ..................;;;;;;;;;;;;;;;;;;;;;////////////////////////................;
00:00:27 v #7431 > > ;;;;;;;;;;////////////.............<;;;;////<...................................
00:00:27 v #7432 > > │
00:00:27 v #7433 > > ..................;;;;;;;;;;;;;;;;;;;;;////////////////////////...............\;
00:00:27 v #7434 > > ;;;;;;;;;;////////////............;;;;;;//////..................................
00:00:27 v #7435 > > │
00:00:27 v #7436 > > .................;;;;;;;;;;;;;;;;;;;;;;////////////////////////...............;;
00:00:27 v #7437 > > ;;;;;;;;;;////////////............;;;;;;//////..................................
00:00:27 v #7438 > > │
00:00:27 v #7439 > > .................;;;;;;;;;;;;;;;;;;;;;;/////////////////////////..............;;
00:00:27 v #7440 > > ;;;;;;;;;;>///////////............;;;;;;>>>///..................................
00:00:27 v #7441 > > │
00:00:27 v #7442 > > .................;;;;;;;;;;;;;;;;;;;;;;/////////////////////////..............;;
00:00:27 v #7443 > > ;;;;;;;;;>>>>>>///////............;;;;>>>>>>>>..................................
00:00:27 v #7444 > > │
00:00:27 v #7445 > > ................;;;;;;;;;;;;;;;;;;;;;;;>>>>/////////////////////..............;;
00:00:27 v #7446 > > ;;;;;;>>>>>>>>>>>>>>//.............>>>>>>>>>=...................................
00:00:27 v #7447 > > │
00:00:27 v #7448 > > ................;;;;;;;;;;;;;;;;;;;>>>>>>>>>>>>>/////////////////.............;;
00:00:27 v #7449 > > ;;>>>>>>>>>>>>>>>>>>>>..................=.......................................
00:00:27 v #7450 > > │
00:00:27 v #7451 > > ................;;;;;;;;;;;;;;;;>>>>>>>>>>>>>>>>>>>>>////////////..............\
00:00:27 v #7452 > > >>>>>>>>>>>>>>>>>>>>............................................................
00:00:27 v #7453 > > │
00:00:27 v #7454 > > ...............\;;;;;;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>///////...............
00:00:27 v #7455 > > .....>>>>>>>>>=.................................................................
00:00:27 v #7456 > > │
00:00:27 v #7457 > > ...............;;;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>///..............
00:00:27 v #7458 > > ................................................................................
00:00:27 v #7459 > > │
00:00:27 v #7460 > > ...............;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>..............
00:00:27 v #7461 > > ................................................................................
00:00:27 v #7462 > > │
00:00:27 v #7463 > > ................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>=..................
00:00:27 v #7464 > > ................................................................................
00:00:27 v #7465 > > │
00:00:27 v #7466 > > ........................\>>>>>>>>>>>>>>>>>>>>>>>>>>>>>=.........................
00:00:27 v #7467 > > ................................................................................
00:00:27 v #7468 > > │
00:00:27 v #7469 > > .................................\>>>>>>>>>>>>>=................................
00:00:27 v #7470 > > ................................................................................
00:00:27 v #7471 > > │
00:00:27 v #7472 > > ................................................................................
00:00:27 v #7473 > > ................................................................................
00:00:27 v #7474 > > │
00:00:27 v #7475 > > ................................................................................
00:00:27 v #7476 > > ................................................................................
00:00:27 v #7477 > > │
00:00:27 v #7478 > > ................................................................................
00:00:27 v #7479 > > ................................................................................
00:00:27 v #7480 > > │
00:00:27 v #7481 > > ................................................................................
00:00:27 v #7482 > > ................................................................................
00:00:27 v #7483 > > │
00:00:27 v #7484 > > ................................................................................
00:00:27 v #7485 > > ................................................................................
00:00:27 v #7486 > > │
00:00:27 v #7487 > > ................................................................................
00:00:27 v #7488 > > ................................................................................
00:00:27 v #7489 > > │
00:00:27 v #7490 > > ................................................................................
00:00:27 v #7491 > > ................................................................................
00:00:27 v #7492 > > │
00:00:27 v #7493 > > ................................................................................
00:00:27 v #7494 > > ................................................................................
00:00:27 v #7495 > > │
00:00:27 v #7496 > > ................................................................................
00:00:27 v #7497 > > ................................................................................
00:00:27 v #7498 > > │
00:00:27 v #7499 > > ................................................................................
00:00:27 v #7500 > > ................................................................................
00:00:27 v #7501 > > │
00:00:27 v #7502 > > ................................................................................
00:00:27 v #7503 > > ................................................................................
00:00:27 v #7504 > > │
00:00:27 v #7505 > > │
00:00:27 v #7506 > 00:00:26 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 450048 }
00:00:27 v #7507 > 00:00:26 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/cube.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/cube.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:28 v #7508 > 00:00:26 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/cube.dib.ipynb to html
00:00:28 v #7509 > 00:00:26 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:28 v #7510 > 00:00:26 v #7 !   validate(nb)
00:00:28 v #7511 > 00:00:27 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:28 v #7512 > 00:00:27 v #9 !   return _pygments_highlight(
00:00:29 v #7513 > 00:00:27 v #10 ! [NbConvertApp] Writing 798012 bytes to /home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/cube.dib.html
00:00:29 v #7514 > 00:00:27 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 914 }
00:00:29 v #7515 > 00:00:27 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 914 }
00:00:29 v #7516 > 00:00:27 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/cube.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/cube.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:29 v #7517 > 00:00:28 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:00:29 v #7518 > 00:00:28 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:00:29 v #7519 > 00:00:28 d #16 spiral.run / dib / { exit_code = 0; result_length = 451021 }
00:00:29 d #7520 runtime.execute_with_options_async / { exit_code = 0; output_length = 468722 }
00:00:29 d #3 main / executeCommand / exitCode: 0 / command: ../../../../deps/spiral/workspace/target/release/spiral dib --path cube.dib
00:00:29 v #43 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 d #1 writeDibCode / output: Spi / path: cube.dib
00:00:00 d #2 parseDibCode / output: Spi / file: cube.dib
00:00:00 v #1 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"; options = { command = dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = Some <fun:compiler@87-4>; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:00:00 v #2 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #2 > 00:00:00 d #1 pwd: /home/runner/work/polyglot/polyglot
00:00:00 v #3 > 00:00:00 d #2 dllPath: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release
00:00:00 v #4 > 00:00:00 d #3 targetDir: /home/runner/work/polyglot/polyglot/target/spiral_Eval
00:00:00 v #3 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #4 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #5 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #6 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #7 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #8 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #9 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #10 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #11 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #12 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #13 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #14 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #15 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #16 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #17 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #18 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #19 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #20 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #21 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #22 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #23 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #24 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #25 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #26 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #27 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #28 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #29 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #30 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #31 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #32 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #33 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #34 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #35 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #36 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #37 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #38 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #5 > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:00 v #39 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:01 v #40 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:01 v #41 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:01 v #1 Supervisor.sendJson / port: 13805 / json: {"Ping":true} / result:
00:00:01 v #2 Supervisor.awaitCompiler / Ping / result: 'Some null' / port: 13805 / retry: 1
00:00:01 v #6 > Server bound to: http://localhost:13805
00:00:01 v #42 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:01 d #3 Supervisor.buildFile / takeWhileInclusive / path: cube.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:01 d #4 Supervisor.buildFile / AsyncSeq.scan / path: cube.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:01 d #5 Supervisor.buildFile / takeWhileInclusive / path: cube.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:01 v #6 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # cube\n\n/// ## cube\n\n/// ### get_width\ninl get_width () =\n    160i...  }\n    : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/cube.spi"}} / result:
00:00:01 v #7 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/cube.spi"}} / result:
00:00:02 d #8 Supervisor.buildFile / AsyncSeq.scan / path: cube.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:02 d #9 Supervisor.buildFile / takeWhileInclusive / path: cube.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:02 d #10 Supervisor.buildFile / AsyncSeq.scan / path: cube.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:02 d #11 Supervisor.buildFile / takeWhileInclusive / path: cube.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:03 d #12 Supervisor.buildFile / AsyncSeq.scan / path: cube.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:03 d #13 Supervisor.buildFile / takeWhileInclusive / path: cube.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:03 d #14 Supervisor.buildFile / AsyncSeq.scan / path: cube.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:03 d #15 Supervisor.buildFile / takeWhileInclusive / path: cube.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:04 d #16 Supervisor.buildFile / AsyncSeq.scan / path: cube.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:04 d #17 Supervisor.buildFile / takeWhileInclusive / path: cube.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:04 d #18 Supervisor.buildFile / AsyncSeq.scan / path: cube.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:04 d #19 Supervisor.buildFile / takeWhileInclusive / path: cube.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:04 d #20 Supervisor.buildFile / AsyncSeq.scan / path: cube.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>]
type std_string_String = class end
#else
type std_string_String = string
#endif

#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::env::VarError")>]
#endif
type std_env_VarError = class end
type IOsEnviron = abstract environ: x: unit -> obj
type [<Struct>] US0 =
    | US0_0
    | US0_1
    | US0_2
and [<Struct>] US1 =
    | US1_0 of f0_0 : US0
    | US1_1 of f1_0 : US0
    | US1_2 of f2_0 : US0
    | US1_3 of f3_0 : US0
    | US1_4 of f4_0 : US0
and [<Struct>] US2 =
    | US2_0 of f0_0 : string
    | US2_1
and Mut0 = {mutable l0 : float}
and [<Struct>] US3 =
    | US3_0 of f0_0 : int32 * f0_1 : float * f0_2 : char
    | US3_1
and [<Struct>] US4 =
    ...x<unit>
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    null |> unbox<unit>
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    null |> unbox<unit>
    #endif
#if FABLE_COMPILER_PYTHON
    let v151 : (Async<unit> -> unit) = Async.RunSynchronously
    v151 v79
    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
    let v152 : (Async<unit> -> unit) = Async.RunSynchronously
    v152 v79
    #endif
#else
    let v153 : (Async<unit> -> unit) = Async.RunSynchronously
    v153 v79
    #endif
    // run_target_args' is_unit
    #endif
    // run_target_args' is_unit
    ()
let v0 : ((string []) -> unit) = closure0()
let main_ = v0 
#if !FABLE_COMPILER_RUST
main_ [||]
#else
let main args = main_ [||]; 0
#endif
()

00:00:04 d #21 Supervisor.buildFile / takeWhileInclusive / path: cube.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>]
type std_string_String = class end
#else
type std_string_String = string
#endif

#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::env::VarError")>]
#endif
type std_env_VarError = class end
type IOsEnviron = abstract environ: x: unit -> obj
type [<Struct>] US0 =
    | US0_0
    | US0_1
    | US0_2
and [<Struct>] US1 =
    | US1_0 of f0_0 : US0
    | US1_1 of f1_0 : US0
    | US1_2 of f2_0 : US0
    | US1_3 of f3_0 : US0
    | US1_4 of f4_0 : US0
and [<Struct>] US2 =
    | US2_0 of f0_0 : string
    | US2_1
and Mut0 = {mutable l0 : float}
and [<Struct>] US3 =
    | US3_0 of f0_0 : int32 * f0_1 : float * f0_2 : char
    | US3_1
and [<Struct>] US4 =
    ...x<unit>
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    null |> unbox<unit>
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    null |> unbox<unit>
    #endif
#if FABLE_COMPILER_PYTHON
    let v151 : (Async<unit> -> unit) = Async.RunSynchronously
    v151 v79
    #endif
#if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON
    let v152 : (Async<unit> -> unit) = Async.RunSynchronously
    v152 v79
    #endif
#else
    let v153 : (Async<unit> -> unit) = Async.RunSynchronously
    v153 v79
    #endif
    // run_target_args' is_unit
    #endif
    // run_target_args' is_unit
    ()
let v0 : ((string []) -> unit) = closure0()
let main_ = v0 
#if !FABLE_COMPILER_RUST
main_ [||]
#else
let main args = main_ [||]; 0
#endif
()

00:00:04 d #22 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite
00:00:04 v #43 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #1 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"; options = { command = dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = Some <fun:compiler@87-4>; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:00:00 v #2 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #2 > 00:00:00 d #1 pwd: /home/runner/work/polyglot/polyglot
00:00:00 v #3 > 00:00:00 d #2 dllPath: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release
00:00:00 v #4 > 00:00:00 d #3 targetDir: /home/runner/work/polyglot/polyglot/target/spiral_Eval
00:00:00 v #3 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #4 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #5 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #6 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #7 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #8 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #9 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #10 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #11 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #12 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #13 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #14 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #15 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #16 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #17 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #18 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #19 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #20 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #21 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #22 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #23 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #24 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #25 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #26 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #27 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #28 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #29 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #30 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #31 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #32 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #33 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #34 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #35 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #36 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #37 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #5 > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:01 v #38 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:01 v #39 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:01 v #40 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:01 v #1 Supervisor.sendJson / port: 13805 / json: {"Ping":true} / result:
00:00:01 v #2 Supervisor.awaitCompiler / Ping / result: 'Some null' / port: 13805 / retry: 1
00:00:01 v #6 > Server bound to: http://localhost:13805
00:00:01 v #41 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:01 d #3 Supervisor.buildFile / takeWhileInclusive / path: cube.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:01 d #4 Supervisor.buildFile / AsyncSeq.scan / path: cube.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:01 d #5 Supervisor.buildFile / takeWhileInclusive / path: cube.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:01 v #6 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # cube\n\n/// ## cube\n\n/// ### get_width\ninl get_width () =\n    160i...  }\n    : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/cube.spi"}} / result:
00:00:01 v #7 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Python \u002B Cuda","uri":"file:///home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/cube.spi"}} / result:
00:00:02 d #8 Supervisor.buildFile / AsyncSeq.scan / path: cube.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:02 d #9 Supervisor.buildFile / takeWhileInclusive / path: cube.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:02 d #10 Supervisor.buildFile / AsyncSeq.scan / path: cube.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:02 d #11 Supervisor.buildFile / takeWhileInclusive / path: cube.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:03 d #12 Supervisor.buildFile / AsyncSeq.scan / path: cube.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:03 d #13 Supervisor.buildFile / takeWhileInclusive / path: cube.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:03 d #14 Supervisor.buildFile / AsyncSeq.scan / path: cube.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:03 d #15 Supervisor.buildFile / takeWhileInclusive / path: cube.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:04 d #16 Supervisor.buildFile / AsyncSeq.scan / path: cube.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:04 d #17 Supervisor.buildFile / takeWhileInclusive / path: cube.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:04 d #18 Supervisor.buildFile / AsyncSeq.scan / path: cube.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:

00:00:04 d #19 Supervisor.buildFile / takeWhileInclusive / path: cube.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:

00:00:04 d #20 Supervisor.buildFile / AsyncSeq.scan / path: cube.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / outputContent:
kernel = r"""
"""
class static_array():
    def __init__(self, length):
        self.ptr = []
        for _ in range(length):
            self.ptr.append(None)

    def __getitem__(self, index):
        assert 0 <= index < len(self.ptr), "The get index needs to be in range."
        return self.ptr[index]
    
    def __setitem__(self, index, value):
        assert 0 <= index < len(self.ptr), "The set index needs to be in range."
        self.ptr[index] = value

class static_array_list(static_array):
    def __init__(self, length):
        super().__init__(length)
        self.length = 0

    def __getitem__(self, index):
        assert 0 <= index < self.length, "The get index needs to be in range."
        return self.ptr[index]
    
    d... = 0 == v60
    del v60
    if v61:
        v62 = "AUTOMATION"
        v63 = method1(v62)
        del v62
        v64 = len(v63)
        del v63
        v65 = 0 == v64
        del v64
        v66 = v65
    else:
        v66 = False
    del v61
    if v66:
        v75 = -1
    else:
        v75 = 50
    del v66
    v76 = 1
    v77 = 0.0
    v78 = 0.0
    v79 = 0.0
    v80 = method2(v75, v76, v77, v78, v79)
    del v75, v76, v77, v78, v79
    asyncio.run(v80())
    del v80
    return 

def main():
    r = main_body()
    if cuda: cp.cuda.get_current_stream().synchronize() # This line is here so the `__trap()` calls on the kernel aren't missed.
    return r

if __name__ == '__main__': result = main(); None if result is None else print(result)

00:00:04 d #21 Supervisor.buildFile / takeWhileInclusive / path: cube.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:
kernel = r"""
"""
class static_array():
    def __init__(self, length):
        self.ptr = []
        for _ in range(length):
            self.ptr.append(None)

    def __getitem__(self, index):
        assert 0 <= index < len(self.ptr), "The get index needs to be in range."
        return self.ptr[index]
    
    def __setitem__(self, index, value):
        assert 0 <= index < len(self.ptr), "The set index needs to be in range."
        self.ptr[index] = value

class static_array_list(static_array):
    def __init__(self, length):
        super().__init__(length)
        self.length = 0

    def __getitem__(self, index):
        assert 0 <= index < self.length, "The get index needs to be in range."
        return self.ptr[index]
    
    d... = 0 == v60
    del v60
    if v61:
        v62 = "AUTOMATION"
        v63 = method1(v62)
        del v62
        v64 = len(v63)
        del v63
        v65 = 0 == v64
        del v64
        v66 = v65
    else:
        v66 = False
    del v61
    if v66:
        v75 = -1
    else:
        v75 = 50
    del v66
    v76 = 1
    v77 = 0.0
    v78 = 0.0
    v79 = 0.0
    v80 = method2(v75, v76, v77, v78, v79)
    del v75, v76, v77, v78, v79
    asyncio.run(v80())
    del v80
    return 

def main():
    r = main_body()
    if cuda: cp.cuda.get_current_stream().synchronize() # This line is here so the `__trap()` calls on the kernel aren't missed.
    return r

if __name__ == '__main__': result = main(); None if result is None else print(result)

00:00:04 d #22 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite
00:00:04 v #42 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 d #1 persistCodeProject / packages: [Fable.Core] / modules: [lib/spiral/common.fsx; lib/spiral/sm.fsx; lib/spiral/crypto.fsx; ... ] / name: cube / hash:  / code.Length: 48391
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/cube
polyglot/lib/spiral/lib.ps1/GetTargetDir / targetDir: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/cube
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../..
polyglot/lib/spiral/lib.ps1/BuildFable / TargetDir: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/cube / ProjectName: cube / Language: rs / Runtime:  / root: /home/runner/work/polyglot/polyglot/lib/spiral/../..
Fable 5.0.0-alpha.2: F# to Rust compiler (status: alpha)

Thanks to the contributor! @jmmk
Stand with Ukraine! https://standwithukraine.com.ua/

Parsing target/Builder/cube/cube.fsproj...
Project and references (14 source files) parsed in 3009ms

Started Fable compilation...

Fable compilation finished in 6966ms

./lib/spiral/common.fsx(2117,0): (2117,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/sm.fsx(556,0): (556,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/async_.fsx(250,0): (250,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/threading.fsx(139,0): (139,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/crypto.fsx(2344,0): (2344,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/date_time.fsx(2527,0): (2527,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/platform.fsx(120,0): (120,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/networking.fsx(4935,0): (4935,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/trace.fsx(2150,0): (2150,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/runtime.fsx(7101,0): (7101,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/file_system.fsx(17438,0): (17438,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/fsharp/Common.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/cube/target/rs/lib/fsharp/Common.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/fsharp/Common.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/common.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/cube/target/rs/lib/spiral/common.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/common.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/date_time.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/cube/target/rs/lib/spiral/date_time.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/date_time.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/async_.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/cube/target/rs/lib/spiral/async_.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/async_.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/platform.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/cube/target/rs/lib/spiral/platform.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/platform.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/runtime.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/cube/target/rs/lib/spiral/runtime.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/runtime.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/threading.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/cube/target/rs/lib/spiral/threading.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/threading.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/networking.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/cube/target/rs/lib/spiral/networking.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/networking.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/file_system.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/cube/target/rs/lib/spiral/file_system.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/file_system.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/sm.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/cube/target/rs/lib/spiral/sm.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/sm.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/crypto.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/cube/target/rs/lib/spiral/crypto.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/crypto.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/trace.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/cube/target/rs/lib/spiral/trace.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/trace.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/lib.rs
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/cube/target/rs/lib/spiral/lib.rs / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/lib.rs
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../..
polyglot/lib/spiral/lib.ps1/BuildFable / TargetDir: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/cube / ProjectName: cube / Language: ts / Runtime:  / root: /home/runner/work/polyglot/polyglot/lib/spiral/../..
Fable 5.0.0-alpha.2: F# to TypeScript compiler
Minimum @fable-org/fable-library-ts version (when installed from npm): 1.7.0

Thanks to the contributor! @irium
Stand with Ukraine! https://standwithukraine.com.ua/

Parsing target/Builder/cube/cube.fsproj...
Project and references (14 source files) parsed in 2084ms

Started Fable compilation...

Fable compilation finished in 6531ms

./lib/spiral/sm.fsx(38,20): (38,49) warning FABLE: CultureInfo argument is ignored
./lib/spiral/sm.fsx(304,20): (304,51) warning FABLE: CultureInfo argument is ignored
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/fsharp/Common.ts
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/cube/target/ts/lib/fsharp/Common.ts / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/fsharp/Common.ts
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/common.ts
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/cube/target/ts/lib/spiral/common.ts / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/common.ts
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/date_time.ts
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/cube/target/ts/lib/spiral/date_time.ts / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/date_time.ts
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/async_.ts
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/cube/target/ts/lib/spiral/async_.ts / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/async_.ts
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/platform.ts
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/cube/target/ts/lib/spiral/platform.ts / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/platform.ts
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/runtime.ts
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/cube/target/ts/lib/spiral/runtime.ts / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/runtime.ts
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/threading.ts
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/cube/target/ts/lib/spiral/threading.ts / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/threading.ts
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/networking.ts
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/cube/target/ts/lib/spiral/networking.ts / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/networking.ts
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/file_system.ts
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/cube/target/ts/lib/spiral/file_system.ts / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/file_system.ts
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/sm.ts
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/cube/target/ts/lib/spiral/sm.ts / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/sm.ts
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/crypto.ts
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/cube/target/ts/lib/spiral/crypto.ts / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/crypto.ts
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/trace.ts
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/cube/target/ts/lib/spiral/trace.ts / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/trace.ts
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/lib.ts
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/cube/target/ts/lib/spiral/lib.ts / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/lib.ts
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../..
polyglot/lib/spiral/lib.ps1/BuildFable / TargetDir: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/cube / ProjectName: cube / Language: py / Runtime:  / root: /home/runner/work/polyglot/polyglot/lib/spiral/../..
Fable 5.0.0-alpha.2: F# to Python compiler (status: beta)

Thanks to the contributor! @i-p
Stand with Ukraine! https://standwithukraine.com.ua/

Parsing target/Builder/cube/cube.fsproj...
Project and references (14 source files) parsed in 2080ms

Started Fable compilation...

Fable compilation finished in 6615ms

./lib/spiral/sm.fsx(38,20): (38,49) warning FABLE: CultureInfo argument is ignored
./lib/spiral/sm.fsx(304,20): (304,51) warning FABLE: CultureInfo argument is ignored
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/fsharp/common.py
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/cube/target/py/lib/fsharp/common.py / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/fsharp/common.py
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/common.py
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/cube/target/py/lib/spiral/common.py / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/common.py
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/date_time.py
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/cube/target/py/lib/spiral/date_time.py / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/date_time.py
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/async_.py
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/cube/target/py/lib/spiral/async_.py / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/async_.py
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/platform_.py
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/cube/target/py/lib/spiral/platform_.py / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/platform_.py
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/runtime.py
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/cube/target/py/lib/spiral/runtime.py / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/runtime.py
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/threading_.py
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/cube/target/py/lib/spiral/threading_.py / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/threading_.py
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/networking.py
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/cube/target/py/lib/spiral/networking.py / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/networking.py
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/file_system.py
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/cube/target/py/lib/spiral/file_system.py / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/file_system.py
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/sm.py
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/cube/target/py/lib/spiral/sm.py / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/sm.py
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/crypto.py
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/cube/target/py/lib/spiral/crypto.py / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/crypto.py
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/trace.py
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/cube/target/py/lib/spiral/trace.py / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/trace.py
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/lib.py
polyglot/lib/spiral/lib.ps1/CopyItem / from: /home/runner/work/polyglot/polyglot/lib/spiral/../../target/Builder/cube/target/py/lib/spiral/lib.py / to: /home/runner/work/polyglot/polyglot/lib/spiral/../../lib/spiral/lib.py
bun install v1.1.43 (76800b04)

+ @playwright/test@1.44.0
+ @types/chrome@0.0.268
+ npm-check-updates@17.0.0-5
+ buffer@6.0.3

11 packages installed [104.00ms]
[INFO]: 🎯  Checking for the Wasm target...
[INFO]: 🌀  Compiling to Wasm...
   Compiling proc-macro2 v1.0.92
   Compiling unicode-ident v1.0.14
   Compiling autocfg v1.4.0
   Compiling serde v1.0.216
   Compiling cfg-if v1.0.0
   Compiling wasm-bindgen-shared v0.2.99
   Compiling once_cell v1.20.2
   Compiling log v0.4.22
   Compiling bumpalo v3.16.0
   Compiling version_check v0.9.5
   Compiling wasm-bindgen v0.2.99
   Compiling memchr v2.7.4
   Compiling quote v1.0.37
   Compiling syn v2.0.90
   Compiling thiserror v1.0.69
   Compiling stable_deref_trait v1.2.0
   Compiling pin-project-lite v0.2.15
   Compiling smallvec v1.13.2
   Compiling writeable v0.5.5
   Compiling futures-core v0.3.31
   Compiling litemap v0.7.4
   Compiling slab v0.4.9
   Compiling lock_api v0.4.12
   Compiling futures-sink v0.3.31
   Compiling itoa v1.0.14
   Compiling parking_lot_core v0.9.10
   Compiling futures-channel v0.3.31
   Compiling icu_locid_transform_data v1.5.0
   Compiling icu_properties_data v1.5.0
   Compiling percent-encoding v2.3.1
   Compiling futures-task v0.3.31
   Compiling unicode-xid v0.2.6
   Compiling futures-io v0.3.31
   Compiling libc v0.2.168
   Compiling serde_json v1.0.133
   Compiling ryu v1.0.18
   Compiling pin-utils v0.1.0
   Compiling const_format_proc_macros v0.2.34
   Compiling proc-macro-error-attr v1.0.4
   Compiling write16 v1.0.0
   Compiling utf8_iter v1.0.4
   Compiling equivalent v1.0.1
   Compiling hashbrown v0.15.2
   Compiling icu_normalizer_data v1.5.0
   Compiling utf16_iter v1.0.5
   Compiling indexmap v2.7.0
   Compiling proc-macro-error v1.0.4
   Compiling bytes v1.9.0
   Compiling unicode-segmentation v1.12.0
   Compiling fnv v1.0.7
   Compiling convert_case v0.6.0
   Compiling const_format v0.2.34
   Compiling form_urlencoded v1.2.1
   Compiling proc-macro-utils v0.8.0
   Compiling proc-macro-utils v0.10.0
   Compiling proc-macro2-diagnostics v0.10.1
   Compiling xxhash-rust v0.8.12
   Compiling wasm-bindgen-backend v0.2.99
   Compiling synstructure v0.13.1
   Compiling manyhow-macros v0.10.4
   Compiling server_fn_macro v0.6.15
   Compiling wasm-bindgen-macro-support v0.2.99
   Compiling slotmap v1.0.7
   Compiling half v2.4.1
   Compiling ciborium-io v0.2.2
   Compiling anyhow v1.0.94
   Compiling scopeguard v1.2.0
   Compiling yansi v1.0.1
   Compiling camino v1.1.9
   Compiling paste v1.0.15
   Compiling ciborium-ll v0.2.2
   Compiling manyhow v0.10.4
   Compiling http v1.2.0
   Compiling tracing-core v0.1.33
   Compiling same-file v1.0.6
   Compiling serde_derive v1.0.216
   Compiling wasm-bindgen-macro v0.2.99
   Compiling zerofrom-derive v0.1.5
   Compiling thiserror-impl v1.0.69
   Compiling yoke-derive v0.7.5
   Compiling zerofrom v0.1.5
   Compiling js-sys v0.3.76
   Compiling zerovec-derive v0.10.3
   Compiling yoke v0.7.5
   Compiling displaydoc v0.2.5
   Compiling icu_provider_macros v1.5.0
   Compiling zerovec v0.10.4
   Compiling futures-macro v0.3.31
   Compiling tinystr v0.7.6
   Compiling icu_collections v1.5.0
   Compiling icu_locid v1.5.0
   Compiling icu_provider v1.5.0
   Compiling icu_locid_transform v1.5.0
   Compiling futures-util v0.3.31
   Compiling icu_properties v1.5.1
   Compiling web-sys v0.3.76
   Compiling wasm-bindgen-futures v0.4.49
   Compiling icu_normalizer v1.5.0
   Compiling idna_adapter v1.2.0
   Compiling futures-executor v0.3.31
   Compiling tracing-attributes v0.1.28
   Compiling pin-project-internal v1.1.7
   Compiling futures v0.3.31
   Compiling idna v1.0.3
   Compiling pin-project v1.1.7
   Compiling quote-use-macros v0.8.4
   Compiling url v2.5.4
   Compiling toml_datetime v0.6.8
   Compiling quote-use v0.8.4
   Compiling serde_spanned v0.6.8
   Compiling syn_derive v0.1.8
   Compiling collection_literals v1.0.1
   Compiling winnow v0.6.20
   Compiling interpolator v0.5.0
   Compiling prettyplease v0.2.25
   Compiling hashbrown v0.14.5
   Compiling attribute-derive-macro v0.9.2
   Compiling dashmap v5.5.3
   Compiling toml_edit v0.22.22
   Compiling rstml v0.11.2
   Compiling tracing v0.1.41
   Compiling serde-wasm-bindgen v0.6.5
   Compiling oco_ref v0.1.1
   Compiling serde_qs v0.12.0
   Compiling ciborium v0.2.2
   Compiling server_fn_macro_default v0.6.15
   Compiling derive-where v1.2.7
   Compiling walkdir v2.5.0
   Compiling parking_lot v0.12.3
   Compiling getrandom v0.2.15
   Compiling send_wrapper v0.6.0
   Compiling proc-macro-error-attr2 v2.0.0
   Compiling aho-corasick v1.1.3
   Compiling either v1.13.0
   Compiling utf8-width v0.1.7
   Compiling self_cell v1.1.0
   Compiling regex-syntax v0.8.5
   Compiling minimal-lexical v0.2.1
   Compiling base64 v0.22.1
   Compiling rustc-hash v1.1.0
   Compiling nom v7.1.3
   Compiling html-escape v0.2.13
   Compiling regex-automata v0.4.9
   Compiling proc-macro-error2 v2.0.1
   Compiling itertools v0.12.1
   Compiling leptos_hot_reload v0.6.15
   Compiling uuid v1.11.0
   Compiling attribute-derive v0.9.2
   Compiling toml v0.8.19
   Compiling typed-builder-macro v0.18.2
   Compiling pathdiff v0.2.3
   Compiling config v0.14.1
   Compiling typed-builder v0.18.2
   Compiling leptos_macro v0.6.15
   Compiling regex v1.11.1
   Compiling async-recursion v1.1.1
   Compiling num-traits v0.2.19
   Compiling inventory v0.3.15
   Compiling pad-adapter v0.1.1
   Compiling lazy_static v1.5.0
   Compiling drain_filter_polyfill v0.1.3
   Compiling leptos_config v0.6.15
   Compiling cfg_aliases v0.2.1
   Compiling borsh v1.5.3
   Compiling serde_test v1.0.177
   Compiling tokio v1.42.0
   Compiling linear-map v1.2.0
   Compiling serde_urlencoded v0.7.1
   Compiling serde_qs v0.13.0
   Compiling http v0.2.12
   Compiling base64 v0.13.1
   Compiling tower-service v0.3.3
   Compiling console_error_panic_hook v0.1.7
   Compiling gloo-utils v0.2.0
   Compiling leptos_reactive v0.6.15
   Compiling idb v0.6.4
   Compiling gloo-net v0.6.0
   Compiling console_log v1.0.0
   Compiling reqwest-wasm v0.11.16
   Compiling wasm-streams v0.4.2
   Compiling rexie v0.6.2
   Compiling server_fn v0.6.15
   Compiling leptos_dom v0.6.15
   Compiling leptos_server v0.6.15
   Compiling leptos v0.6.15
   Compiling leptos_router v0.6.15
   Compiling leptos_meta v0.6.15
   Compiling spiral_temp_extension v0.0.1 (/home/runner/work/polyglot/polyglot/apps/spiral/temp/extension)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 53.00s
[INFO]: ⬇️  Installing wasm-bindgen...
[INFO]: Optional field missing from Cargo.toml: 'description'. This is not necessary, but recommended
[INFO]: ✨   Done in 54.34s
[INFO]: 📦   Your wasm pkg is ready to publish at /home/runner/work/polyglot/polyglot/apps/spiral/temp/extension/pkg.
Resolving dependencies
Resolved, downloaded and extracted [56]
Saved lockfile
▲ [WARNING] "import.meta" is not available with the "iife" output format and will be empty [empty-import-meta]

    pkg/spiral_temp_extension.js:1455:66:
      1455 │ ...ath = new URL('spiral_temp_extension_bg.wasm', import.meta.url);
           ╵                                                   ~~~~~~~~~~~

  You need to set the output format to "esm" for "import.meta" to work correctly.

1 warning

  dist/spiral_temp_extension_bg-GYR7LT4Q.wasm   4.4mb ⚠️
  dist/devtools.js                             29.0kb
  dist/content_script.js                       26.7kb
  dist/service_worker.js                        2.2kb

⚡ Done in 33ms
$ playwright test
[WebServer] Resolving dependencies
[WebServer] Resolved, downloaded and extracted [270]
[WebServer] Saved lockfile

Running 3 tests using 2 workers
··×T

  1) [Desktop Chrome] › extension.spec.ts:13:5 › libgen ────────────────────────────────────────────

    Test timeout of 60000ms exceeded.

    Error: page.type: Target page, context or browser has been closed
    Call log:
      - waiting for locator('#searchform')


      13 | test("libgen", async ({ page }) => {
      14 |   await page.goto("https://libgen.is")
    > 15 |   await page.type("#searchform", "aaA")
         |              ^
      16 |   await expect(page.locator("#searchform")).toHaveValue("AAA")
      17 | })
      18 |

        at /home/runner/work/polyglot/polyglot/apps/spiral/temp/extension/e2e/extension.spec.ts:15:14

    Retry #1 ───────────────────────────────────────────────────────────────────────────────────────

    Test timeout of 60000ms exceeded.

    Error: page.type: Target page, context or browser has been closed
    Call log:
      - waiting for locator('#searchform')


      13 | test("libgen", async ({ page }) => {
      14 |   await page.goto("https://libgen.is")
    > 15 |   await page.type("#searchform", "aaA")
         |              ^
      16 |   await expect(page.locator("#searchform")).toHaveValue("AAA")
      17 | })
      18 |

        at /home/runner/work/polyglot/polyglot/apps/spiral/temp/extension/e2e/extension.spec.ts:15:14

    attachment #1: trace (application/zip) ─────────────────────────────────────────────────────────
    test-results/extension-libgen-Desktop-Chrome-retry1/trace.zip
    Usage:

        npx playwright show-trace test-results/extension-libgen-Desktop-Chrome-retry1/trace.zip

    ────────────────────────────────────────────────────────────────────────────────────────────────

  1 failed
    [Desktop Chrome] › extension.spec.ts:13:5 › libgen ─────────────────────────────────────────────
  2 passed (2.3m)
error: script "test:e2e" exited with code 1

# Invoke-Block / $retry: 1/1 / $Location:  / Get-Location: /home/runner/work/polyglot/polyglot/apps/spiral/temp/extension / $OnError: Continue / $exitcode: 1 / $EnvVars: {
  "PATH": "/opt/microsoft/powershell/7:/home/runner/.local/bin:/opt/hostedtoolcache/Python/3.12.8/x64/bin:/opt/hostedtoolcache/Python/3.12.8/x64:/opt/hostedtoolcache/node/21.7.3/x64/bin:/usr/share/dotnet:/home/runner/.cargo/bin:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/runner/.cargo/bin:/home/runner/.bun/bin:/home/runner/.cargo/bin:/home/runner/.bun/bin:/home/runner/.cargo/bin:/home/runner/.bun/bin:/home/runner/.cargo/bin:/home/runner/.bun/bin"
} / $Error: '' / $ScriptBlock:
'~/.bun/bin/bun test:e2e'

00:00:00 v #1 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0
  ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"; options = { command = dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = Some <fun:compiler@87-4>; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot" } }
00:00:00 v #2 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #2 > 00:00:00 d #1 pwd: /home/runner/work/polyglot/polyglot
00:00:00 v #3 > 00:00:00 d #2 dllPath: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release
00:00:00 v #4 > 00:00:00 d #3 targetDir: /home/runner/work/polyglot/polyglot/target/spiral_Eval
00:00:00 v #3 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #4 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #5 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #6 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #7 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #8 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #9 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #10 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #11 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #12 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #13 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #14 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #15 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #16 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #17 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #18 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #19 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #20 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #21 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #22 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #23 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #24 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #25 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #26 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #27 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #28 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #29 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #30 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #31 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #32 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #33 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #34 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #35 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #36 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #37 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #5 > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:00 v #38 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 v #39 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:01 v #40 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:01 v #1 Supervisor.sendJson / port: 13805 / json: {"Ping":true} / result:
00:00:01 v #2 Supervisor.awaitCompiler / Ping / result: 'Some null' / port: 13805 / retry: 1
00:00:01 v #6 > Server bound to: http://localhost:13805
00:00:01 d #7 runtime.execute_with_options_async / { file_name = ../../../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path build.dib"; options = { command = ../../../../deps/spiral/workspace/target/release/spiral dib --path build.dib; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:01 v #8 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "build.dib"])) }
00:00:01 v #9 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib", "--output-path", "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:00:02 v #10 > >
00:00:02 v #11 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:02 v #12 > > │ # test
00:00:02 v #13 > >
00:00:02 v #14 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:02 v #15 > > │ ## include scripts
00:00:02 v #16 > >
00:00:02 v #17 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:02 v #18 > > │ ### include notebook core
00:00:02 v #19 > >
00:00:02 v #20 > > ── pwsh ────────────────────────────────────────────────────────────────────────
00:00:02 v #21 > > . ../../../../scripts/nbs_header.ps1
00:00:03 v #22 > >
00:00:03 v #23 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:03 v #24 > > │ ### Include core functions script
00:00:03 v #25 > >
00:00:03 v #26 > > ── pwsh ────────────────────────────────────────────────────────────────────────
00:00:03 v #27 > > . ../../../../scripts/core.ps1
00:00:03 v #28 > >
00:00:03 v #29 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:03 v #30 > > │ ### Include spiral library
00:00:03 v #31 > >
00:00:03 v #32 > > ── pwsh ────────────────────────────────────────────────────────────────────────
00:00:03 v #33 > > . ../../../../lib/spiral/lib.ps1
00:00:03 v #34 > >
00:00:03 v #35 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:03 v #36 > > │ ## execute project commands
00:00:03 v #37 > >
00:00:03 v #38 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:03 v #39 > > │ ### run notebook with retries using spiral supervisor
00:00:03 v #40 > >
00:00:03 v #41 > > ── pwsh ────────────────────────────────────────────────────────────────────────
00:00:03 v #42 > > { . ../../../../apps/spiral/dist/Supervisor$(_exe) --execute-command
00:00:03 v #43 > > "../../../../deps/spiral/workspace/target/release/spiral$(_exe) dib --path
00:00:03 v #44 > > test.dib --retries 3" } | Invoke-Block
00:00:14 v #45 > <test>
00:00:14 v #46 > </test>
00:00:16 v #47 > >
00:00:16 v #48 > > ── [ 13.48s - stdout ] ─────────────────────────────────────────────────────────
00:00:16 v #49 > > │ 00:00:00 v #1 networking.test_port_open / { port =
00:00:16 v #50 > > 13806; ex = System.AggregateException: One or more errors occurred. (Connection
00:00:16 v #51 > > refused) }
00:00:16 v #52 > > │ 00:00:00 d #1 runtime.execute_with_options_async / {
00:00:16 v #53 > > file_name = ../../../../deps/spiral/workspace/target/release/spiral; arguments =
00:00:16 v #54 > > US5_0 "dib --path test.dib --retries 3"; options = { command =
00:00:16 v #55 > > ../../../../deps/spiral/workspace/target/release/spiral dib --path test.dib
00:00:16 v #56 > > --retries 3; cancellation_token = Some System.Threading.CancellationToken;
00:00:16 v #57 > > environment_variables = [||]; on_line = None; stdin = None; trace = true;
00:00:16 v #58 > > working_directory = None } }
00:00:16 v #59 > > │ 00:00:00 v #2 > 00:00:00 d #1 spiral.main / { args
00:00:16 v #60 > > = Array(MutCell(["dib", "--path", "test.dib", "--retries", "3"])) }
00:00:16 v #61 > > │ 00:00:00 v #3 > 00:00:00 d #2
00:00:16 v #62 > > runtime.execute_with_options / { file_name = dotnet; arguments = ["repl",
00:00:16 v #63 > > "--exit-after-run", "--run",
00:00:16 v #64 > > "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.dib",
00:00:16 v #65 > > "--output-path",
00:00:16 v #66 > > "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.dib.ipynb"];
00:00:16 v #67 > > options = { command = dotnet repl --exit-after-run --run
00:00:16 v #68 > > "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.dib"
00:00:16 v #69 > > --output-path
00:00:16 v #70 > > "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.dib.ipynb";
00:00:16 v #71 > > cancellation_token = None; environment_variables =
00:00:16 v #72 > > Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line =
00:00:16 v #73 > > None; stdin = None; trace = false; working_directory = None } }
00:00:16 v #74 > > │ 00:00:01 v #4 > >
00:00:16 v #75 > > │ 00:00:01 v #5 > > ── markdown
00:00:16 v #76 > > ────────────────────────────────────────────────────────────────────
00:00:16 v #77 > > │ 00:00:01 v #6 > > │ # test (Polyglot)
00:00:16 v #78 > > │ 00:00:04 v #7 > >
00:00:16 v #79 > > │ 00:00:04 v #8 > > ── spiral
00:00:16 v #80 > > ──────────────────────────────────────────────────────────────────────
00:00:16 v #81 > > │ 00:00:04 v #9 > > //// test
00:00:16 v #82 > > │ 00:00:04 v #10 > >
00:00:16 v #83 > > │ 00:00:04 v #11 > > open testing
00:00:16 v #84 > > │ 00:00:07 v #12 > >
00:00:16 v #85 > > │ 00:00:07 v #13 > > ── spiral
00:00:16 v #86 > > ──────────────────────────────────────────────────────────────────────
00:00:16 v #87 > > │ 00:00:07 v #14 > > //// test
00:00:16 v #88 > > │ 00:00:07 v #15 > > //// print_code
00:00:16 v #89 > > │ 00:00:07 v #16 > >
00:00:16 v #90 > > │ 00:00:07 v #17 > > inl jp = [[ "J"; "P" ]]
00:00:16 v #91 > > │ 00:00:07 v #18 > > inl tf = [[ "T"; "F" ]]
00:00:16 v #92 > > │ 00:00:07 v #19 > > inl sn = [[ "S"; "N" ]]
00:00:16 v #93 > > │ 00:00:07 v #20 > > inl ie = [[ "I"; "E" ]]
00:00:16 v #94 > > │ 00:00:07 v #21 > >
00:00:16 v #95 > > │ 00:00:07 v #22 > > (ie, ([[]] : _ string))
00:00:16 v #96 > > │ 00:00:07 v #23 > > ||> listm.foldBack fun ie' acc =>
00:00:16 v #97 > > │ 00:00:07 v #24 > >     inl ssnn acc' jp' =
00:00:16 v #98 > > │ 00:00:07 v #25 > >         (sn, acc')
00:00:16 v #99 > > │ 00:00:07 v #26 > >         ||> listm.foldBack fun sn'
00:00:16 v #100 > > acc' =>
00:00:16 v #101 > > │ 00:00:07 v #27 > >             inl c' ie' sn' tf' jp' =
00:00:16 v #102 > > │ 00:00:07 v #28 > >
00:00:16 v #103 > > $'$"{!ie'}{!sn'}{!tf'}{!jp'}"'
00:00:16 v #104 > > │ 00:00:07 v #29 > >
00:00:16 v #105 > > │ 00:00:07 v #30 > >             if listm.length acc' %
00:00:16 v #106 > > 4i32 = 2 then
00:00:16 v #107 > > │ 00:00:07 v #31 > >                 (tf, acc')
00:00:16 v #108 > > │ 00:00:07 v #32 > >                 ||> listm.foldBack
00:00:16 v #109 > > fun tf' acc'' =>
00:00:16 v #110 > > │ 00:00:07 v #33 > >                     c' ie' sn' tf'
00:00:16 v #111 > > jp' :: acc''
00:00:16 v #112 > > │ 00:00:07 v #34 > >             else
00:00:16 v #113 > > │ 00:00:07 v #35 > >                 (acc', tf)
00:00:16 v #114 > > │ 00:00:07 v #36 > >                 ||> listm.fold fun
00:00:16 v #115 > > acc'' tf' =>
00:00:16 v #116 > > │ 00:00:07 v #37 > >                     c' ie' sn' tf'
00:00:16 v #117 > > jp' :: acc''
00:00:16 v #118 > > │ 00:00:07 v #38 > >     if acc = [[]] then
00:00:16 v #119 > > │ 00:00:07 v #39 > >         (acc, jp)
00:00:16 v #120 > > │ 00:00:07 v #40 > >         ||> listm.fold fun acc' jp'
00:00:16 v #121 > > =>
00:00:16 v #122 > > │ 00:00:07 v #41 > >             ssnn acc' jp'
00:00:16 v #123 > > │ 00:00:07 v #42 > >     else
00:00:16 v #124 > > │ 00:00:07 v #43 > >         (jp, acc)
00:00:16 v #125 > > │ 00:00:07 v #44 > >         ||> listm.foldBack fun jp'
00:00:16 v #126 > > acc' =>
00:00:16 v #127 > > │ 00:00:07 v #45 > >             ssnn acc' jp'
00:00:16 v #128 > > │ 00:00:07 v #46 > > |> listm'.box
00:00:16 v #129 > > │ 00:00:07 v #47 > > |> listm'.to_array'
00:00:16 v #130 > > │ 00:00:07 v #48 > > |> _assert_eq' ;[[
00:00:16 v #131 > > │ 00:00:07 v #49 > >     "ISTJ"; "ISFJ"; "INFJ"; "INTJ"
00:00:16 v #132 > > │ 00:00:07 v #50 > >     "ISTP"; "ISFP"; "INFP"; "INTP"
00:00:16 v #133 > > │ 00:00:07 v #51 > >     "ESTP"; "ESFP"; "ENFP"; "ENTP"
00:00:16 v #134 > > │ 00:00:07 v #52 > >     "ESTJ"; "ESFJ"; "ENFJ"; "ENTJ"
00:00:16 v #135 > > │ 00:00:07 v #53 > > ]]
00:00:16 v #136 > > │ 00:00:08 v #54 > >
00:00:16 v #137 > > │ 00:00:08 v #55 > > ── [ 860.88ms - stdout ]
00:00:16 v #138 > > ───────────────────────────────────────────────────────
00:00:16 v #139 > > │ 00:00:08 v #56 > > │ let rec method1
00:00:16 v #140 > > (v0 : bool) : bool =
00:00:16 v #141 > > │ 00:00:08 v #57 > > │     v0
00:00:16 v #142 > > │ 00:00:08 v #58 > > │ and closure0 (v0 :
00:00:16 v #143 > > string) () : unit =
00:00:16 v #144 > > │ 00:00:08 v #59 > > │     let v1 :
00:00:16 v #145 > > (string -> unit) = System.Console.WriteLine
00:00:16 v #146 > > │ 00:00:08 v #60 > > │     v1 v0
00:00:16 v #147 > > │ 00:00:08 v #61 > > │ and method0 () :
00:00:16 v #148 > > unit =
00:00:16 v #149 > > │ 00:00:08 v #62 > > │     let v0 :
00:00:16 v #150 > > string = "E"
00:00:16 v #151 > > │ 00:00:08 v #63 > > │     let v1 :
00:00:16 v #152 > > string = "N"
00:00:16 v #153 > > │ 00:00:08 v #64 > > │     let v2 :
00:00:16 v #154 > > string = "T"
00:00:16 v #155 > > │ 00:00:08 v #65 > > │     let v3 :
00:00:16 v #156 > > string = "J"
00:00:16 v #157 > > │ 00:00:08 v #66 > > │     let v4 :
00:00:16 v #158 > > string = $"{v0}{v1}{v2}{v3}"
00:00:16 v #159 > > │ 00:00:08 v #67 > > │     let v5 :
00:00:16 v #160 > > string = "F"
00:00:16 v #161 > > │ 00:00:08 v #68 > > │     let v6 :
00:00:16 v #162 > > string = $"{v0}{v1}{v5}{v3}"
00:00:16 v #163 > > │ 00:00:08 v #69 > > │     let v7 :
00:00:16 v #164 > > string = "S"
00:00:16 v #165 > > │ 00:00:08 v #70 > > │     let v8 :
00:00:16 v #166 > > string = $"{v0}{v7}{v5}{v3}"
00:00:16 v #167 > > │ 00:00:08 v #71 > > │     let v9 :
00:00:16 v #168 > > string = $"{v0}{v7}{v2}{v3}"
00:00:16 v #169 > > │ 00:00:08 v #72 > > │     let v10 :
00:00:16 v #170 > > string = "P"
00:00:16 v #171 > > │ 00:00:08 v #73 > > │     let v11 :
00:00:16 v #172 > > string = $"{v0}{v1}{v2}{v10}"
00:00:16 v #173 > > │ 00:00:08 v #74 > > │     let v12 :
00:00:16 v #174 > > string = $"{v0}{v1}{v5}{v10}"
00:00:16 v #175 > > │ 00:00:08 v #75 > > │     let v13 :
00:00:16 v #176 > > string = $"{v0}{v7}{v5}{v10}"
00:00:16 v #177 > > │ 00:00:08 v #76 > > │     let v14 :
00:00:16 v #178 > > string = $"{v0}{v7}{v2}{v10}"
00:00:16 v #179 > > │ 00:00:08 v #77 > > │     let v15 :
00:00:16 v #180 > > string = "I"
00:00:16 v #181 > > │ 00:00:08 v #78 > > │     let v16 :
00:00:16 v #182 > > string = $"{v15}{v1}{v2}{v10}"
00:00:16 v #183 > > │ 00:00:08 v #79 > > │     let v17 :
00:00:16 v #184 > > string = $"{v15}{v1}{v5}{v10}"
00:00:16 v #185 > > │ 00:00:08 v #80 > > │     let v18 :
00:00:16 v #186 > > string = $"{v15}{v7}{v5}{v10}"
00:00:16 v #187 > > │ 00:00:08 v #81 > > │     let v19 :
00:00:16 v #188 > > string = $"{v15}{v7}{v2}{v10}"
00:00:16 v #189 > > │ 00:00:08 v #82 > > │     let v20 :
00:00:16 v #190 > > string = $"{v15}{v1}{v2}{v3}"
00:00:16 v #191 > > │ 00:00:08 v #83 > > │     let v21 :
00:00:16 v #192 > > string = $"{v15}{v1}{v5}{v3}"
00:00:16 v #193 > > │ 00:00:08 v #84 > > │     let v22 :
00:00:16 v #194 > > string = $"{v15}{v7}{v5}{v3}"
00:00:16 v #195 > > │ 00:00:08 v #85 > > │     let v23 :
00:00:16 v #196 > > string = $"{v15}{v7}{v2}{v3}"
00:00:16 v #197 > > │ 00:00:08 v #86 > > │     let v24 :
00:00:16 v #198 > > string list = []
00:00:16 v #199 > > │ 00:00:08 v #87 > > │     let v25 :
00:00:16 v #200 > > string list = v4 :: v24
00:00:16 v #201 > > │ 00:00:08 v #88 > > │     let v28 :
00:00:16 v #202 > > string list = v6 :: v25
00:00:16 v #203 > > │ 00:00:08 v #89 > > │     let v31 :
00:00:16 v #204 > > string list = v8 :: v28
00:00:16 v #205 > > │ 00:00:08 v #90 > > │     let v34 :
00:00:16 v #206 > > string list = v9 :: v31
00:00:16 v #207 > > │ 00:00:08 v #91 > > │     let v37 :
00:00:16 v #208 > > string list = v11 :: v34
00:00:16 v #209 > > │ 00:00:08 v #92 > > │     let v40 :
00:00:16 v #210 > > string list = v12 :: v37
00:00:16 v #211 > > │ 00:00:08 v #93 > > │     let v43 :
00:00:16 v #212 > > string list = v13 :: v40
00:00:16 v #213 > > │ 00:00:08 v #94 > > │     let v46 :
00:00:16 v #214 > > string list = v14 :: v43
00:00:16 v #215 > > │ 00:00:08 v #95 > > │     let v49 :
00:00:16 v #216 > > string list = v16 :: v46
00:00:16 v #217 > > │ 00:00:08 v #96 > > │     let v52 :
00:00:16 v #218 > > string list = v17 :: v49
00:00:16 v #219 > > │ 00:00:08 v #97 > > │     let v55 :
00:00:16 v #220 > > string list = v18 :: v52
00:00:16 v #221 > > │ 00:00:08 v #98 > > │     let v58 :
00:00:16 v #222 > > string list = v19 :: v55
00:00:16 v #223 > > │ 00:00:08 v #99 > > │     let v61 :
00:00:16 v #224 > > string list = v20 :: v58
00:00:16 v #225 > > │ 00:00:08 v #100 > > │     let v64 :
00:00:16 v #226 > > string list = v21 :: v61
00:00:16 v #227 > > │ 00:00:08 v #101 > > │     let v67 :
00:00:16 v #228 > > string list = v22 :: v64
00:00:16 v #229 > > │ 00:00:08 v #102 > > │     let v70 :
00:00:16 v #230 > > string list = v23 :: v67
00:00:16 v #231 > > │ 00:00:08 v #103 > > │     let v73 :
00:00:16 v #232 > > (string list -> (string [])) = List.toArray
00:00:16 v #233 > > │ 00:00:08 v #104 > > │     let v74 :
00:00:16 v #234 > > (string []) = v73 v70
00:00:16 v #235 > > │ 00:00:08 v #105 > > │     let v77 :
00:00:16 v #236 > > string = "ISTJ"
00:00:16 v #237 > > │ 00:00:08 v #106 > > │     let v78 :
00:00:16 v #238 > > string = "ISFJ"
00:00:16 v #239 > > │ 00:00:08 v #107 > > │     let v79 :
00:00:16 v #240 > > string = "INFJ"
00:00:16 v #241 > > │ 00:00:08 v #108 > > │     let v80 :
00:00:16 v #242 > > string = "INTJ"
00:00:16 v #243 > > │ 00:00:08 v #109 > > │     let v81 :
00:00:16 v #244 > > string = "ISTP"
00:00:16 v #245 > > │ 00:00:08 v #110 > > │     let v82 :
00:00:16 v #246 > > string = "ISFP"
00:00:16 v #247 > > │ 00:00:08 v #111 > > │     let v83 :
00:00:16 v #248 > > string = "INFP"
00:00:16 v #249 > > │ 00:00:08 v #112 > > │     let v84 :
00:00:16 v #250 > > string = "INTP"
00:00:16 v #251 > > │ 00:00:08 v #113 > > │     let v85 :
00:00:16 v #252 > > string = "ESTP"
00:00:16 v #253 > > │ 00:00:08 v #114 > > │     let v86 :
00:00:16 v #254 > > string = "ESFP"
00:00:16 v #255 > > │ 00:00:08 v #115 > > │     let v87 :
00:00:16 v #256 > > string = "ENFP"
00:00:16 v #257 > > │ 00:00:08 v #116 > > │     let v88 :
00:00:16 v #258 > > string = "ENTP"
00:00:16 v #259 > > │ 00:00:08 v #117 > > │     let v89 :
00:00:16 v #260 > > string = "ESTJ"
00:00:16 v #261 > > │ 00:00:08 v #118 > > │     let v90 :
00:00:16 v #262 > > string = "ESFJ"
00:00:16 v #263 > > │ 00:00:08 v #119 > > │     let v91 :
00:00:16 v #264 > > string = "ENFJ"
00:00:16 v #265 > > │ 00:00:08 v #120 > > │     let v92 :
00:00:16 v #266 > > string = "ENTJ"
00:00:16 v #267 > > │ 00:00:08 v #121 > > │     let v93 :
00:00:16 v #268 > > (string []) = [|v77; v78; v79; v80; v81; v82;
00:00:16 v #269 > > │ 00:00:08 v #122 > > v83; v84; v85; v86; v87; v88; v89;
00:00:16 v #270 > > v90; v91; v92|]
00:00:16 v #271 > > │ 00:00:08 v #123 > > │     let v94 :
00:00:16 v #272 > > bool = v74 = v93
00:00:16 v #273 > > │ 00:00:08 v #124 > > │     let v98 :
00:00:16 v #274 > > bool =
00:00:16 v #275 > > │ 00:00:08 v #125 > > │         if v94
00:00:16 v #276 > > then
00:00:16 v #277 > > │ 00:00:08 v #126 > > │             true
00:00:16 v #278 > > │ 00:00:08 v #127 > > │         else
00:00:16 v #279 > > │ 00:00:08 v #128 > > │
00:00:16 v #280 > > method1(v94)
00:00:16 v #281 > > │ 00:00:08 v #129 > > │     let v99 :
00:00:16 v #282 > > string = "__assert_eq'"
00:00:16 v #283 > > │ 00:00:08 v #130 > > │     let v100 :
00:00:16 v #284 > > string = $"{v99} / actual: %A{v74} / expected:
00:00:16 v #285 > > │ 00:00:08 v #131 > > %A{v93}"
00:00:16 v #286 > > │ 00:00:08 v #132 > > │     let v103 :
00:00:16 v #287 > > unit = ()
00:00:16 v #288 > > │ 00:00:08 v #133 > > │     let v104 :
00:00:16 v #289 > > (unit -> unit) = closure0(v100)
00:00:16 v #290 > > │ 00:00:08 v #134 > > │     let v105 :
00:00:16 v #291 > > unit = (fun () -> v104 (); v103) ()
00:00:16 v #292 > > │ 00:00:08 v #135 > > │     let v107 :
00:00:16 v #293 > > bool = v98 = false
00:00:16 v #294 > > │ 00:00:08 v #136 > > │     if v107 then
00:00:16 v #295 > > │ 00:00:08 v #137 > > │
00:00:16 v #296 > > failwith<unit> v100
00:00:16 v #297 > > │ 00:00:08 v #138 > > │ method0()
00:00:16 v #298 > > │ 00:00:08 v #139 > > │
00:00:16 v #299 > > │ 00:00:08 v #140 > > │ __assert_eq'
00:00:16 v #300 > > actual: [|"ISTJ"; "ISFJ"; "INFJ"; "INTJ";
00:00:16 v #301 > > │ 00:00:08 v #141 > > "ISTP"; "ISFP"; "INFP"; "INTP";
00:00:16 v #302 > > "ESTP"; "ESFP";
00:00:16 v #303 > > │ 00:00:08 v #142 > > │   "ENFP"; "ENTP";
00:00:16 v #304 > > "ESTJ"; "ESFJ"; "ENFJ"; "ENTJ"|]
00:00:16 v #305 > > │ 00:00:08 v #143 > > expected: [|"ISTJ"; "ISFJ"; "INFJ";
00:00:16 v #306 > > "INTJ"; "ISTP"; "ISFP"; "INFP"; "INTP";
00:00:16 v #307 > > │ 00:00:08 v #144 > > "ESTP"; "ESFP";
00:00:16 v #308 > > │ 00:00:08 v #145 > > │   "ENFP"; "ENTP";
00:00:16 v #309 > > "ESTJ"; "ESFJ"; "ENFJ"; "ENTJ"|]
00:00:16 v #310 > > │ 00:00:08 v #146 > > │
00:00:16 v #311 > > │ 00:00:08 v #147 > >
00:00:16 v #312 > > │ 00:00:08 v #148 > > ── spiral
00:00:16 v #313 > > ──────────────────────────────────────────────────────────────────────
00:00:16 v #314 > > │ 00:00:08 v #149 > > //// test
00:00:16 v #315 > > │ 00:00:08 v #150 > > //// print_code
00:00:16 v #316 > > │ 00:00:08 v #151 > >
00:00:16 v #317 > > │ 00:00:08 v #152 > > inl i_e =
00:00:16 v #318 > > │ 00:00:08 v #153 > >     listm'.replicate 8i32 "I" ++
00:00:16 v #319 > > listm'.replicate 8i32 "E"
00:00:16 v #320 > > │ 00:00:08 v #154 > > inl s_n =
00:00:16 v #321 > > │ 00:00:08 v #155 > >     [[ "S"; "S"; "N"; "N" ]]
00:00:16 v #322 > > │ 00:00:08 v #156 > >     |> listm'.replicate 4i32
00:00:16 v #323 > > │ 00:00:08 v #157 > >     |> listm'.collect id
00:00:16 v #324 > > │ 00:00:08 v #158 > > inl t_f =
00:00:16 v #325 > > │ 00:00:08 v #159 > >     [[ "T"; "F"; "F"; "T" ]]
00:00:16 v #326 > > │ 00:00:08 v #160 > >     |> listm'.replicate 4i32
00:00:16 v #327 > > │ 00:00:08 v #161 > >     |> listm'.collect id
00:00:16 v #328 > > │ 00:00:08 v #162 > > inl j_p =
00:00:16 v #329 > > │ 00:00:08 v #163 > >     [[ "J"; "J"; "J"; "J" ]]
00:00:16 v #330 > > │ 00:00:08 v #164 > >     ++ [[ "P"; "P"; "P"; "P" ]]
00:00:16 v #331 > > │ 00:00:08 v #165 > >     ++ [[ "P"; "P"; "P"; "P" ]]
00:00:16 v #332 > > │ 00:00:08 v #166 > >     ++ [[ "J"; "J"; "J"; "J" ]]
00:00:16 v #333 > > │ 00:00:08 v #167 > > inl mbti =
00:00:16 v #334 > > │ 00:00:08 v #168 > >     listm'.map4 (fun a b c d =>
00:00:16 v #335 > > $'$"{!a}{!b}{!c}{!d}"') i_e s_n t_f j_p
00:00:16 v #336 > > │ 00:00:08 v #169 > >
00:00:16 v #337 > > │ 00:00:08 v #170 > > mbti
00:00:16 v #338 > > │ 00:00:08 v #171 > > |> listm'.box
00:00:16 v #339 > > │ 00:00:08 v #172 > > |> listm'.to_array'
00:00:16 v #340 > > │ 00:00:08 v #173 > > |> _assert_eq' ;[[
00:00:16 v #341 > > │ 00:00:08 v #174 > >     "ISTJ"; "ISFJ"; "INFJ"; "INTJ"
00:00:16 v #342 > > │ 00:00:08 v #175 > >     "ISTP"; "ISFP"; "INFP"; "INTP"
00:00:16 v #343 > > │ 00:00:08 v #176 > >     "ESTP"; "ESFP"; "ENFP"; "ENTP"
00:00:16 v #344 > > │ 00:00:08 v #177 > >     "ESTJ"; "ESFJ"; "ENFJ"; "ENTJ"
00:00:16 v #345 > > │ 00:00:08 v #178 > > ]]
00:00:16 v #346 > > │ 00:00:09 v #179 > >
00:00:16 v #347 > > │ 00:00:09 v #180 > > ── [ 318.11ms - stdout ]
00:00:16 v #348 > > ───────────────────────────────────────────────────────
00:00:16 v #349 > > │ 00:00:09 v #181 > > │ let rec method1
00:00:16 v #350 > > (v0 : bool) : bool =
00:00:16 v #351 > > │ 00:00:09 v #182 > > │     v0
00:00:16 v #352 > > │ 00:00:09 v #183 > > │ and closure0 (v0
00:00:16 v #353 > > : string) () : unit =
00:00:16 v #354 > > │ 00:00:09 v #184 > > │     let v1 :
00:00:16 v #355 > > (string -> unit) = System.Console.WriteLine
00:00:16 v #356 > > │ 00:00:09 v #185 > > │     v1 v0
00:00:16 v #357 > > │ 00:00:09 v #186 > > │ and method0 () :
00:00:16 v #358 > > unit =
00:00:16 v #359 > > │ 00:00:09 v #187 > > │     let v0 :
00:00:16 v #360 > > string = "I"
00:00:16 v #361 > > │ 00:00:09 v #188 > > │     let v1 :
00:00:16 v #362 > > string = "S"
00:00:16 v #363 > > │ 00:00:09 v #189 > > │     let v2 :
00:00:16 v #364 > > string = "T"
00:00:16 v #365 > > │ 00:00:09 v #190 > > │     let v3 :
00:00:16 v #366 > > string = "J"
00:00:16 v #367 > > │ 00:00:09 v #191 > > │     let v4 :
00:00:16 v #368 > > string = $"{v0}{v1}{v2}{v3}"
00:00:16 v #369 > > │ 00:00:09 v #192 > > │     let v5 :
00:00:16 v #370 > > string = "F"
00:00:16 v #371 > > │ 00:00:09 v #193 > > │     let v6 :
00:00:16 v #372 > > string = $"{v0}{v1}{v5}{v3}"
00:00:16 v #373 > > │ 00:00:09 v #194 > > │     let v7 :
00:00:16 v #374 > > string = "N"
00:00:16 v #375 > > │ 00:00:09 v #195 > > │     let v8 :
00:00:16 v #376 > > string = $"{v0}{v7}{v5}{v3}"
00:00:16 v #377 > > │ 00:00:09 v #196 > > │     let v9 :
00:00:16 v #378 > > string = $"{v0}{v7}{v2}{v3}"
00:00:16 v #379 > > │ 00:00:09 v #197 > > │     let v10 :
00:00:16 v #380 > > string = "P"
00:00:16 v #381 > > │ 00:00:09 v #198 > > │     let v11 :
00:00:16 v #382 > > string = $"{v0}{v1}{v2}{v10}"
00:00:16 v #383 > > │ 00:00:09 v #199 > > │     let v12 :
00:00:16 v #384 > > string = $"{v0}{v1}{v5}{v10}"
00:00:16 v #385 > > │ 00:00:09 v #200 > > │     let v13 :
00:00:16 v #386 > > string = $"{v0}{v7}{v5}{v10}"
00:00:16 v #387 > > │ 00:00:09 v #201 > > │     let v14 :
00:00:16 v #388 > > string = $"{v0}{v7}{v2}{v10}"
00:00:16 v #389 > > │ 00:00:09 v #202 > > │     let v15 :
00:00:16 v #390 > > string = "E"
00:00:16 v #391 > > │ 00:00:09 v #203 > > │     let v16 :
00:00:16 v #392 > > string = $"{v15}{v1}{v2}{v10}"
00:00:16 v #393 > > │ 00:00:09 v #204 > > │     let v17 :
00:00:16 v #394 > > string = $"{v15}{v1}{v5}{v10}"
00:00:16 v #395 > > │ 00:00:09 v #205 > > │     let v18 :
00:00:16 v #396 > > string = $"{v15}{v7}{v5}{v10}"
00:00:16 v #397 > > │ 00:00:09 v #206 > > │     let v19 :
00:00:16 v #398 > > string = $"{v15}{v7}{v2}{v10}"
00:00:16 v #399 > > │ 00:00:09 v #207 > > │     let v20 :
00:00:16 v #400 > > string = $"{v15}{v1}{v2}{v3}"
00:00:16 v #401 > > │ 00:00:09 v #208 > > │     let v21 :
00:00:16 v #402 > > string = $"{v15}{v1}{v5}{v3}"
00:00:16 v #403 > > │ 00:00:09 v #209 > > │     let v22 :
00:00:16 v #404 > > string = $"{v15}{v7}{v5}{v3}"
00:00:16 v #405 > > │ 00:00:09 v #210 > > │     let v23 :
00:00:16 v #406 > > string = $"{v15}{v7}{v2}{v3}"
00:00:16 v #407 > > │ 00:00:09 v #211 > > │     let v24 :
00:00:16 v #408 > > string list = []
00:00:16 v #409 > > │ 00:00:09 v #212 > > │     let v25 :
00:00:16 v #410 > > string list = v23 :: v24
00:00:16 v #411 > > │ 00:00:09 v #213 > > │     let v28 :
00:00:16 v #412 > > string list = v22 :: v25
00:00:16 v #413 > > │ 00:00:09 v #214 > > │     let v31 :
00:00:16 v #414 > > string list = v21 :: v28
00:00:16 v #415 > > │ 00:00:09 v #215 > > │     let v34 :
00:00:16 v #416 > > string list = v20 :: v31
00:00:16 v #417 > > │ 00:00:09 v #216 > > │     let v37 :
00:00:16 v #418 > > string list = v19 :: v34
00:00:16 v #419 > > │ 00:00:09 v #217 > > │     let v40 :
00:00:16 v #420 > > string list = v18 :: v37
00:00:16 v #421 > > │ 00:00:09 v #218 > > │     let v43 :
00:00:16 v #422 > > string list = v17 :: v40
00:00:16 v #423 > > │ 00:00:09 v #219 > > │     let v46 :
00:00:16 v #424 > > string list = v16 :: v43
00:00:16 v #425 > > │ 00:00:09 v #220 > > │     let v49 :
00:00:16 v #426 > > string list = v14 :: v46
00:00:16 v #427 > > │ 00:00:09 v #221 > > │     let v52 :
00:00:16 v #428 > > string list = v13 :: v49
00:00:16 v #429 > > │ 00:00:09 v #222 > > │     let v55 :
00:00:16 v #430 > > string list = v12 :: v52
00:00:16 v #431 > > │ 00:00:09 v #223 > > │     let v58 :
00:00:16 v #432 > > string list = v11 :: v55
00:00:16 v #433 > > │ 00:00:09 v #224 > > │     let v61 :
00:00:16 v #434 > > string list = v9 :: v58
00:00:16 v #435 > > │ 00:00:09 v #225 > > │     let v64 :
00:00:16 v #436 > > string list = v8 :: v61
00:00:16 v #437 > > │ 00:00:09 v #226 > > │     let v67 :
00:00:16 v #438 > > string list = v6 :: v64
00:00:16 v #439 > > │ 00:00:09 v #227 > > │     let v70 :
00:00:16 v #440 > > string list = v4 :: v67
00:00:16 v #441 > > │ 00:00:09 v #228 > > │     let v73 :
00:00:16 v #442 > > (string list -> (string [])) = List.toArray
00:00:16 v #443 > > │ 00:00:09 v #229 > > │     let v74 :
00:00:16 v #444 > > (string []) = v73 v70
00:00:16 v #445 > > │ 00:00:09 v #230 > > │     let v77 :
00:00:16 v #446 > > string = "ISTJ"
00:00:16 v #447 > > │ 00:00:09 v #231 > > │     let v78 :
00:00:16 v #448 > > string = "ISFJ"
00:00:16 v #449 > > │ 00:00:09 v #232 > > │     let v79 :
00:00:16 v #450 > > string = "INFJ"
00:00:16 v #451 > > │ 00:00:09 v #233 > > │     let v80 :
00:00:16 v #452 > > string = "INTJ"
00:00:16 v #453 > > │ 00:00:09 v #234 > > │     let v81 :
00:00:16 v #454 > > string = "ISTP"
00:00:16 v #455 > > │ 00:00:09 v #235 > > │     let v82 :
00:00:16 v #456 > > string = "ISFP"
00:00:16 v #457 > > │ 00:00:09 v #236 > > │     let v83 :
00:00:16 v #458 > > string = "INFP"
00:00:16 v #459 > > │ 00:00:09 v #237 > > │     let v84 :
00:00:16 v #460 > > string = "INTP"
00:00:16 v #461 > > │ 00:00:09 v #238 > > │     let v85 :
00:00:16 v #462 > > string = "ESTP"
00:00:16 v #463 > > │ 00:00:09 v #239 > > │     let v86 :
00:00:16 v #464 > > string = "ESFP"
00:00:16 v #465 > > │ 00:00:09 v #240 > > │     let v87 :
00:00:16 v #466 > > string = "ENFP"
00:00:16 v #467 > > │ 00:00:09 v #241 > > │     let v88 :
00:00:16 v #468 > > string = "ENTP"
00:00:16 v #469 > > │ 00:00:09 v #242 > > │     let v89 :
00:00:16 v #470 > > string = "ESTJ"
00:00:16 v #471 > > │ 00:00:09 v #243 > > │     let v90 :
00:00:16 v #472 > > string = "ESFJ"
00:00:16 v #473 > > │ 00:00:09 v #244 > > │     let v91 :
00:00:16 v #474 > > string = "ENFJ"
00:00:16 v #475 > > │ 00:00:09 v #245 > > │     let v92 :
00:00:16 v #476 > > string = "ENTJ"
00:00:16 v #477 > > │ 00:00:09 v #246 > > │     let v93 :
00:00:16 v #478 > > (string []) = [|v77; v78; v79; v80; v81; v82;
00:00:16 v #479 > > │ 00:00:09 v #247 > > v83; v84; v85; v86; v87; v88; v89;
00:00:16 v #480 > > v90; v91; v92|]
00:00:16 v #481 > > │ 00:00:09 v #248 > > │     let v94 :
00:00:16 v #482 > > bool = v74 = v93
00:00:16 v #483 > > │ 00:00:09 v #249 > > │     let v98 :
00:00:16 v #484 > > bool =
00:00:16 v #485 > > │ 00:00:09 v #250 > > │         if v94
00:00:16 v #486 > > then
00:00:16 v #487 > > │ 00:00:09 v #251 > > │             true
00:00:16 v #488 > > │ 00:00:09 v #252 > > │         else
00:00:16 v #489 > > │ 00:00:09 v #253 > > │
00:00:16 v #490 > > method1(v94)
00:00:16 v #491 > > │ 00:00:09 v #254 > > │     let v99 :
00:00:16 v #492 > > string = "__assert_eq'"
00:00:16 v #493 > > │ 00:00:09 v #255 > > │     let v100 :
00:00:16 v #494 > > string = $"{v99} / actual: %A{v74} / expected:
00:00:16 v #495 > > │ 00:00:09 v #256 > > %A{v93}"
00:00:16 v #496 > > │ 00:00:09 v #257 > > │     let v103 :
00:00:16 v #497 > > unit = ()
00:00:16 v #498 > > │ 00:00:09 v #258 > > │     let v104 :
00:00:16 v #499 > > (unit -> unit) = closure0(v100)
00:00:16 v #500 > > │ 00:00:09 v #259 > > │     let v105 :
00:00:16 v #501 > > unit = (fun () -> v104 (); v103) ()
00:00:16 v #502 > > │ 00:00:09 v #260 > > │     let v107 :
00:00:16 v #503 > > bool = v98 = false
00:00:16 v #504 > > │ 00:00:09 v #261 > > │     if v107 then
00:00:16 v #505 > > │ 00:00:09 v #262 > > │
00:00:16 v #506 > > failwith<unit> v100
00:00:16 v #507 > > │ 00:00:09 v #263 > > │ method0()
00:00:16 v #508 > > │ 00:00:09 v #264 > > │
00:00:16 v #509 > > │ 00:00:09 v #265 > > │ __assert_eq'
00:00:16 v #510 > > actual: [|"ISTJ"; "ISFJ"; "INFJ"; "INTJ";
00:00:16 v #511 > > │ 00:00:09 v #266 > > "ISTP"; "ISFP"; "INFP"; "INTP";
00:00:16 v #512 > > "ESTP"; "ESFP";
00:00:16 v #513 > > │ 00:00:09 v #267 > > │   "ENFP"; "ENTP";
00:00:16 v #514 > > "ESTJ"; "ESFJ"; "ENFJ"; "ENTJ"|]
00:00:16 v #515 > > │ 00:00:09 v #268 > > expected: [|"ISTJ"; "ISFJ"; "INFJ";
00:00:16 v #516 > > "INTJ"; "ISTP"; "ISFP"; "INFP"; "INTP";
00:00:16 v #517 > > │ 00:00:09 v #269 > > "ESTP"; "ESFP";
00:00:16 v #518 > > │ 00:00:09 v #270 > > │   "ENFP"; "ENTP";
00:00:16 v #519 > > "ESTJ"; "ESFJ"; "ENFJ"; "ENTJ"|]
00:00:16 v #520 > > │ 00:00:09 v #271 > > │
00:00:16 v #521 > > │ 00:00:09 v #272 > >
00:00:16 v #522 > > │ 00:00:09 v #273 > > ── spiral
00:00:16 v #523 > > ──────────────────────────────────────────────────────────────────────
00:00:16 v #524 > > │ 00:00:09 v #274 > > //// test
00:00:16 v #525 > > │ 00:00:09 v #275 > > //// print_code
00:00:16 v #526 > > │ 00:00:09 v #276 > >
00:00:16 v #527 > > │ 00:00:09 v #277 > > fun i =>
00:00:16 v #528 > > │ 00:00:09 v #278 > >     inl i_e =
00:00:16 v #529 > > │ 00:00:09 v #279 > >         if i < 8
00:00:16 v #530 > > │ 00:00:09 v #280 > >         then "I"
00:00:16 v #531 > > │ 00:00:09 v #281 > >         else "E"
00:00:16 v #532 > > │ 00:00:09 v #282 > >     inl s_n =
00:00:16 v #533 > > │ 00:00:09 v #283 > >         inl group = (i / 2) % 2
00:00:16 v #534 > > │ 00:00:09 v #284 > >         if group = 0
00:00:16 v #535 > > │ 00:00:09 v #285 > >         then "S"
00:00:16 v #536 > > │ 00:00:09 v #286 > >         else "N"
00:00:16 v #537 > > │ 00:00:09 v #287 > >     inl t_f =
00:00:16 v #538 > > │ 00:00:09 v #288 > >         match i % 4 with
00:00:16 v #539 > > │ 00:00:09 v #289 > >         | 0 => "T"
00:00:16 v #540 > > │ 00:00:09 v #290 > >         | 1 => "F"
00:00:16 v #541 > > │ 00:00:09 v #291 > >         | 2 => "F"
00:00:16 v #542 > > │ 00:00:09 v #292 > >         | _ => "T"
00:00:16 v #543 > > │ 00:00:09 v #293 > >     inl j_p =
00:00:16 v #544 > > │ 00:00:09 v #294 > >         if i < 4
00:00:16 v #545 > > │ 00:00:09 v #295 > >         then "J"
00:00:16 v #546 > > │ 00:00:09 v #296 > >         elif i < 12
00:00:16 v #547 > > │ 00:00:09 v #297 > >         then "P"
00:00:16 v #548 > > │ 00:00:09 v #298 > >         else "J"
00:00:16 v #549 > > │ 00:00:09 v #299 > >     $'$"{!i_e}{!s_n}{!t_f}{!j_p}"'
00:00:16 v #550 > > │ 00:00:09 v #300 > > |> listm.init 16i32
00:00:16 v #551 > > │ 00:00:09 v #301 > > |> listm'.box
00:00:16 v #552 > > │ 00:00:09 v #302 > > |> listm'.to_array'
00:00:16 v #553 > > │ 00:00:09 v #303 > > |> _assert_eq' ;[[
00:00:16 v #554 > > │ 00:00:09 v #304 > >     "ISTJ"; "ISFJ"; "INFJ"; "INTJ"
00:00:16 v #555 > > │ 00:00:09 v #305 > >     "ISTP"; "ISFP"; "INFP"; "INTP"
00:00:16 v #556 > > │ 00:00:09 v #306 > >     "ESTP"; "ESFP"; "ENFP"; "ENTP"
00:00:16 v #557 > > │ 00:00:09 v #307 > >     "ESTJ"; "ESFJ"; "ENFJ"; "ENTJ"
00:00:16 v #558 > > │ 00:00:09 v #308 > > ]]
00:00:16 v #559 > > │ 00:00:09 v #309 > >
00:00:16 v #560 > > │ 00:00:09 v #310 > > ── [ 328.86ms - stdout ]
00:00:16 v #561 > > ───────────────────────────────────────────────────────
00:00:16 v #562 > > │ 00:00:09 v #311 > > │ let rec method1
00:00:16 v #563 > > (v0 : bool) : bool =
00:00:16 v #564 > > │ 00:00:09 v #312 > > │     v0
00:00:16 v #565 > > │ 00:00:09 v #313 > > │ and closure0 (v0
00:00:16 v #566 > > : string) () : unit =
00:00:16 v #567 > > │ 00:00:09 v #314 > > │     let v1 :
00:00:16 v #568 > > (string -> unit) = System.Console.WriteLine
00:00:16 v #569 > > │ 00:00:09 v #315 > > │     v1 v0
00:00:16 v #570 > > │ 00:00:09 v #316 > > │ and method0 () :
00:00:16 v #571 > > unit =
00:00:16 v #572 > > │ 00:00:09 v #317 > > │     let v0 :
00:00:16 v #573 > > string = "I"
00:00:16 v #574 > > │ 00:00:09 v #318 > > │     let v1 :
00:00:16 v #575 > > string = "S"
00:00:16 v #576 > > │ 00:00:09 v #319 > > │     let v2 :
00:00:16 v #577 > > string = "T"
00:00:16 v #578 > > │ 00:00:09 v #320 > > │     let v3 :
00:00:16 v #579 > > string = "J"
00:00:16 v #580 > > │ 00:00:09 v #321 > > │     let v4 :
00:00:16 v #581 > > string = $"{v0}{v1}{v2}{v3}"
00:00:16 v #582 > > │ 00:00:09 v #322 > > │     let v5 :
00:00:16 v #583 > > string = "F"
00:00:16 v #584 > > │ 00:00:09 v #323 > > │     let v6 :
00:00:16 v #585 > > string = $"{v0}{v1}{v5}{v3}"
00:00:16 v #586 > > │ 00:00:09 v #324 > > │     let v7 :
00:00:16 v #587 > > string = "N"
00:00:16 v #588 > > │ 00:00:09 v #325 > > │     let v8 :
00:00:16 v #589 > > string = $"{v0}{v7}{v5}{v3}"
00:00:16 v #590 > > │ 00:00:09 v #326 > > │     let v9 :
00:00:16 v #591 > > string = $"{v0}{v7}{v2}{v3}"
00:00:16 v #592 > > │ 00:00:09 v #327 > > │     let v10 :
00:00:16 v #593 > > string = "P"
00:00:16 v #594 > > │ 00:00:09 v #328 > > │     let v11 :
00:00:16 v #595 > > string = $"{v0}{v1}{v2}{v10}"
00:00:16 v #596 > > │ 00:00:09 v #329 > > │     let v12 :
00:00:16 v #597 > > string = $"{v0}{v1}{v5}{v10}"
00:00:16 v #598 > > │ 00:00:09 v #330 > > │     let v13 :
00:00:16 v #599 > > string = $"{v0}{v7}{v5}{v10}"
00:00:16 v #600 > > │ 00:00:09 v #331 > > │     let v14 :
00:00:16 v #601 > > string = $"{v0}{v7}{v2}{v10}"
00:00:16 v #602 > > │ 00:00:09 v #332 > > │     let v15 :
00:00:16 v #603 > > string = "E"
00:00:16 v #604 > > │ 00:00:09 v #333 > > │     let v16 :
00:00:16 v #605 > > string = $"{v15}{v1}{v2}{v10}"
00:00:16 v #606 > > │ 00:00:09 v #334 > > │     let v17 :
00:00:16 v #607 > > string = $"{v15}{v1}{v5}{v10}"
00:00:16 v #608 > > │ 00:00:09 v #335 > > │     let v18 :
00:00:16 v #609 > > string = $"{v15}{v7}{v5}{v10}"
00:00:16 v #610 > > │ 00:00:09 v #336 > > │     let v19 :
00:00:16 v #611 > > string = $"{v15}{v7}{v2}{v10}"
00:00:16 v #612 > > │ 00:00:09 v #337 > > │     let v20 :
00:00:16 v #613 > > string = $"{v15}{v1}{v2}{v3}"
00:00:16 v #614 > > │ 00:00:09 v #338 > > │     let v21 :
00:00:16 v #615 > > string = $"{v15}{v1}{v5}{v3}"
00:00:16 v #616 > > │ 00:00:09 v #339 > > │     let v22 :
00:00:16 v #617 > > string = $"{v15}{v7}{v5}{v3}"
00:00:16 v #618 > > │ 00:00:09 v #340 > > │     let v23 :
00:00:16 v #619 > > string = $"{v15}{v7}{v2}{v3}"
00:00:16 v #620 > > │ 00:00:09 v #341 > > │     let v24 :
00:00:16 v #621 > > string list = []
00:00:16 v #622 > > │ 00:00:09 v #342 > > │     let v25 :
00:00:16 v #623 > > string list = v23 :: v24
00:00:16 v #624 > > │ 00:00:09 v #343 > > │     let v28 :
00:00:16 v #625 > > string list = v22 :: v25
00:00:16 v #626 > > │ 00:00:09 v #344 > > │     let v31 :
00:00:16 v #627 > > string list = v21 :: v28
00:00:16 v #628 > > │ 00:00:09 v #345 > > │     let v34 :
00:00:16 v #629 > > string list = v20 :: v31
00:00:16 v #630 > > │ 00:00:09 v #346 > > │     let v37 :
00:00:16 v #631 > > string list = v19 :: v34
00:00:16 v #632 > > │ 00:00:09 v #347 > > │     let v40 :
00:00:16 v #633 > > string list = v18 :: v37
00:00:16 v #634 > > │ 00:00:09 v #348 > > │     let v43 :
00:00:16 v #635 > > string list = v17 :: v40
00:00:16 v #636 > > │ 00:00:09 v #349 > > │     let v46 :
00:00:16 v #637 > > string list = v16 :: v43
00:00:16 v #638 > > │ 00:00:09 v #350 > > │     let v49 :
00:00:16 v #639 > > string list = v14 :: v46
00:00:16 v #640 > > │ 00:00:09 v #351 > > │     let v52 :
00:00:16 v #641 > > string list = v13 :: v49
00:00:16 v #642 > > │ 00:00:09 v #352 > > │     let v55 :
00:00:16 v #643 > > string list = v12 :: v52
00:00:16 v #644 > > │ 00:00:09 v #353 > > │     let v58 :
00:00:16 v #645 > > string list = v11 :: v55
00:00:16 v #646 > > │ 00:00:09 v #354 > > │     let v61 :
00:00:16 v #647 > > string list = v9 :: v58
00:00:16 v #648 > > │ 00:00:09 v #355 > > │     let v64 :
00:00:16 v #649 > > string list = v8 :: v61
00:00:16 v #650 > > │ 00:00:09 v #356 > > │     let v67 :
00:00:16 v #651 > > string list = v6 :: v64
00:00:16 v #652 > > │ 00:00:09 v #357 > > │     let v70 :
00:00:16 v #653 > > string list = v4 :: v67
00:00:16 v #654 > > │ 00:00:09 v #358 > > │     let v73 :
00:00:16 v #655 > > (string list -> (string [])) = List.toArray
00:00:16 v #656 > > │ 00:00:09 v #359 > > │     let v74 :
00:00:16 v #657 > > (string []) = v73 v70
00:00:16 v #658 > > │ 00:00:09 v #360 > > │     let v77 :
00:00:16 v #659 > > string = "ISTJ"
00:00:16 v #660 > > │ 00:00:09 v #361 > > │     let v78 :
00:00:16 v #661 > > string = "ISFJ"
00:00:16 v #662 > > │ 00:00:09 v #362 > > │     let v79 :
00:00:16 v #663 > > string = "INFJ"
00:00:16 v #664 > > │ 00:00:09 v #363 > > │     let v80 :
00:00:16 v #665 > > string = "INTJ"
00:00:16 v #666 > > │ 00:00:09 v #364 > > │     let v81 :
00:00:16 v #667 > > string = "ISTP"
00:00:16 v #668 > > │ 00:00:09 v #365 > > │     let v82 :
00:00:16 v #669 > > string = "ISFP"
00:00:16 v #670 > > │ 00:00:09 v #366 > > │     let v83 :
00:00:16 v #671 > > string = "INFP"
00:00:16 v #672 > > │ 00:00:09 v #367 > > │     let v84 :
00:00:16 v #673 > > string = "INTP"
00:00:16 v #674 > > │ 00:00:09 v #368 > > │     let v85 :
00:00:16 v #675 > > string = "ESTP"
00:00:16 v #676 > > │ 00:00:09 v #369 > > │     let v86 :
00:00:16 v #677 > > string = "ESFP"
00:00:16 v #678 > > │ 00:00:09 v #370 > > │     let v87 :
00:00:16 v #679 > > string = "ENFP"
00:00:16 v #680 > > │ 00:00:09 v #371 > > │     let v88 :
00:00:16 v #681 > > string = "ENTP"
00:00:16 v #682 > > │ 00:00:09 v #372 > > │     let v89 :
00:00:16 v #683 > > string = "ESTJ"
00:00:16 v #684 > > │ 00:00:09 v #373 > > │     let v90 :
00:00:16 v #685 > > string = "ESFJ"
00:00:16 v #686 > > │ 00:00:09 v #374 > > │     let v91 :
00:00:16 v #687 > > string = "ENFJ"
00:00:16 v #688 > > │ 00:00:09 v #375 > > │     let v92 :
00:00:16 v #689 > > string = "ENTJ"
00:00:16 v #690 > > │ 00:00:09 v #376 > > │     let v93 :
00:00:16 v #691 > > (string []) = [|v77; v78; v79; v80; v81; v82;
00:00:16 v #692 > > │ 00:00:09 v #377 > > v83; v84; v85; v86; v87; v88; v89;
00:00:16 v #693 > > v90; v91; v92|]
00:00:16 v #694 > > │ 00:00:09 v #378 > > │     let v94 :
00:00:16 v #695 > > bool = v74 = v93
00:00:16 v #696 > > │ 00:00:09 v #379 > > │     let v98 :
00:00:16 v #697 > > bool =
00:00:16 v #698 > > │ 00:00:09 v #380 > > │         if v94
00:00:16 v #699 > > then
00:00:16 v #700 > > │ 00:00:09 v #381 > > │             true
00:00:16 v #701 > > │ 00:00:09 v #382 > > │         else
00:00:16 v #702 > > │ 00:00:09 v #383 > > │
00:00:16 v #703 > > method1(v94)
00:00:16 v #704 > > │ 00:00:09 v #384 > > │     let v99 :
00:00:16 v #705 > > string = "__assert_eq'"
00:00:16 v #706 > > │ 00:00:09 v #385 > > │     let v100 :
00:00:16 v #707 > > string = $"{v99} / actual: %A{v74} / expected:
00:00:16 v #708 > > │ 00:00:09 v #386 > > %A{v93}"
00:00:16 v #709 > > │ 00:00:09 v #387 > > │     let v103 :
00:00:16 v #710 > > unit = ()
00:00:16 v #711 > > │ 00:00:09 v #388 > > │     let v104 :
00:00:16 v #712 > > (unit -> unit) = closure0(v100)
00:00:16 v #713 > > │ 00:00:09 v #389 > > │     let v105 :
00:00:16 v #714 > > unit = (fun () -> v104 (); v103) ()
00:00:16 v #715 > > │ 00:00:09 v #390 > > │     let v107 :
00:00:16 v #716 > > bool = v98 = false
00:00:16 v #717 > > │ 00:00:09 v #391 > > │     if v107 then
00:00:16 v #718 > > │ 00:00:09 v #392 > > │
00:00:16 v #719 > > failwith<unit> v100
00:00:16 v #720 > > │ 00:00:09 v #393 > > │ method0()
00:00:16 v #721 > > │ 00:00:09 v #394 > > │
00:00:16 v #722 > > │ 00:00:09 v #395 > > │ __assert_eq'
00:00:16 v #723 > > actual: [|"ISTJ"; "ISFJ"; "INFJ"; "INTJ";
00:00:16 v #724 > > │ 00:00:09 v #396 > > "ISTP"; "ISFP"; "INFP"; "INTP";
00:00:16 v #725 > > "ESTP"; "ESFP";
00:00:16 v #726 > > │ 00:00:09 v #397 > > │   "ENFP"; "ENTP";
00:00:16 v #727 > > "ESTJ"; "ESFJ"; "ENFJ"; "ENTJ"|]
00:00:16 v #728 > > │ 00:00:09 v #398 > > expected: [|"ISTJ"; "ISFJ"; "INFJ";
00:00:16 v #729 > > "INTJ"; "ISTP"; "ISFP"; "INFP"; "INTP";
00:00:16 v #730 > > │ 00:00:09 v #399 > > "ESTP"; "ESFP";
00:00:16 v #731 > > │ 00:00:09 v #400 > > │   "ENFP"; "ENTP";
00:00:16 v #732 > > "ESTJ"; "ESFJ"; "ENFJ"; "ENTJ"|]
00:00:16 v #733 > > │ 00:00:09 v #401 > > │
00:00:16 v #734 > > │ 00:00:10 v #402 > >
00:00:16 v #735 > > │ 00:00:10 v #403 > > ── fsharp
00:00:16 v #736 > > ──────────────────────────────────────────────────────────────────────
00:00:16 v #737 > > │ 00:00:10 v #404 > > type PhonologicalFeature =
00:00:16 v #738 > > │ 00:00:10 v #405 > >     | VowelFeature of
00:00:16 v #739 > > │ 00:00:10 v #406 > >         height: Height
00:00:16 v #740 > > │ 00:00:10 v #407 > >         * backness: Backness
00:00:16 v #741 > > │ 00:00:10 v #408 > >         * roundedness: Roundedness
00:00:16 v #742 > > │ 00:00:10 v #409 > >         * tone: Option<Tone>
00:00:16 v #743 > > │ 00:00:10 v #410 > >         * stress: Option<Stress>
00:00:16 v #744 > > │ 00:00:10 v #411 > >         * length: Option<Length>
00:00:16 v #745 > > │ 00:00:10 v #412 > >     | ConsonantFeature of
00:00:16 v #746 > > │ 00:00:10 v #413 > >         place: PlaceOfArticulation
00:00:16 v #747 > > │ 00:00:10 v #414 > >         * manner:
00:00:16 v #748 > > MannerOfArticulation
00:00:16 v #749 > > │ 00:00:10 v #415 > >         * voicing: Voicing
00:00:16 v #750 > > │ 00:00:10 v #416 > >         * length: Option<Length>
00:00:16 v #751 > > │ 00:00:10 v #417 > >     | VowelHarmonyFeature
00:00:16 v #752 > > │ 00:00:10 v #418 > >     | PitchAccentFeature
00:00:16 v #753 > > │ 00:00:10 v #419 > >
00:00:16 v #754 > > │ 00:00:10 v #420 > > and Stress = Primary | Secondary
00:00:16 v #755 > > │ 00:00:10 v #421 > > and Length = Long | Short | HalfLong
00:00:16 v #756 > > │ 00:00:10 v #422 > >
00:00:16 v #757 > > │ 00:00:10 v #423 > > and Height =
00:00:16 v #758 > > │ 00:00:10 v #424 > >     | High | NearHigh | HighMid
00:00:16 v #759 > > │ 00:00:10 v #425 > >     | Mid | LowMid | NearLow
00:00:16 v #760 > > │ 00:00:10 v #426 > >     | Low
00:00:16 v #761 > > │ 00:00:10 v #427 > >
00:00:16 v #762 > > │ 00:00:10 v #428 > > and Backness = Front | Central |
00:00:16 v #763 > > Back
00:00:16 v #764 > > │ 00:00:10 v #429 > >
00:00:16 v #765 > > │ 00:00:10 v #430 > > and Roundedness = Rounded |
00:00:16 v #766 > > Unrounded
00:00:16 v #767 > > │ 00:00:10 v #431 > >
00:00:16 v #768 > > │ 00:00:10 v #432 > > and PlaceOfArticulation =
00:00:16 v #769 > > │ 00:00:10 v #433 > >     | Bilabial | Labiodental |
00:00:16 v #770 > > Dental
00:00:16 v #771 > > │ 00:00:10 v #434 > >     | Alveolar | Postalveolar |
00:00:16 v #772 > > Retroflex
00:00:16 v #773 > > │ 00:00:10 v #435 > >     | Palatal | Velar | Uvular
00:00:16 v #774 > > │ 00:00:10 v #436 > >     | Pharyngeal | Epiglottal |
00:00:16 v #775 > > Glottal
00:00:16 v #776 > > │ 00:00:10 v #437 > >
00:00:16 v #777 > > │ 00:00:10 v #438 > > and MannerOfArticulation =
00:00:16 v #778 > > │ 00:00:10 v #439 > >     | Plosive | Nasal | Trill
00:00:16 v #779 > > │ 00:00:10 v #440 > >     | TapOrFlap | Fricative |
00:00:16 v #780 > > LateralFricative
00:00:16 v #781 > > │ 00:00:10 v #441 > >     | Approximant |
00:00:16 v #782 > > LateralApproximant
00:00:16 v #783 > > │ 00:00:10 v #442 > >
00:00:16 v #784 > > │ 00:00:10 v #443 > > and Voicing = Voiced | Voiceless
00:00:16 v #785 > > │ 00:00:10 v #444 > >
00:00:16 v #786 > > │ 00:00:10 v #445 > > and SecondaryArticulation =
00:00:16 v #787 > > │ 00:00:10 v #446 > >     | Labialization | Palatalization
00:00:16 v #788 > > | Velarization
00:00:16 v #789 > > │ 00:00:10 v #447 > >     | Pharyngealization | Aspiration
00:00:16 v #790 > > │ 00:00:10 v #448 > >
00:00:16 v #791 > > │ 00:00:10 v #449 > > and Tone =
00:00:16 v #792 > > │ 00:00:10 v #450 > >     | LevelTone of int
00:00:16 v #793 > > │ 00:00:10 v #451 > >     | ContourTone of int list
00:00:16 v #794 > > │ 00:00:10 v #452 > >
00:00:16 v #795 > > │ 00:00:10 v #453 > > and MorphologicalFeature =
00:00:16 v #796 > > │ 00:00:10 v #454 > >     | RootFeature of string
00:00:16 v #797 > > │ 00:00:10 v #455 > >     | AffixFeature of AffixType *
00:00:16 v #798 > > string
00:00:16 v #799 > > │ 00:00:10 v #456 > >     | IncorporationFeature of string
00:00:16 v #800 > > * MorphologicalFeature
00:00:16 v #801 > > │ 00:00:10 v #457 > >     | NonConcatenativePattern of
00:00:16 v #802 > > string * string
00:00:16 v #803 > > │ 00:00:10 v #458 > >     | AgglutinativeAffixFeature of
00:00:16 v #804 > > AgglutinativeAffixType * string
00:00:16 v #805 > > │ 00:00:10 v #459 > >     | HonorificFeature of
00:00:16 v #806 > > HonorificType * string
00:00:16 v #807 > > │ 00:00:10 v #460 > >
00:00:16 v #808 > > │ 00:00:10 v #461 > > and AgglutinativeAffixType = Suffix
00:00:16 v #809 > > | Prefix
00:00:16 v #810 > > │ 00:00:10 v #462 > >
00:00:16 v #811 > > │ 00:00:10 v #463 > > and HonorificType = VerbHonorific |
00:00:16 v #812 > > NounHonorific
00:00:16 v #813 > > │ 00:00:10 v #464 > >
00:00:16 v #814 > > │ 00:00:10 v #465 > > and AffixType =
00:00:16 v #815 > > │ 00:00:10 v #466 > >     | Prefix | Suffix | Infix
00:00:16 v #816 > > │ 00:00:10 v #467 > >     | Circumfix
00:00:16 v #817 > > │ 00:00:10 v #468 > >
00:00:16 v #818 > > │ 00:00:10 v #469 > > type SyntacticFeature =
00:00:16 v #819 > > │ 00:00:10 v #470 > >     | WordFeature of
00:00:16 v #820 > > MorphologicalFeature list * LexicalCategory
00:00:16 v #821 > > │ 00:00:10 v #471 > >     | PhraseFeature of PhraseType *
00:00:16 v #822 > > SyntacticFeature list
00:00:16 v #823 > > │ 00:00:10 v #472 > >     | GrammaticalRelation of
00:00:16 v #824 > > GrammaticalRelationType * SyntacticFeature list
00:00:16 v #825 > > │ 00:00:10 v #473 > >     | SOVOrderFeature
00:00:16 v #826 > > │ 00:00:10 v #474 > >     | TopicCommentFeature
00:00:16 v #827 > > │ 00:00:10 v #475 > >
00:00:16 v #828 > > │ 00:00:10 v #476 > > and GrammaticalRelationType =
00:00:16 v #829 > > │ 00:00:10 v #477 > >     | Ergative | Absolutive |
00:00:16 v #830 > > Nominative
00:00:16 v #831 > > │ 00:00:10 v #478 > >     | Accusative
00:00:16 v #832 > > │ 00:00:10 v #479 > >
00:00:16 v #833 > > │ 00:00:10 v #480 > > and LexicalCategory =
00:00:16 v #834 > > │ 00:00:10 v #481 > >     | Noun | Verb | Adjective
00:00:16 v #835 > > │ 00:00:10 v #482 > >     | Adverb | Pronoun | Preposition
00:00:16 v #836 > > │ 00:00:10 v #483 > >     | Conjunction | Determiner |
00:00:16 v #837 > > Interjection
00:00:16 v #838 > > │ 00:00:10 v #484 > >
00:00:16 v #839 > > │ 00:00:10 v #485 > > and PhraseType =
00:00:16 v #840 > > │ 00:00:10 v #486 > >     | NP | VP | AP
00:00:16 v #841 > > │ 00:00:10 v #487 > >     | PP | CP
00:00:16 v #842 > > │ 00:00:10 v #488 > >
00:00:16 v #843 > > │ 00:00:10 v #489 > > and SemanticFeature =
00:00:16 v #844 > > │ 00:00:10 v #490 > >     | Meaning of string
00:00:16 v #845 > > │ 00:00:10 v #491 > >     | SemanticRole of
00:00:16 v #846 > > SemanticRoleType * SemanticFeature
00:00:16 v #847 > > │ 00:00:10 v #492 > >
00:00:16 v #848 > > │ 00:00:10 v #493 > > and SemanticRoleType =
00:00:16 v #849 > > │ 00:00:10 v #494 > >     | Agent | Patient | Instrument
00:00:16 v #850 > > │ 00:00:10 v #495 > >     | Location | Time | Cause
00:00:16 v #851 > > │ 00:00:10 v #496 > >
00:00:16 v #852 > > │ 00:00:10 v #497 > > and PragmaticFeature =
00:00:16 v #853 > > │ 00:00:10 v #498 > >     | UseContext of string
00:00:16 v #854 > > │ 00:00:10 v #499 > >     | PolitenessLevel of Politeness
00:00:16 v #855 > > │ 00:00:10 v #500 > >     | SpeechAct of SpeechActType
00:00:16 v #856 > > │ 00:00:10 v #501 > >     | SpeechLevel of SpeechLevelType
00:00:16 v #857 > > │ 00:00:10 v #502 > >
00:00:16 v #858 > > │ 00:00:10 v #503 > > and Politeness = Formal | Informal |
00:00:16 v #859 > > Neutral
00:00:16 v #860 > > │ 00:00:10 v #504 > >
00:00:16 v #861 > > │ 00:00:10 v #505 > > and SpeechActType =
00:00:16 v #862 > > │ 00:00:10 v #506 > >     | Assertive | Directive |
00:00:16 v #863 > > Commissive
00:00:16 v #864 > > │ 00:00:10 v #507 > >     | Expressive | Declarative
00:00:16 v #865 > > │ 00:00:10 v #508 > >
00:00:16 v #866 > > │ 00:00:10 v #509 > > and SpeechLevelType =
00:00:16 v #867 > > │ 00:00:10 v #510 > >     | FormalHigh | FormalLow |
00:00:16 v #868 > > InformalHigh
00:00:16 v #869 > > │ 00:00:10 v #511 > >     | InformalLow | Neutral
00:00:16 v #870 > > │ 00:00:10 v #512 > >
00:00:16 v #871 > > │ 00:00:10 v #513 > > type LinguisticFeature =
00:00:16 v #872 > > │ 00:00:10 v #514 > >     | Phonological of
00:00:16 v #873 > > PhonologicalFeature
00:00:16 v #874 > > │ 00:00:10 v #515 > >     | Morphological of
00:00:16 v #875 > > MorphologicalFeature
00:00:16 v #876 > > │ 00:00:10 v #516 > >     | Syntactic of SyntacticFeature
00:00:16 v #877 > > │ 00:00:10 v #517 > >     | Semantic of SemanticFeature
00:00:16 v #878 > > │ 00:00:10 v #518 > >     | Pragmatic of PragmaticFeature
00:00:16 v #879 > > │ 00:00:10 v #519 > >
00:00:16 v #880 > > │ 00:00:10 v #520 > > type LanguageConstruct =
00:00:16 v #881 > > │ 00:00:10 v #521 > >     | LanguageElement of
00:00:16 v #882 > > LinguisticFeature
00:00:16 v #883 > > │ 00:00:10 v #522 > >     | LanguageStructure of
00:00:16 v #884 > > LanguageConstruct list
00:00:16 v #885 > > │ 00:00:10 v #523 > >     | TranslationElement of
00:00:16 v #886 > > TranslationFeature
00:00:16 v #887 > > │ 00:00:10 v #524 > >
00:00:16 v #888 > > │ 00:00:10 v #525 > > and TranslationFeature =
00:00:16 v #889 > > │ 00:00:10 v #526 > >     | LinkedPhonological of
00:00:16 v #890 > > PhonologicalFeature * PhonologicalFeature
00:00:16 v #891 > > │ 00:00:10 v #527 > >     | LinkedMorphological of
00:00:16 v #892 > > MorphologicalFeature * MorphologicalFeature
00:00:16 v #893 > > │ 00:00:10 v #528 > >     | LinkedSyntactic of
00:00:16 v #894 > > SyntacticFeature * SyntacticFeature
00:00:16 v #895 > > │ 00:00:10 v #529 > >     | LinkedSemantic of
00:00:16 v #896 > > SemanticFeature * SemanticFeature
00:00:16 v #897 > > │ 00:00:10 v #530 > >
00:00:16 v #898 > > │ 00:00:10 v #531 > > type Discourse = DiscourseUnit of
00:00:16 v #899 > > LanguageConstruct list
00:00:16 v #900 > > │ 00:00:10 v #532 > >
00:00:16 v #901 > > │ 00:00:10 v #533 > > type LanguageModel =
00:00:16 v #902 > > │ 00:00:10 v #534 > >     | Model of discourse: Discourse
00:00:16 v #903 > > │ 00:00:11 v #535 > >
00:00:16 v #904 > > │ 00:00:11 v #536 > > ── fsharp
00:00:16 v #905 > > ──────────────────────────────────────────────────────────────────────
00:00:16 v #906 > > │ 00:00:11 v #537 > > let testEnglish =
00:00:16 v #907 > > │ 00:00:11 v #538 > >     Model(
00:00:16 v #908 > > │ 00:00:11 v #539 > >         DiscourseUnit [[
00:00:16 v #909 > > │ 00:00:11 v #540 > >             LanguageElement
00:00:16 v #910 > > (Phonological (ConsonantFeature (Alveolar, Nasal,
00:00:16 v #911 > > │ 00:00:11 v #541 > > Voiced, Some(HalfLong))));
00:00:16 v #912 > > │ 00:00:11 v #542 > >             LanguageElement
00:00:16 v #913 > > (Phonological (VowelFeature (High, Front, Unrounded,
00:00:16 v #914 > > │ 00:00:11 v #543 > > Some(LevelTone 1), Some(Primary),
00:00:16 v #915 > > Some(Short))));
00:00:16 v #916 > > │ 00:00:11 v #544 > >             LanguageElement
00:00:16 v #917 > > (Phonological (VowelFeature (Low, Front, Unrounded,
00:00:16 v #918 > > │ 00:00:11 v #545 > > Some(LevelTone 2), Some(Secondary),
00:00:16 v #919 > > Some(Long))));
00:00:16 v #920 > > │ 00:00:11 v #546 > >             LanguageElement
00:00:16 v #921 > > (Phonological (ConsonantFeature (Velar, Plosive,
00:00:16 v #922 > > │ 00:00:11 v #547 > > Voiceless, Some(HalfLong))));
00:00:16 v #923 > > │ 00:00:11 v #548 > >             LanguageElement
00:00:16 v #924 > > (Morphological (RootFeature "I"));
00:00:16 v #925 > > │ 00:00:11 v #549 > >             LanguageElement
00:00:16 v #926 > > (Morphological (RootFeature "see"));
00:00:16 v #927 > > │ 00:00:11 v #550 > >             LanguageElement
00:00:16 v #928 > > (Morphological (RootFeature "a"));
00:00:16 v #929 > > │ 00:00:11 v #551 > >             LanguageElement
00:00:16 v #930 > > (Morphological (RootFeature "cat"));
00:00:16 v #931 > > │ 00:00:11 v #552 > >             LanguageElement
00:00:16 v #932 > > (Syntactic (PhraseFeature (NP, [[WordFeature
00:00:16 v #933 > > │ 00:00:11 v #553 > > ([[RootFeature "I"]], Pronoun)]])));
00:00:16 v #934 > > │ 00:00:11 v #554 > >             LanguageElement
00:00:16 v #935 > > (Syntactic (PhraseFeature (VP, [[WordFeature
00:00:16 v #936 > > │ 00:00:11 v #555 > > ([[RootFeature "see"]], Verb)]])));
00:00:16 v #937 > > │ 00:00:11 v #556 > >             LanguageElement
00:00:16 v #938 > > (Syntactic (PhraseFeature (NP, [[WordFeature
00:00:16 v #939 > > │ 00:00:11 v #557 > > ([[RootFeature "a"; RootFeature
00:00:16 v #940 > > "cat"]], Noun)]])));
00:00:16 v #941 > > │ 00:00:11 v #558 > >             LanguageElement
00:00:16 v #942 > > (Semantic (Meaning "Perception act of a feline by
00:00:16 v #943 > > │ 00:00:11 v #559 > > the speaker"));
00:00:16 v #944 > > │ 00:00:11 v #560 > >             LanguageElement
00:00:16 v #945 > > (Pragmatic (UseContext "Statement of an action being
00:00:16 v #946 > > │ 00:00:11 v #561 > > observed"))
00:00:16 v #947 > > │ 00:00:11 v #562 > >         ]]
00:00:16 v #948 > > │ 00:00:11 v #563 > >     )
00:00:16 v #949 > > │ 00:00:11 v #564 > >
00:00:16 v #950 > > │ 00:00:11 v #565 > > let testPortuguese =
00:00:16 v #951 > > │ 00:00:11 v #566 > >     Model(
00:00:16 v #952 > > │ 00:00:11 v #567 > >         DiscourseUnit [[
00:00:16 v #953 > > │ 00:00:11 v #568 > >             LanguageElement
00:00:16 v #954 > > (Phonological (VowelFeature (High, Front, Unrounded,
00:00:16 v #955 > > │ 00:00:11 v #569 > > Some(LevelTone 1), Some(Primary),
00:00:16 v #956 > > Some(Short))));
00:00:16 v #957 > > │ 00:00:11 v #570 > >             LanguageElement
00:00:16 v #958 > > (Phonological (VowelFeature (Low, Front, Unrounded,
00:00:16 v #959 > > │ 00:00:11 v #571 > > Some(LevelTone 2), Some(Secondary),
00:00:16 v #960 > > Some(Long))));
00:00:16 v #961 > > │ 00:00:11 v #572 > >             LanguageElement
00:00:16 v #962 > > (Phonological (VowelFeature (Mid, Back, Rounded,
00:00:16 v #963 > > │ 00:00:11 v #573 > > Some(LevelTone 3), Some(Primary),
00:00:16 v #964 > > Some(Short))));
00:00:16 v #965 > > │ 00:00:11 v #574 > >             LanguageElement
00:00:16 v #966 > > (Phonological (ConsonantFeature (Velar, Plosive,
00:00:16 v #967 > > │ 00:00:11 v #575 > > Voiceless, Some(HalfLong))));
00:00:16 v #968 > > │ 00:00:11 v #576 > >             LanguageElement
00:00:16 v #969 > > (Morphological (RootFeature "Eu"));
00:00:16 v #970 > > │ 00:00:11 v #577 > >             LanguageElement
00:00:16 v #971 > > (Morphological (RootFeature "ver" |> ignore;
00:00:16 v #972 > > │ 00:00:11 v #578 > > AffixFeature (Suffix, "o")));
00:00:16 v #973 > > │ 00:00:11 v #579 > >             LanguageElement
00:00:16 v #974 > > (Morphological (RootFeature "um"));
00:00:16 v #975 > > │ 00:00:11 v #580 > >             LanguageElement
00:00:16 v #976 > > (Morphological (RootFeature "gato"));
00:00:16 v #977 > > │ 00:00:11 v #581 > >             LanguageElement
00:00:16 v #978 > > (Syntactic (PhraseFeature (NP, [[WordFeature
00:00:16 v #979 > > │ 00:00:11 v #582 > > ([[RootFeature "Eu"]],
00:00:16 v #980 > > Pronoun)]])));
00:00:16 v #981 > > │ 00:00:11 v #583 > >             LanguageElement
00:00:16 v #982 > > (Syntactic (PhraseFeature (VP, [[WordFeature
00:00:16 v #983 > > │ 00:00:11 v #584 > > ([[RootFeature "vejo"]], Verb)]])));
00:00:16 v #984 > > │ 00:00:11 v #585 > >             LanguageElement
00:00:16 v #985 > > (Syntactic (PhraseFeature (NP, [[WordFeature
00:00:16 v #986 > > │ 00:00:11 v #586 > > ([[RootFeature "um"; RootFeature
00:00:16 v #987 > > "gato"]], Noun)]])));
00:00:16 v #988 > > │ 00:00:11 v #587 > >             LanguageElement
00:00:16 v #989 > > (Semantic (Meaning "Ação de percepção de um felino
00:00:16 v #990 > > │ 00:00:11 v #588 > > pelo falante"));
00:00:16 v #991 > > │ 00:00:11 v #589 > >             LanguageElement
00:00:16 v #992 > > (Pragmatic (UseContext "Declaração de uma ação sendo
00:00:16 v #993 > > │ 00:00:11 v #590 > > observada"))
00:00:16 v #994 > > │ 00:00:11 v #591 > >         ]]
00:00:16 v #995 > > │ 00:00:11 v #592 > >     )
00:00:16 v #996 > > │ 00:00:11 v #593 > >
00:00:16 v #997 > > │ 00:00:11 v #594 > > let testKorean =
00:00:16 v #998 > > │ 00:00:11 v #595 > >     Model(
00:00:16 v #999 > > │ 00:00:11 v #596 > >         DiscourseUnit [[
00:00:16 v #1000 > > │ 00:00:11 v #597 > >             LanguageElement
00:00:16 v #1001 > > (Phonological (ConsonantFeature (Alveolar, Nasal,
00:00:16 v #1002 > > │ 00:00:11 v #598 > > Voiced, Some(Short))));
00:00:16 v #1003 > > │ 00:00:11 v #599 > >             LanguageElement
00:00:16 v #1004 > > (Phonological (VowelFeature (High, Back, Rounded,
00:00:16 v #1005 > > │ 00:00:11 v #600 > > None, None, Some(Short))));
00:00:16 v #1006 > > │ 00:00:11 v #601 > >             LanguageElement
00:00:16 v #1007 > > (Phonological (VowelFeature (Mid, Front, Unrounded,
00:00:16 v #1008 > > │ 00:00:11 v #602 > > None, None, Some(Long))));
00:00:16 v #1009 > > │ 00:00:11 v #603 > >             LanguageElement
00:00:16 v #1010 > > (Phonological (ConsonantFeature (Bilabial, Plosive,
00:00:16 v #1011 > > │ 00:00:11 v #604 > > Voiceless, Some(Short))));
00:00:16 v #1012 > > │ 00:00:11 v #605 > >             LanguageElement
00:00:16 v #1013 > > (Morphological (RootFeature "나"));
00:00:16 v #1014 > > │ 00:00:11 v #606 > >             LanguageElement
00:00:16 v #1015 > > (Morphological (RootFeature "보다"));
00:00:16 v #1016 > > │ 00:00:11 v #607 > >             LanguageElement
00:00:16 v #1017 > > (Morphological (AffixFeature (Suffix, "아")));
00:00:16 v #1018 > > │ 00:00:11 v #608 > >             LanguageElement
00:00:16 v #1019 > > (Morphological (RootFeature "고양이"));
00:00:16 v #1020 > > │ 00:00:11 v #609 > >             LanguageElement
00:00:16 v #1021 > > (Syntactic (PhraseFeature (NP, [[WordFeature
00:00:16 v #1022 > > │ 00:00:11 v #610 > > ([[RootFeature "나"]],
00:00:16 v #1023 > > Pronoun)]])));
00:00:16 v #1024 > > │ 00:00:11 v #611 > >             LanguageElement
00:00:16 v #1025 > > (Syntactic (PhraseFeature (VP, [[WordFeature
00:00:16 v #1026 > > │ 00:00:11 v #612 > > ([[RootFeature "보다"; AffixFeature
00:00:16 v #1027 > > (Suffix, "아")]], Verb)]])));
00:00:16 v #1028 > > │ 00:00:11 v #613 > >             LanguageElement
00:00:16 v #1029 > > (Syntactic (PhraseFeature (NP, [[WordFeature
00:00:16 v #1030 > > │ 00:00:11 v #614 > > ([[RootFeature "고양이"]],
00:00:16 v #1031 > > Noun)]])));
00:00:16 v #1032 > > │ 00:00:11 v #615 > >             LanguageElement
00:00:16 v #1033 > > (Semantic (Meaning "화자에 의한 고양이의 관찰
00:00:16 v #1034 > > │ 00:00:11 v #616 > > 행위"));
00:00:16 v #1035 > > │ 00:00:11 v #617 > >             LanguageElement
00:00:16 v #1036 > > (Pragmatic (UseContext "관찰되고 있는 행동의 진술"))
00:00:16 v #1037 > > │ 00:00:11 v #618 > >         ]]
00:00:16 v #1038 > > │ 00:00:11 v #619 > >     )
00:00:16 v #1039 > > │ 00:00:11 v #620 > >
00:00:16 v #1040 > > │ 00:00:11 v #621 > > ── markdown
00:00:16 v #1041 > > ────────────────────────────────────────────────────────────────────
00:00:16 v #1042 > > │ 00:00:11 v #622 > > │ ## main
00:00:16 v #1043 > > │ 00:00:11 v #623 > >
00:00:16 v #1044 > > │ 00:00:11 v #624 > > ── spiral
00:00:16 v #1045 > > ──────────────────────────────────────────────────────────────────────
00:00:16 v #1046 > > │ 00:00:11 v #625 > > inl main (_args : array_base string)
00:00:16 v #1047 > > =
00:00:16 v #1048 > > │ 00:00:11 v #626 > >     0i32
00:00:16 v #1049 > > │ 00:00:11 v #627 > >
00:00:16 v #1050 > > │ 00:00:11 v #628 > > inl main () =
00:00:16 v #1051 > > │ 00:00:11 v #629 > >     $'let main args = !main args' :
00:00:16 v #1052 > > ()
00:00:16 v #1053 > > │ 00:00:11 v #630 > >
00:00:16 v #1054 > > │ 00:00:11 v #631 > > ── spiral
00:00:16 v #1055 > > ──────────────────────────────────────────────────────────────────────
00:00:16 v #1056 > > │ 00:00:11 v #632 > > inl app () =
00:00:16 v #1057 > > │ 00:00:11 v #633 > >     "test" |> console.write_line
00:00:16 v #1058 > > │ 00:00:11 v #634 > >     0i32
00:00:16 v #1059 > > │ 00:00:11 v #635 > >
00:00:16 v #1060 > > │ 00:00:11 v #636 > > inl main () =
00:00:16 v #1061 > > │ 00:00:11 v #637 > >     print_static "<test>"
00:00:16 v #1062 > > │ 00:00:11 v #638 > >
00:00:16 v #1063 > > │ 00:00:11 v #639 > >     app
00:00:16 v #1064 > > │ 00:00:11 v #640 > >     |> dyn
00:00:16 v #1065 > > │ 00:00:11 v #641 > >     |> ignore
00:00:16 v #1066 > > │ 00:00:11 v #642 > >
00:00:16 v #1067 > > │ 00:00:11 v #643 > >     print_static "</test>"
00:00:16 v #1068 > > │ 00:00:11 v #644 > 00:00:11 v #3
00:00:16 v #1069 > > runtime.execute_with_options / result / { exit_code = 0; std_trace_length =
00:00:16 v #1070 > > 27199 }
00:00:16 v #1071 > > │ 00:00:11 v #645 > 00:00:11 d #4
00:00:16 v #1072 > > runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert",
00:00:16 v #1073 > > "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.dib.ipynb",
00:00:16 v #1074 > > "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter
00:00:16 v #1075 > > nbconvert
00:00:16 v #1076 > > "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.dib.ipynb" --to
00:00:16 v #1077 > > html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables
00:00:16 v #1078 > > = Array(MutCell([])); on_line = None; stdin = None; trace = true;
00:00:16 v #1079 > > working_directory = None } }
00:00:16 v #1080 > > │ 00:00:12 v #646 > 00:00:11 v #5 ! [NbConvertApp]
00:00:16 v #1081 > > Converting notebook
00:00:16 v #1082 > > /home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.dib.ipynb to html
00:00:16 v #1083 > > │ 00:00:12 v #647 > 00:00:11 v #6 !
00:00:16 v #1084 > > /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__i
00:00:16 v #1085 > > nit__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will
00:00:16 v #1086 > > become a hard error in future nbformat versions. You may want to use
00:00:16 v #1087 > > `normalize()` on your notebooks before validations (available since nbformat
00:00:16 v #1088 > > 5.1.4). Previous versions of nbformat are fixing this issue transparently, and
00:00:16 v #1089 > > will stop doing so in the future.
00:00:16 v #1090 > > │ 00:00:12 v #648 > 00:00:11 v #7 !   validate(nb)
00:00:16 v #1091 > > │ 00:00:12 v #649 > 00:00:12 v #8 !
00:00:16 v #1092 > > /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/fi
00:00:16 v #1093 > > lters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on
00:00:16 v #1094 > > Python 3
00:00:16 v #1095 > > │ 00:00:12 v #650 > 00:00:12 v #9 !   return
00:00:16 v #1096 > > _pygments_highlight(
00:00:16 v #1097 > > │ 00:00:12 v #651 > 00:00:12 v #10 ! [NbConvertApp]
00:00:16 v #1098 > > Writing 332732 bytes to
00:00:16 v #1099 > > /home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.dib.html
00:00:16 v #1100 > > │ 00:00:13 v #652 > 00:00:12 v #11
00:00:16 v #1101 > > runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 914
00:00:16 v #1102 > > }
00:00:16 v #1103 > > │ 00:00:13 v #653 > 00:00:12 d #12 spiral.run / dib
00:00:16 v #1104 > > / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 914 }
00:00:16 v #1105 > > │ 00:00:13 v #654 > 00:00:12 d #13
00:00:16 v #1106 > > runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter
00:00:16 v #1107 > > = 1; $path =
00:00:16 v #1108 > > '/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.dib.html';
00:00:16 v #1109 > > (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', {
00:00:16 v #1110 > > $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command =
00:00:16 v #1111 > > pwsh -c "$counter = 1; $path =
00:00:16 v #1112 > > '/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.dib.html';
00:00:16 v #1113 > > (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', {
00:00:16 v #1114 > > $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token =
00:00:16 v #1115 > > None; environment_variables = Array(MutCell([])); on_line = None; stdin = None;
00:00:16 v #1116 > > trace = true; working_directory = None } }
00:00:16 v #1117 > > │ 00:00:13 v #655 > 00:00:12 v #14
00:00:16 v #1118 > > runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:00:16 v #1119 > > │ 00:00:13 v #656 > 00:00:12 d #15 spiral.run / dib
00:00:16 v #1120 > > / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:00:16 v #1121 > > │ 00:00:13 v #657 > 00:00:12 d #16 spiral.run / dib
00:00:16 v #1122 > > / { exit_code = 0; result_length = 28172 }
00:00:16 v #1123 > > │ 00:00:13 d #658 runtime.execute_with_options_async / {
00:00:16 v #1124 > > exit_code = 0; output_length = 32177 }
00:00:16 v #1125 > > │ 00:00:13 d #1 main / executeCommand / exitCode: 0
00:00:16 v #1126 > > command: ../../../../deps/spiral/workspace/target/release/spiral dib --path
00:00:16 v #1127 > > test.dib --retries 3
00:00:16 v #1128 > > │
00:00:16 v #1129 > >
00:00:16 v #1130 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:16 v #1131 > > │ ### parse the .dib file into .spi format with dibparser
00:00:16 v #1132 > >
00:00:16 v #1133 > > ── pwsh ────────────────────────────────────────────────────────────────────────
00:00:16 v #1134 > > { . ../../../../apps/parser/dist/DibParser$(_exe) test.dib spi } | Invoke-Block
00:00:17 v #1135 > >
00:00:17 v #1136 > > ── [ 362.66ms - stdout ] ───────────────────────────────────────────────────────
00:00:17 v #1137 > > │ 00:00:00 d #1 writeDibCode / output: Spi / path:
00:00:17 v #1138 > > test.dib
00:00:17 v #1139 > > │ 00:00:00 d #2 parseDibCode / output: Spi / file:
00:00:17 v #1140 > > test.dib
00:00:17 v #1141 > > │
00:00:17 v #1142 > >
00:00:17 v #1143 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:17 v #1144 > > │ ### build .fsx file from .spi using supervisor
00:00:17 v #1145 > >
00:00:17 v #1146 > > ── pwsh ────────────────────────────────────────────────────────────────────────
00:00:17 v #1147 > > { . ../../../../apps/spiral/dist/Supervisor$(_exe) --build-file test.spi
00:00:17 v #1148 > > test.fsx } | Invoke-Block
00:00:17 v #1149 > <test>
00:00:17 v #1150 > </test>
00:00:18 v #1151 > >
00:00:18 v #1152 > > ── [ 1.05s - stdout ] ──────────────────────────────────────────────────────────
00:00:18 v #1153 > > │ 00:00:00 v #1 networking.test_port_open / { port =
00:00:18 v #1154 > > 13806; ex = System.AggregateException: One or more errors occurred. (Connection
00:00:18 v #1155 > > refused) }
00:00:18 v #1156 > > │ 00:00:00 v #2 networking.test_port_open / { port =
00:00:18 v #1157 > > 13806; ex = System.AggregateException: One or more errors occurred. (Connection
00:00:18 v #1158 > > refused) }
00:00:18 v #1159 > > │ 00:00:00 d #1 Supervisor.buildFile / takeWhileInclusive
00:00:18 v #1160 > > / path: test.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:
00:00:18 v #1161 > > │
00:00:18 v #1162 > > │ 00:00:00 d #2 Supervisor.buildFile / AsyncSeq.scan
00:00:18 v #1163 > > path: test.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry:
00:00:18 v #1164 > > 0 / error:  / outputContent:
00:00:18 v #1165 > > │
00:00:18 v #1166 > > │ 00:00:00 d #3 Supervisor.buildFile / takeWhileInclusive
00:00:18 v #1167 > > / path: test.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:
00:00:18 v #1168 > > │
00:00:18 v #1169 > > │ 00:00:00 v #4 Supervisor.sendJson / port: 13805 / json:
00:00:18 v #1170 > > {"FileOpen":{"spiText":"/// # test (Polyglot)\n\n/// ## main\ninl main (_args :
00:00:18 v #1171 > > array_base string)
00:00:18 v #1172 > > =...t\u003E\u0022\n","uri":"file:///home/runner/work/polyglot/polyglot/apps/spir
00:00:18 v #1173 > > al/temp/test/test.spi"}} / result:
00:00:18 v #1174 > > │ 00:00:00 v #5 Supervisor.sendJson / port: 13805 / json:
00:00:18 v #1175 > > {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polygl
00:00:18 v #1176 > > ot/apps/spiral/temp/test/test.spi"}} / result:
00:00:18 v #1177 > > │ 00:00:00 d #6 Supervisor.buildFile / AsyncSeq.scan
00:00:18 v #1178 > > path: test.spi / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry:
00:00:18 v #1179 > > 0 / error:  / outputContent:
00:00:18 v #1180 > > │ let rec closure1 () () : unit =
00:00:18 v #1181 > > │     let v0 : (string -> unit) = System.Console.WriteLine
00:00:18 v #1182 > > │     let v1 : string = "test"
00:00:18 v #1183 > > │     v0 v1
00:00:18 v #1184 > > │ and closure0 () () : int32 =
00:00:18 v #1185 > > │     let v0 : unit = ()
00:00:18 v #1186 > > │     let v1 : (unit -> unit) = closure1()
00:00:18 v #1187 > > │     let v2 : unit = (fun () -> v1 (); v0) ()
00:00:18 v #1188 > > │     0
00:00:18 v #1189 > > │ let v0 : (unit -> int32) = closure0()
00:00:18 v #1190 > > │ ()
00:00:18 v #1191 > > │
00:00:18 v #1192 > > │ 00:00:00 d #7 Supervisor.buildFile / takeWhileInclusive
00:00:18 v #1193 > > / path: test.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent:
00:00:18 v #1194 > > │ let rec closure1 () () : unit =
00:00:18 v #1195 > > │     let v0 : (string -> unit) = System.Console.WriteLine
00:00:18 v #1196 > > │     let v1 : string = "test"
00:00:18 v #1197 > > │     v0 v1
00:00:18 v #1198 > > │ and closure0 () () : int32 =
00:00:18 v #1199 > > │     let v0 : unit = ()
00:00:18 v #1200 > > │     let v1 : (unit -> unit) = closure1()
00:00:18 v #1201 > > │     let v2 : unit = (fun () -> v1 (); v0) ()
00:00:18 v #1202 > > │     0
00:00:18 v #1203 > > │ let v0 : (unit -> int32) = closure0()
00:00:18 v #1204 > > │ ()
00:00:18 v #1205 > > │
00:00:18 v #1206 > > │ 00:00:00 d #8 FileSystem.watchWithFilter / Disposing
00:00:18 v #1207 > > watch stream / filter: FileName, LastWrite
00:00:18 v #1208 > > │
00:00:18 v #1209 > >
00:00:18 v #1210 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:18 v #1211 > > │ ## compile and format the project
00:00:18 v #1212 > >
00:00:18 v #1213 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:18 v #1214 > > │ ### compile project with fable targeting optimized rust
00:00:18 v #1215 > >
00:00:18 v #1216 > > ── pwsh ────────────────────────────────────────────────────────────────────────
00:00:18 v #1217 > > dotnet fable --optimize --lang rs --extension .rs
00:00:22 v #1218 > >
00:00:22 v #1219 > > ── [ 4.50s - stdout ] ──────────────────────────────────────────────────────────
00:00:22 v #1220 > > │ Fable 5.0.0-alpha.2: F# to Rust compiler (status: alpha)
00:00:22 v #1221 > > │ 
00:00:22 v #1222 > > │ Thanks to the contributor! @Neftedollar
00:00:22 v #1223 > > │ Stand with Ukraine! https://standwithukraine.com.ua
00:00:22 v #1224 > > │
00:00:22 v #1225 > > │ Parsing test.fsproj...
00:00:22 v #1226 > > │ Project and references (1 source files) parsed in 2301ms
00:00:22 v #1227 > > │
00:00:22 v #1228 > > │ Started Fable compilation...
00:00:22 v #1229 > > │ 
00:00:22 v #1230 > > │ Fable compilation finished in 1119ms
00:00:22 v #1231 > > │
00:00:22 v #1232 > > │ ./test.fsx(11,0): (11,2) warning FABLE: For Rust, support
00:00:22 v #1233 > > for F# static and module do bindings is disabled by default. It can be enabled
00:00:22 v #1234 > > with the 'static_do_bindings' feature. Use at your own risk!
00:00:22 v #1235 > > │
00:00:22 v #1236 > >
00:00:22 v #1237 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:22 v #1238 > > │ ### fix formatting issues in the .rs file using regex and
00:00:22 v #1239 > > set-content
00:00:22 v #1240 > >
00:00:22 v #1241 > > ── pwsh ────────────────────────────────────────────────────────────────────────
00:00:22 v #1242 > > (Get-Content test.rs) `
00:00:22 v #1243 > >     -replace [[regex]]::Escape("),);"), "));" `
00:00:22 v #1244 > >     | FixRust `
00:00:22 v #1245 > > | Set-Content test.rs
00:00:22 v #1246 > >
00:00:22 v #1247 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:22 v #1248 > > │ ### format the rust code using cargo fmt
00:00:22 v #1249 > >
00:00:22 v #1250 > > ── pwsh ────────────────────────────────────────────────────────────────────────
00:00:22 v #1251 > > cargo fmt --
00:00:22 v #1252 > >
00:00:22 v #1253 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:22 v #1254 > > │ ## build and test the project
00:00:22 v #1255 > >
00:00:22 v #1256 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:22 v #1257 > > │ ### build the project in release mode using nightly rust
00:00:22 v #1258 > > compiler
00:00:22 v #1259 > >
00:00:22 v #1260 > > ── pwsh ────────────────────────────────────────────────────────────────────────
00:00:22 v #1261 > > cargo build --release
00:00:33 v #1262 > >
00:00:33 v #1263 > > ── [ 10.81s - stdout ] ─────────────────────────────────────────────────────────
00:00:33 v #1264 > > │    Compiling byteorder v1.5.0
00:00:33 v #1265 > > │    Compiling syn v2.0.90
00:00:33 v #1266 > > │    Compiling getrandom v0.2.15
00:00:33 v #1267 > > │    Compiling linux-raw-sys v0.4.14
00:00:33 v #1268 > > │    Compiling num-traits v0.2.19
00:00:33 v #1269 > > │    Compiling rand_core v0.6.4
00:00:33 v #1270 > > │    Compiling once_cell v1.20.2
00:00:33 v #1271 > > │    Compiling rustix v0.38.42
00:00:33 v #1272 > > │    Compiling libm v0.2.11
00:00:33 v #1273 > > │    Compiling wait-timeout v0.2.0
00:00:33 v #1274 > > │    Compiling bit-vec v0.6.3
00:00:33 v #1275 > > │    Compiling quick-error v1.2.3
00:00:33 v #1276 > > │    Compiling bit-set v0.5.3
00:00:33 v #1277 > > │    Compiling rand_xorshift v0.3.0
00:00:33 v #1278 > > │    Compiling memchr v2.7.4
00:00:33 v #1279 > > │    Compiling unarray v0.1.4
00:00:33 v #1280 > > │    Compiling nom v7.1.3
00:00:33 v #1281 > > │    Compiling tempfile v3.14.0
00:00:33 v #1282 > > │    Compiling rusty-fork v0.3.0
00:00:33 v #1283 > > │    Compiling zerocopy-derive v0.7.35
00:00:33 v #1284 > > │    Compiling thiserror-impl v1.0.69
00:00:33 v #1285 > > │    Compiling fable_library_rust v0.1.0
00:00:33 v #1286 > > (/home/runner/work/polyglot/polyglot/lib/rust/fable/fable_modules/fable-library-
00:00:33 v #1287 > > rust)
00:00:33 v #1288 > > │    Compiling zerocopy v0.7.35
00:00:33 v #1289 > > │    Compiling thiserror v1.0.69
00:00:33 v #1290 > > │    Compiling ppv-lite86 v0.2.20
00:00:33 v #1291 > > │    Compiling rand_chacha v0.3.1
00:00:33 v #1292 > > │    Compiling rand v0.8.5
00:00:33 v #1293 > > │    Compiling proptest v1.5.0
00:00:33 v #1294 > > │    Compiling spiral_temp_test v0.0.1
00:00:33 v #1295 > > (/home/runner/work/polyglot/polyglot/apps/spiral/temp/test)
00:00:33 v #1296 > > │     Finished `release` profile [optimized]
00:00:33 v #1297 > > target(s) in 10.75s
00:00:33 v #1298 > > │
00:00:33 v #1299 > >
00:00:33 v #1300 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:33 v #1301 > > │ ### run release tests with output enabled
00:00:33 v #1302 > >
00:00:33 v #1303 > > ── pwsh ────────────────────────────────────────────────────────────────────────
00:00:33 v #1304 > > { cargo test --release -- --show-output } | Invoke-Block
00:00:48 v #1305 > >
00:00:48 v #1306 > > ── [ 15.18s - stdout ] ─────────────────────────────────────────────────────────
00:00:48 v #1307 > > │    Compiling bitflags v2.6.0
00:00:48 v #1308 > > │    Compiling zerocopy v0.7.35
00:00:48 v #1309 > > │    Compiling linux-raw-sys v0.4.14
00:00:48 v #1310 > > │    Compiling fastrand v2.3.0
00:00:48 v #1311 > > │    Compiling once_cell v1.20.2
00:00:48 v #1312 > > │    Compiling wait-timeout v0.2.0
00:00:48 v #1313 > > │    Compiling quick-error v1.2.3
00:00:48 v #1314 > > │    Compiling rustix v0.38.42
00:00:48 v #1315 > > │    Compiling bit-vec v0.6.3
00:00:48 v #1316 > > │    Compiling fnv v1.0.7
00:00:48 v #1317 > > │    Compiling bit-set v0.5.3
00:00:48 v #1318 > > │    Compiling ppv-lite86 v0.2.20
00:00:48 v #1319 > > │    Compiling num-traits v0.2.19
00:00:48 v #1320 > > │    Compiling rand_xorshift v0.3.0
00:00:48 v #1321 > > │    Compiling lazy_static v1.5.0
00:00:48 v #1322 > > │    Compiling unarray v0.1.4
00:00:48 v #1323 > > │    Compiling rand_chacha v0.3.1
00:00:48 v #1324 > > │    Compiling minimal-lexical v0.2.1
00:00:48 v #1325 > > │    Compiling rand v0.8.5
00:00:48 v #1326 > > │    Compiling memchr v2.7.4
00:00:48 v #1327 > > │    Compiling fable_library_rust v0.1.0
00:00:48 v #1328 > > (/home/runner/work/polyglot/polyglot/lib/rust/fable/fable_modules/fable-library-
00:00:48 v #1329 > > rust)
00:00:48 v #1330 > > │    Compiling thiserror v1.0.69
00:00:48 v #1331 > > │    Compiling nom v7.1.3
00:00:48 v #1332 > > │    Compiling tempfile v3.14.0
00:00:48 v #1333 > > │    Compiling rusty-fork v0.3.0
00:00:48 v #1334 > > │    Compiling proptest v1.5.0
00:00:48 v #1335 > > │    Compiling spiral_temp_test v0.0.1
00:00:48 v #1336 > > (/home/runner/work/polyglot/polyglot/apps/spiral/temp/test)
00:00:48 v #1337 > > │     Finished `release` profile [optimized]
00:00:48 v #1338 > > target(s) in 15.05s
00:00:48 v #1339 > > │      Running unittests main.rs
00:00:48 v #1340 > > (/home/runner/work/polyglot/polyglot/workspace/target/release/deps/spiral_temp_t
00:00:48 v #1341 > > est-87f487a4cc8a01e4)
00:00:48 v #1342 > > │
00:00:48 v #1343 > > │ running 3 tests
00:00:48 v #1344 > > │ test test_parse_number ... ok
00:00:48 v #1345 > > │ test prop_parse_format_idempotent ... ok
00:00:48 v #1346 > > │ test
00:00:48 v #1347 > > adding_and_then_removing_an_item_from_the_cart_leaves_the_cart_unchanged ... ok
00:00:48 v #1348 > > │
00:00:48 v #1349 > > │ successes:
00:00:48 v #1350 > > │
00:00:48 v #1351 > > │ ---- prop_parse_format_idempotent stdout ----
00:00:48 v #1352 > > │ input=Operator("/")
00:00:48 v #1353 > > │ input=Operator(")")
00:00:48 v #1354 > > │ input=Comment("")
00:00:48 v #1355 > > │ input=StringLiteral("&`~[!qv.[`=j")
00:00:48 v #1356 > > │ input=Identifier("MavD8nM8Lhoo8o89p9Xt9YK1Uv0thse")
00:00:48 v #1357 > > │ input=StringLiteral("N/j'N<{'")
00:00:48 v #1358 > > │ input=StringLiteral("G. ")
00:00:48 v #1359 > > │ input=Identifier("Gyy7X4X34hAV37pYV9c3Aq3Of0HP0Jo")
00:00:48 v #1360 > > │ input=Operator("*")
00:00:48 v #1361 > > │ input=Identifier("kx4L7UG5L9SmfxQKUEQ4rkdnkKt4hLMiy")
00:00:48 v #1362 > > │ input=Identifier("MHf4janWpIbm5pwrmqEgrsXr4")
00:00:48 v #1363 > > │ input=Integer(380912693318281304)
00:00:48 v #1364 > > │ input=Operator("(")
00:00:48 v #1365 > > │ input=Identifier("LV95de3ZH5Ek9hd")
00:00:48 v #1366 > > │ input=Comment(" Y*5'Si*+h%<\\ty\"g>")
00:00:48 v #1367 > > │ input=Identifier("IPEQtkX6w6d31lSpa6S")
00:00:48 v #1368 > > │ input=StringLiteral("<*Ax")
00:00:48 v #1369 > > │ input=Operator("*")
00:00:48 v #1370 > > │ input=StringLiteral(".M%e{Fa=IU&[")
00:00:48 v #1371 > > │ input=Identifier("K5A1S8FoummyQ0AS30kX30a7fk")
00:00:48 v #1372 > > │ input=Integer(5511703212687851222)
00:00:48 v #1373 > > │ input=StringLiteral("I.(:%{z%4%2#<={8HSE[WgS$*{(")
00:00:48 v #1374 > > │ input=Comment("[y=?lj&)=+eY('Q\"P]6;")
00:00:48 v #1375 > > │ input=StringLiteral("*zbPj*<%Gg=csn/y.&5Fqa$r6.J?_<")
00:00:48 v #1376 > > │ input=Comment("v\"]TE{U`uH&;y/")
00:00:48 v #1377 > > │ input=Integer(-7263475856144720771)
00:00:48 v #1378 > > │ input=StringLiteral(" 3mI:8.Hc2")
00:00:48 v #1379 > > │ input=Comment("uDHJ.IUt%=?\"fw?6$(Q<{Q&")
00:00:48 v #1380 > > │ input=StringLiteral("uq`%*6&R %#&c*ay?M`9Cz6Mp")
00:00:48 v #1381 > > │ input=Identifier("xmZ8AtRpr5UNkzPJ41de76k")
00:00:48 v #1382 > > │ input=Integer(7979405683793772131)
00:00:48 v #1383 > > │ input=StringLiteral("yONI&Bo*/bW9'$`/{{?yq_%j:{%{N")
00:00:48 v #1384 > > │ input=Identifier("tqB1MPnWjVqzaRZ9kFSAAoZdiloYudu")
00:00:48 v #1385 > > │ input=Identifier("LbNAL0")
00:00:48 v #1386 > > │ input=Identifier("Q7PzGsT1gM3keC4I")
00:00:48 v #1387 > > │ input=Comment("%T'j")
00:00:48 v #1388 > > │ input=Operator("*")
00:00:48 v #1389 > > │ input=Comment("<?j")
00:00:48 v #1390 > > │ input=Comment(":$%K-c;%GY5K?Q='&_\\,$(=8R!")
00:00:48 v #1391 > > │ input=Identifier("g82McKW29746")
00:00:48 v #1392 > > │ input=Operator("+")
00:00:48 v #1393 > > │ input=Comment(":.$.=*\":&}`'*H9\\?:8m=L=*?*:y%US~")
00:00:48 v #1394 > > │ input=Integer(-5484843864023686398)
00:00:48 v #1395 > > │ input=Operator("+")
00:00:48 v #1396 > > │ input=StringLiteral("i8P")
00:00:48 v #1397 > > │ input=Integer(5896751711955608197)
00:00:48 v #1398 > > │ input=Integer(433774308221832930)
00:00:48 v #1399 > > │ input=Identifier("m5M09X")
00:00:48 v #1400 > > │ input=Operator(")")
00:00:48 v #1401 > > │ input=Comment("hwZK:{ae`pJ{^*-g`C2g.")
00:00:48 v #1402 > > │ input=Operator("/")
00:00:48 v #1403 > > │ input=StringLiteral("$}{|.0VNG45.<<:J")
00:00:48 v #1404 > > │ input=StringLiteral("r=")
00:00:48 v #1405 > > │ input=Identifier("wsfKmCpw8063nro9")
00:00:48 v #1406 > > │ input=Operator("/")
00:00:48 v #1407 > > │ input=StringLiteral("U62(=n/>M:ECcLo")
00:00:48 v #1408 > > │ input=StringLiteral("%$r/w")
00:00:48 v #1409 > > │ input=Identifier("U")
00:00:48 v #1410 > > │ input=Comment("")
00:00:48 v #1411 > > │ input=Identifier("QGYtcr13IIj140r2Z3vRkD15PBk1")
00:00:48 v #1412 > > │ input=Identifier("lRf622DeJJT7Z6ysZ")
00:00:48 v #1413 > > │ input=Operator(")")
00:00:48 v #1414 > > │ input=Integer(4347236928050402036)
00:00:48 v #1415 > > │ input=StringLiteral("=Y*;[CUiMM<Xv1`<`$R.TV&uHh")
00:00:48 v #1416 > > │ input=Integer(-1523502403116482115)
00:00:48 v #1417 > > │ input=Comment("")
00:00:48 v #1418 > > │ input=Identifier("c53Gr2E33cEDQmP9byxPMAm")
00:00:48 v #1419 > > │ input=Integer(4641482749689015401)
00:00:48 v #1420 > > │ input=StringLiteral("a=`?H`C`qE$u?Pbj*.N.")
00:00:48 v #1421 > > │ input=Identifier("pWBrMWBwWMAoSOzfhkM774Na")
00:00:48 v #1422 > > │ input=Integer(6747230240170114053)
00:00:48 v #1423 > > │ input=Integer(-3833686358627760631)
00:00:48 v #1424 > > │ input=Integer(2026262931418126474)
00:00:48 v #1425 > > │ input=Operator("-")
00:00:48 v #1426 > > │ input=Identifier("u9EO")
00:00:48 v #1427 > > │ input=Operator("(")
00:00:48 v #1428 > > │ input=Comment(">)UnZKvgtw%gZS=3ey9*{mnH?*$|/P?+")
00:00:48 v #1429 > > │ input=StringLiteral("S*X")
00:00:48 v #1430 > > │ input=StringLiteral("?<VF%Vo!|&^%!=/w.$3=l`H>5")
00:00:48 v #1431 > > │ input=Integer(8675827172886334045)
00:00:48 v #1432 > > │ input=Integer(-8271292342899353562)
00:00:48 v #1433 > > │ input=StringLiteral("Sqby/?zC.!$]0/Bmb`,`=Qpd")
00:00:48 v #1434 > > │ input=Identifier("Z97mR1Khii")
00:00:48 v #1435 > > │ input=Operator("(")
00:00:48 v #1436 > > │ input=Identifier("w8dUWy2Vk9z86k1vxxmSO3")
00:00:48 v #1437 > > │ input=Integer(-5936108488610424342)
00:00:48 v #1438 > > │ input=Comment("&.\\%P5")
00:00:48 v #1439 > > │ input=Comment("<7<HZ.g&{+I#\\&")
00:00:48 v #1440 > > │ input=Identifier("u3QaNO2EZ95BNvkm3TGJqrvC")
00:00:48 v #1441 > > │ input=Operator("+")
00:00:48 v #1442 > > │ input=Identifier("g029R6UKxB00JVa08od38Yf7")
00:00:48 v #1443 > > │ input=Identifier("iMTjLF7h6ZnJphY5h18v0OP3")
00:00:48 v #1444 > > │ input=Comment("?`m1%o$(s=nB>@s%f=")
00:00:48 v #1445 > > │ input=Operator("*")
00:00:48 v #1446 > > │ input=Integer(8119389087828504732)
00:00:48 v #1447 > > │ input=Comment("C")
00:00:48 v #1448 > > │ input=Integer(2827209816771266762)
00:00:48 v #1449 > > │ input=Integer(-6710132699946523956)
00:00:48 v #1450 > > │ input=Operator(")")
00:00:48 v #1451 > > │ input=Comment("q .='%")
00:00:48 v #1452 > > │ input=StringLiteral("Z<{A;p>Ya'%&yzQwpgDlZ")
00:00:48 v #1453 > > │ input=Identifier("sqsdv31C5ILnxw")
00:00:48 v #1454 > > │ input=Operator("=")
00:00:48 v #1455 > > │ input=Comment("`&cZ<5_&$[hBW?6=eP#2/!")
00:00:48 v #1456 > > │ input=Comment("3]/")
00:00:48 v #1457 > > │ input=Integer(6138110496482396328)
00:00:48 v #1458 > > │ input=StringLiteral(". UN@")
00:00:48 v #1459 > > │ input=StringLiteral("U&ihC:v<2l0..W5=aQ9+NR$8!:$")
00:00:48 v #1460 > > │ input=Operator("=")
00:00:48 v #1461 > > │ input=StringLiteral("R*")
00:00:48 v #1462 > > │ input=Operator(")")
00:00:48 v #1463 > > │ input=Comment("Sp/6\"\"J/?$$Y7m{H+v")
00:00:48 v #1464 > > │ input=StringLiteral("v{iGkX(TT&DvfZ-W/#t/k/XBU{")
00:00:48 v #1465 > > │ input=Comment("'`k,Mz&7&US{PH<aK`Y``$Y{DE}i")
00:00:48 v #1466 > > │ input=Integer(-4629132754706150462)
00:00:48 v #1467 > > │ input=StringLiteral("k$")
00:00:48 v #1468 > > │ input=StringLiteral("@c+BQodBs?UBK)v%.8$d")
00:00:48 v #1469 > > │ input=Comment("='f*?**J]Vn<Zc&=Qv")
00:00:48 v #1470 > > │ input=Integer(-6568272793736397656)
00:00:48 v #1471 > > │ input=Integer(8371287151519162585)
00:00:48 v #1472 > > │ input=Comment(")''s:{")
00:00:48 v #1473 > > │ input=Identifier("tWJq9cmTEmO3m8C")
00:00:48 v #1474 > > │ input=StringLiteral("4-_B68&m#)6Ze/>")
00:00:48 v #1475 > > │ input=Operator("*")
00:00:48 v #1476 > > │ input=Identifier("CfMEG7J0n9ux4jCv049yQEP15L2nA1nj")
00:00:48 v #1477 > > │ input=StringLiteral("{q}'HkG:cS_C=3_u^=h=qf'*vl?I")
00:00:48 v #1478 > > │ input=Identifier("tYY")
00:00:48 v #1479 > > │ input=Integer(-5145520809984906084)
00:00:48 v #1480 > > │ input=Integer(1466147403897983684)
00:00:48 v #1481 > > │ input=Integer(4862579477276391652)
00:00:48 v #1482 > > │ input=Operator("/")
00:00:48 v #1483 > > │ input=StringLiteral(">TkAhGiL&G9}")
00:00:48 v #1484 > > │ input=Operator("=")
00:00:48 v #1485 > > │ input=Comment("6Q9*D:e%/?@7\\*sKH%XLvor<e$r>\"")
00:00:48 v #1486 > > │ input=StringLiteral("[B/b<q( ^Z<o%nb9<u;c.$$8k{Am")
00:00:48 v #1487 > > │ input=Comment(".:ClI`%I/\"L\"<")
00:00:48 v #1488 > > │ input=Identifier("FZ8CQ3z663H4Jiz828y96a")
00:00:48 v #1489 > > │ input=Identifier("MVv25foYm7iXD")
00:00:48 v #1490 > > │ input=Comment("*;R'x%%<=)Tu\\BxAvw\\g")
00:00:48 v #1491 > > │ input=Operator("-")
00:00:48 v #1492 > > │ input=Comment("lYSyH/3U")
00:00:48 v #1493 > > │ input=Comment("U{,{f<\"<eF@:[*rl?,dj2[rh%")
00:00:48 v #1494 > > │ input=Integer(4026362356162131144)
00:00:48 v #1495 > > │ input=Identifier("r")
00:00:48 v #1496 > > │ input=Identifier("HiP793KJP2dNr")
00:00:48 v #1497 > > │ input=Integer(-5409462552141584174)
00:00:48 v #1498 > > │ input=Integer(7385049919304589898)
00:00:48 v #1499 > > │ input=Comment("")
00:00:48 v #1500 > > │ input=Identifier("UDp")
00:00:48 v #1501 > > │ input=Operator("(")
00:00:48 v #1502 > > │ input=Integer(6352814571205125778)
00:00:48 v #1503 > > │ input=Integer(-2940315990268111250)
00:00:48 v #1504 > > │ input=Comment("@TNk4zwX$&[<")
00:00:48 v #1505 > > │ input=Integer(6442259551909054293)
00:00:48 v #1506 > > │ input=Operator("-")
00:00:48 v #1507 > > │ input=Operator("-")
00:00:48 v #1508 > > │ input=StringLiteral("|qb_Q;wPYN_$S$zHjlFb[RQ")
00:00:48 v #1509 > > │ input=Operator("+")
00:00:48 v #1510 > > │ input=Comment("hkq]{d)Ar: qK:/")
00:00:48 v #1511 > > │ input=Operator(")")
00:00:48 v #1512 > > │ input=Operator("=")
00:00:48 v #1513 > > │ input=Operator("+")
00:00:48 v #1514 > > │ input=Integer(1556740849878269761)
00:00:48 v #1515 > > │ input=Operator(")")
00:00:48 v #1516 > > │ input=Operator("+")
00:00:48 v #1517 > > │ input=StringLiteral(",,B&")
00:00:48 v #1518 > > │ input=StringLiteral("//0>*tt")
00:00:48 v #1519 > > │ input=Operator("=")
00:00:48 v #1520 > > │ input=Comment("?b$J'l>?")
00:00:48 v #1521 > > │ input=Comment("%D'D1=m$I'")
00:00:48 v #1522 > > │ input=Identifier("jY6v5irjFx0blaCjHHJGmuDSI8")
00:00:48 v #1523 > > │ input=Identifier("S2rhrVQDQcJ25W601R06n9gV97Jp")
00:00:48 v #1524 > > │ input=Comment("{%*^&Z:;\"@.*r")
00:00:48 v #1525 > > │ input=Identifier("yD3Ci7wVUq52JhPL0bre84cHpO")
00:00:48 v #1526 > > │ input=StringLiteral("Lwo`&{J$G%p@6Tq<'")
00:00:48 v #1527 > > │ input=Comment("f'xf%\\")
00:00:48 v #1528 > > │ input=Operator("=")
00:00:48 v #1529 > > │ input=Operator("+")
00:00:48 v #1530 > > │ input=StringLiteral("gFH:`<%?I<19V/+LErt?u.7?'x")
00:00:48 v #1531 > > │ input=Identifier("nkKVs6VLfnNW2u2rk2K4")
00:00:48 v #1532 > > │ input=Integer(9034583738702188004)
00:00:48 v #1533 > > │ input=Comment("<`?%zWs{#$<!DwD/n?&.%: c`'")
00:00:48 v #1534 > > │ input=Integer(-6844355647924485946)
00:00:48 v #1535 > > │ input=Comment("hadrY1mi")
00:00:48 v #1536 > > │ input=StringLiteral("_']I_B")
00:00:48 v #1537 > > │ input=Integer(-7824382012500961648)
00:00:48 v #1538 > > │ input=Operator("-")
00:00:48 v #1539 > > │ input=Integer(4295085137059939341)
00:00:48 v #1540 > > │ input=Integer(-1386749052486556828)
00:00:48 v #1541 > > │ input=Comment("G^*@<88M2_=lM^\"}bb.'=5q\\")
00:00:48 v #1542 > > │ input=Operator(")")
00:00:48 v #1543 > > │ input=Comment("I??\\6vAc)V/6K'")
00:00:48 v #1544 > > │ input=StringLiteral("{PBt:ON&{9Tg_1gN o")
00:00:48 v #1545 > > │ input=Integer(1825705446870370529)
00:00:48 v #1546 > > │ input=Integer(7570702597460313202)
00:00:48 v #1547 > > │ input=Operator("+")
00:00:48 v #1548 > > │ input=Comment("0F+L&JGzW/")
00:00:48 v #1549 > > │ input=StringLiteral("A9U?d4+2Bb@o|@$]l3z-Uv{")
00:00:48 v #1550 > > │ input=StringLiteral("3`#//E7")
00:00:48 v #1551 > > │ input=Identifier("NL01yQ")
00:00:48 v #1552 > > │ input=Integer(-4741737087240054261)
00:00:48 v #1553 > > │ input=Operator("+")
00:00:48 v #1554 > > │ input=Integer(5108099574451165705)
00:00:48 v #1555 > > │ input=Comment("7&A8m4")
00:00:48 v #1556 > > │ input=Integer(-334109601632091305)
00:00:48 v #1557 > > │ input=StringLiteral("=tf")
00:00:48 v #1558 > > │ input=StringLiteral("_32^$:I**hUb<=QW{?[o")
00:00:48 v #1559 > > │ input=StringLiteral("-y=Ot#!<*$11G")
00:00:48 v #1560 > > │ input=Integer(92403375172237401)
00:00:48 v #1561 > > │ input=Integer(-4142525452924583416)
00:00:48 v #1562 > > │ input=Operator("=")
00:00:48 v #1563 > > │ input=Operator("=")
00:00:48 v #1564 > > │ input=Comment("<Z}#Bme%O/gUQ%_H")
00:00:48 v #1565 > > │ input=Comment("zH^\\hoJG)$Xm=T'{sy$\\ggr):Vo</}rs")
00:00:48 v #1566 > > │ input=Identifier("bJIqpVf21d4")
00:00:48 v #1567 > > │ input=StringLiteral("]K")
00:00:48 v #1568 > > │ input=Integer(-208187261863959871)
00:00:48 v #1569 > > │ input=StringLiteral("y<<>N,<:qhxZ?1MGL=W(yv?]P[{")
00:00:48 v #1570 > > │ input=Operator("/")
00:00:48 v #1571 > > │ input=Integer(-1670259496062601495)
00:00:48 v #1572 > > │ input=Operator("+")
00:00:48 v #1573 > > │ input=Operator("-")
00:00:48 v #1574 > > │ input=Identifier("pk8D982U8CRuU68R88X8D2v3C6E9h")
00:00:48 v #1575 > > │ input=Identifier("g7lxR6R4EA74qwN6C4YiVmS44A")
00:00:48 v #1576 > > │ input=Comment("?Mi_X`W")
00:00:48 v #1577 > > │ input=Operator("+")
00:00:48 v #1578 > > │ input=Integer(-5479170840066670934)
00:00:48 v #1579 > > │ input=Operator(")")
00:00:48 v #1580 > > │ input=Identifier("OkW5Wnync149OBef7sD6z1HZ26dlj")
00:00:48 v #1581 > > │ input=StringLiteral("g-c&")
00:00:48 v #1582 > > │ input=Comment("n{/=`\\ `m<|")
00:00:48 v #1583 > > │ input=Integer(-4749322543566265560)
00:00:48 v #1584 > > │ input=Integer(1948643942594000923)
00:00:48 v #1585 > > │ input=Integer(7833730587544499024)
00:00:48 v #1586 > > │ input=Operator("(")
00:00:48 v #1587 > > │ input=Comment("=C/'(C:taDM:$a=\"\"\":7=F{U)d'l=<")
00:00:48 v #1588 > > │ input=Comment("")
00:00:48 v #1589 > > │ input=Comment("$$")
00:00:48 v #1590 > > │ input=Comment("|{|\\*U,|xQ'81F`GI")
00:00:48 v #1591 > > │ input=Integer(-8402576909574625933)
00:00:48 v #1592 > > │ input=Integer(5058402503112760815)
00:00:48 v #1593 > > │ input=Identifier("iH7wuPP")
00:00:48 v #1594 > > │ input=Operator("(")
00:00:48 v #1595 > > │ input=StringLiteral("i8r*5Suu$g{%!`$3K{Jt")
00:00:48 v #1596 > > │ input=Identifier("c0J5yWErR8IGTWr7UTU8cv01xgeD")
00:00:48 v #1597 > > │ input=Operator("=")
00:00:48 v #1598 > > │ input=Identifier("ut3qGYu16RK3sJzP1L7d")
00:00:48 v #1599 > > │ input=StringLiteral(":G")
00:00:48 v #1600 > > │ input=Operator(")")
00:00:48 v #1601 > > │ input=StringLiteral("=8;!#C.:v")
00:00:48 v #1602 > > │ input=Integer(-4598967224671124910)
00:00:48 v #1603 > > │ input=StringLiteral("a.%Tv^}>n'.:v")
00:00:48 v #1604 > > │ input=StringLiteral("L}n.DIQ#Y:,KKN:")
00:00:48 v #1605 > > │ input=Identifier("lE7Nn19Ci57fqmakg3q")
00:00:48 v #1606 > > │ input=Comment("|&DK\"e'@v@B`|=q9%")
00:00:48 v #1607 > > │ input=Comment("X(\"RE5%gu.!\"I:;{aO[")
00:00:48 v #1608 > > │
00:00:48 v #1609 > > │
00:00:48 v #1610 > > │ successes:
00:00:48 v #1611 > > │
00:00:48 v #1612 > > adding_and_then_removing_an_item_from_the_cart_leaves_the_cart_unchanged
00:00:48 v #1613 > > │     prop_parse_format_idempotent
00:00:48 v #1614 > > │     test_parse_number
00:00:48 v #1615 > > │
00:00:48 v #1616 > > │ test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0
00:00:48 v #1617 > > filtered out; finished in 0.07s
00:00:48 v #1618 > > │
00:00:48 v #1619 > > │
00:00:48 v #1620 > >
00:00:48 v #1621 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:48 v #1622 > > │ ### execute the binary in release mode
00:00:48 v #1623 > >
00:00:48 v #1624 > > ── pwsh ────────────────────────────────────────────────────────────────────────
00:00:48 v #1625 > > { . $ScriptDir/../../../../workspace/target/release/spiral_temp_test$(_exe) } |
00:00:48 v #1626 > > Invoke-Block
00:00:48 v #1627 > >
00:00:48 v #1628 > > ── [ 12.24ms - stdout ] ────────────────────────────────────────────────────────
00:00:48 v #1629 > > │ app=test
00:00:48 v #1630 > > │
00:00:48 v #1631 > 00:00:47 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 96167 }
00:00:48 v #1632 > 00:00:47 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:49 v #1633 > 00:00:48 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib.ipynb to html
00:00:49 v #1634 > 00:00:48 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:49 v #1635 > 00:00:48 v #7 !   validate(nb)
00:00:49 v #1636 > 00:00:48 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:49 v #1637 > 00:00:48 v #9 !   return _pygments_highlight(
00:00:50 v #1638 > 00:00:48 v #10 ! [NbConvertApp] Writing 396020 bytes to /home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib.html
00:00:50 v #1639 > 00:00:48 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 916 }
00:00:50 v #1640 > 00:00:48 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 916 }
00:00:50 v #1641 > 00:00:48 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:50 v #1642 > 00:00:49 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:00:50 v #1643 > 00:00:49 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:00:50 v #1644 > 00:00:49 d #16 spiral.run / dib / { exit_code = 0; result_length = 97142 }
00:00:50 d #1645 runtime.execute_with_options_async / { exit_code = 0; output_length = 103092 }
00:00:50 d #3 main / executeCommand / exitCode: 0 / command: ../../../../deps/spiral/workspace/target/release/spiral dib --path build.dib
00:00:50 v #41 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
Get:1 file:/etc/apt/apt-mirrors.txt Mirrorlist [142 B]
Hit:2 http://azure.archive.ubuntu.com/ubuntu noble InRelease
Get:3 http://azure.archive.ubuntu.com/ubuntu noble-updates InRelease [126 kB]
Get:4 http://azure.archive.ubuntu.com/ubuntu noble-backports InRelease [126 kB]
Get:5 http://azure.archive.ubuntu.com/ubuntu noble-security InRelease [126 kB]
Hit:6 https://packages.microsoft.com/repos/azure-cli noble InRelease
Get:7 https://packages.microsoft.com/ubuntu/24.04/prod noble InRelease [3600 B]
Get:8 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 Packages [770 kB]
Get:9 http://azure.archive.ubuntu.com/ubuntu noble-updates/main Translation-en [174 kB]
Get:10 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 Components [151 kB]
Get:11 http://azure.archive.ubuntu.com/ubuntu noble-updates/universe amd64 Packages [972 kB]
Get:12 http://azure.archive.ubuntu.com/ubuntu noble-updates/universe Translation-en [241 kB]
Get:13 http://azure.archive.ubuntu.com/ubuntu noble-updates/universe amd64 Components [309 kB]
Get:14 http://azure.archive.ubuntu.com/ubuntu noble-updates/restricted amd64 Packages [583 kB]
Get:15 http://azure.archive.ubuntu.com/ubuntu noble-updates/restricted Translation-en [113 kB]
Get:16 http://azure.archive.ubuntu.com/ubuntu noble-updates/restricted amd64 Components [212 B]
Get:17 http://azure.archive.ubuntu.com/ubuntu noble-updates/multiverse amd64 Components [940 B]
Get:18 http://azure.archive.ubuntu.com/ubuntu noble-backports/main amd64 Components [208 B]
Get:19 http://azure.archive.ubuntu.com/ubuntu noble-backports/universe amd64 Components [11.7 kB]
Get:20 http://azure.archive.ubuntu.com/ubuntu noble-backports/restricted amd64 Components [216 B]
Get:21 http://azure.archive.ubuntu.com/ubuntu noble-backports/multiverse amd64 Components [212 B]
Get:22 http://azure.archive.ubuntu.com/ubuntu noble-security/main amd64 Packages [585 kB]
Get:23 http://azure.archive.ubuntu.com/ubuntu noble-security/main Translation-en [114 kB]
Get:24 http://azure.archive.ubuntu.com/ubuntu noble-security/main amd64 Components [7220 B]
Get:25 http://azure.archive.ubuntu.com/ubuntu noble-security/universe amd64 Packages [800 kB]
Get:26 http://azure.archive.ubuntu.com/ubuntu noble-security/universe Translation-en [171 kB]
Get:27 http://azure.archive.ubuntu.com/ubuntu noble-security/universe amd64 Components [52.0 kB]
Get:28 http://azure.archive.ubuntu.com/ubuntu noble-security/restricted amd64 Packages [572 kB]
Get:29 http://azure.archive.ubuntu.com/ubuntu noble-security/restricted Translation-en [110 kB]
Get:30 http://azure.archive.ubuntu.com/ubuntu noble-security/restricted amd64 Components [212 B]
Get:31 http://azure.archive.ubuntu.com/ubuntu noble-security/multiverse amd64 Packages [12.4 kB]
Get:32 http://azure.archive.ubuntu.com/ubuntu noble-security/multiverse amd64 Components [208 B]
Get:33 https://packages.microsoft.com/ubuntu/24.04/prod noble/main arm64 Packages [11.4 kB]
Get:34 https://packages.microsoft.com/ubuntu/24.04/prod noble/main armhf Packages [6221 B]
Get:35 https://packages.microsoft.com/ubuntu/24.04/prod noble/main amd64 Packages [16.8 kB]
Fetched 6166 kB in 1s (7611 kB/s)
Reading package lists...

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

Reading package lists...
Building dependency tree...
Reading state information...
The following additional packages will be installed:
  blender-data gdal-data gdal-plugins gstreamer1.0-plugins-base i965-va-driver
  intel-media-va-driver libaacs0 libaec0 libarmadillo12 libarpack2t64 libass9
  libasyncns0 libavc1394-0 libavcodec60 libavdevice60 libavfilter9
  libavformat60 libavutil58 libbdplus0 libblas3 libblosc1 libbluray2
  libboost-iostreams1.83.0 libboost-locale1.83.0 libboost-thread1.83.0
  libbs2b0 libcaca0 libcdio-cdda2t64 libcdio-paranoia2t64 libcdio19t64
  libcdparanoia0 libcfitsio10t64 libcharls2 libchromaprint1 libcjson1
  libcodec2-1.2 libdav1d7 libdc1394-25 libdcmtk17t64 libdecor-0-0
  libdecor-0-plugin-1-gtk libembree4-4 libexif12 libfftw3-single3 libflac12t64
  libflite1 libfreexl1 libfyba0t64 libgdal34t64 libgdcm3.0t64 libgeos-c1t64
  libgeos3.12.1t64 libgeotiff5 libgif7 libgme0 libgphoto2-6t64 libgphoto2-l10n
  libgphoto2-port12t64 libgsm1 libgstreamer-plugins-base1.0-0 libhdf4-0-alt
  libhdf5-103-1t64 libhdf5-hl-100t64 libhwloc-plugins libhwloc15 libhwy1t64
  libiec61883-0 libigdgmm12 libimath-3-1-29t64 libjack-jackd2-0 libjemalloc2
  libjxl0.7 libkmlbase1t64 libkmldom1t64 libkmlengine1t64 liblapack3
  liblilv-0-0 liblog4cplus-2.0.5t64 libmbedcrypto7t64 libminizip1t64
  libmp3lame0 libmpg123-0t64 libmysofa1 libnetcdf19t64 libodbcinst2 libogdi4.1
  libopenal-data libopenal1 libopencolorio2.1t64 libopencv-core406t64
  libopencv-imgcodecs406t64 libopencv-imgproc406t64 libopencv-videoio406t64
  libopenexr-3-1-30 libopenimageio2.4t64 libopenmpt0t64 libopenvdb10.0t64
  libopus0 liborc-0.4-0t64 libosdcpu3.5.0t64 libosdgpu3.5.0t64 libplacebo338
  libpocketsphinx3 libpoppler134 libpostproc57 libpotrace0 libproj25
  libpugixml1v5 libpulse0 libpystring0 libqhull-r8.0 librav1e0 libraw1394-11
  librist4 librsvg2-2 librsvg2-common librttopo1 librubberband2 libsamplerate0
  libsdl2-2.0-0 libserd-0-0 libshine3 libsndfile1 libsndio7.0 libsocket++1
  libsord-0-0 libsoxr0 libspatialite8t64 libspeex1 libsphinxbase3t64 libspnav0
  libsratom-0-0 libsrt1.5-gnutls libssh-gcrypt-4 libsuperlu6 libsvtav1enc1d1
  libswresample4 libswscale7 libsz2 libtbb12 libtbbbind-2-5 libtbbmalloc2
  libtheora0 libtwolame0 libudfread0 libunibreak5 liburiparser1 libva-drm2
  libva-x11-2 libva2 libvdpau1 libvidstab1.1 libvisual-0.4-0 libvorbisenc2
  libvpl2 libvpx9 libx264-164 libx265-199 libxcb-shape0 libxerces-c3.2t64
  libxnvctrl0 libxv1 libxvidcore4 libyaml-cpp0.8 libzimg2 libzix-0-0
  libzvbi-common libzvbi0t64 mesa-va-drivers mesa-vdpau-drivers
  ocl-icd-libopencl1 pocketsphinx-en-us poppler-data proj-bin proj-data
  unixodbc-common va-driver-all vdpau-driver-all
Suggested packages:
  gvfs i965-va-driver-shaders libcuda1 libnvcuvid1 libnvidia-encode1
  libbluray-bdj libfftw3-bin libfftw3-dev geotiff-bin gdal-bin libgeotiff-epsg
  gphoto2 libvisual-0.4-plugins libhdf4-doc libhdf4-alt-dev hdf4-tools
  libhwloc-contrib-plugins jackd2 ogdi-bin libportaudio2 opus-tools pulseaudio
  libraw1394-doc librsvg2-bin serdi sndiod sordi speex spacenavd opencl-icd
  poppler-utils ghostscript fonts-japanese-mincho | fonts-ipafont-mincho
  fonts-japanese-gothic | fonts-ipafont-gothic fonts-arphic-ukai
  fonts-arphic-uming fonts-nanum libvdpau-va-gl1
The following NEW packages will be installed:
  blender blender-data gdal-data gdal-plugins gstreamer1.0-plugins-base
  i965-va-driver intel-media-va-driver libaacs0 libaec0 libarmadillo12
  libarpack2t64 libass9 libasyncns0 libavc1394-0 libavcodec60 libavdevice60
  libavfilter9 libavformat60 libavutil58 libbdplus0 libblas3 libblosc1
  libbluray2 libboost-iostreams1.83.0 libboost-locale1.83.0
  libboost-thread1.83.0 libbs2b0 libcaca0 libcdio-cdda2t64
  libcdio-paranoia2t64 libcdio19t64 libcdparanoia0 libcfitsio10t64 libcharls2
  libchromaprint1 libcjson1 libcodec2-1.2 libdav1d7 libdc1394-25 libdcmtk17t64
  libdecor-0-0 libdecor-0-plugin-1-gtk libembree4-4 libexif12 libfftw3-single3
  libflac12t64 libflite1 libfreexl1 libfyba0t64 libgdal34t64 libgdcm3.0t64
  libgeos-c1t64 libgeos3.12.1t64 libgeotiff5 libgif7 libgme0 libgphoto2-6t64
  libgphoto2-l10n libgphoto2-port12t64 libgsm1 libgstreamer-plugins-base1.0-0
  libhdf4-0-alt libhdf5-103-1t64 libhdf5-hl-100t64 libhwloc-plugins libhwloc15
  libhwy1t64 libiec61883-0 libigdgmm12 libimath-3-1-29t64 libjack-jackd2-0
  libjemalloc2 libjxl0.7 libkmlbase1t64 libkmldom1t64 libkmlengine1t64
  liblapack3 liblilv-0-0 liblog4cplus-2.0.5t64 libmbedcrypto7t64
  libminizip1t64 libmp3lame0 libmpg123-0t64 libmysofa1 libnetcdf19t64
  libodbcinst2 libogdi4.1 libopenal-data libopenal1 libopencolorio2.1t64
  libopencv-core406t64 libopencv-imgcodecs406t64 libopencv-imgproc406t64
  libopencv-videoio406t64 libopenexr-3-1-30 libopenimageio2.4t64
  libopenmpt0t64 libopenvdb10.0t64 libopus0 liborc-0.4-0t64 libosdcpu3.5.0t64
  libosdgpu3.5.0t64 libplacebo338 libpocketsphinx3 libpoppler134 libpostproc57
  libpotrace0 libproj25 libpugixml1v5 libpulse0 libpystring0 libqhull-r8.0
  librav1e0 libraw1394-11 librist4 librsvg2-2 librsvg2-common librttopo1
  librubberband2 libsamplerate0 libsdl2-2.0-0 libserd-0-0 libshine3
  libsndfile1 libsndio7.0 libsocket++1 libsord-0-0 libsoxr0 libspatialite8t64
  libspeex1 libsphinxbase3t64 libspnav0 libsratom-0-0 libsrt1.5-gnutls
  libssh-gcrypt-4 libsuperlu6 libsvtav1enc1d1 libswresample4 libswscale7
  libsz2 libtbb12 libtbbbind-2-5 libtbbmalloc2 libtheora0 libtwolame0
  libudfread0 libunibreak5 liburiparser1 libva-drm2 libva-x11-2 libva2
  libvdpau1 libvidstab1.1 libvisual-0.4-0 libvorbisenc2 libvpl2 libvpx9
  libx264-164 libx265-199 libxcb-shape0 libxerces-c3.2t64 libxnvctrl0 libxv1
  libxvidcore4 libyaml-cpp0.8 libzimg2 libzix-0-0 libzvbi-common libzvbi0t64
  mesa-va-drivers mesa-vdpau-drivers ocl-icd-libopencl1 pocketsphinx-en-us
  poppler-data proj-bin proj-data unixodbc-common va-driver-all
  vdpau-driver-all
0 upgraded, 179 newly installed, 0 to remove and 55 not upgraded.
Need to get 228 MB of archives.
After this operation, 708 MB of additional disk space will be used.
Get:1 file:/etc/apt/apt-mirrors.txt Mirrorlist [142 B]
Get:2 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 poppler-data all 0.4.12-1 [2060 kB]
Get:3 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 blender-data all 4.0.2+dfsg-1ubuntu8 [35.9 MB]
Get:4 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libva2 amd64 2.20.0-2build1 [66.2 kB]
Get:5 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libva-drm2 amd64 2.20.0-2build1 [7124 B]
Get:6 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libva-x11-2 amd64 2.20.0-2build1 [12.0 kB]
Get:7 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libvdpau1 amd64 1.5-2build1 [27.8 kB]
Get:8 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libvpl2 amd64 2023.3.0-1build1 [99.8 kB]
Get:9 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 ocl-icd-libopencl1 amd64 2.3.2-1build1 [38.5 kB]
Get:10 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libavutil58 amd64 7:6.1.1-3ubuntu5 [401 kB]
Get:11 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libcodec2-1.2 amd64 1.2.0-2build1 [8998 kB]
Get:12 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libdav1d7 amd64 1.4.1-1build1 [604 kB]
Get:13 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libgsm1 amd64 1.0.22-1build1 [27.8 kB]
Get:14 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libhwy1t64 amd64 1.0.7-8.1build1 [584 kB]
Get:15 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libjxl0.7 amd64 0.7.0-10.2ubuntu6 [999 kB]
Get:16 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libmp3lame0 amd64 3.100-6build1 [142 kB]
Get:17 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libopus0 amd64 1.4-1build1 [208 kB]
Get:18 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 librav1e0 amd64 0.7.1-2 [1022 kB]
Get:19 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 librsvg2-2 amd64 2.58.0+dfsg-1build1 [2135 kB]
Get:20 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libshine3 amd64 3.1.1-2build1 [23.2 kB]
Get:21 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 libspeex1 amd64 1.2.1-2ubuntu2.24.04.1 [59.6 kB]
Get:22 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libsvtav1enc1d1 amd64 1.7.0+dfsg-2build1 [2425 kB]
Get:23 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libsoxr0 amd64 0.1.3-4build3 [80.0 kB]
Get:24 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libswresample4 amd64 7:6.1.1-3ubuntu5 [63.8 kB]
Get:25 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libtheora0 amd64 1.1.1+dfsg.1-16.1build3 [211 kB]
Get:26 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libtwolame0 amd64 0.4.0-2build3 [52.3 kB]
Get:27 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libvorbisenc2 amd64 1.3.7-1build3 [80.8 kB]
Get:28 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 libvpx9 amd64 1.14.0-1ubuntu2.1 [1143 kB]
Get:29 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libx264-164 amd64 2:0.164.3108+git31e19f9-1 [604 kB]
Get:30 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libx265-199 amd64 3.5-2build1 [1226 kB]
Get:31 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libxvidcore4 amd64 2:1.3.7-1build1 [219 kB]
Get:32 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libzvbi-common all 0.2.42-2 [42.4 kB]
Get:33 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libzvbi0t64 amd64 0.2.42-2 [261 kB]
Get:34 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libavcodec60 amd64 7:6.1.1-3ubuntu5 [5851 kB]
Get:35 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libraw1394-11 amd64 2.1.2-2build3 [26.2 kB]
Get:36 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libavc1394-0 amd64 0.5.4-5build3 [15.4 kB]
Get:37 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libunibreak5 amd64 5.1-2build1 [25.0 kB]
Get:38 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libass9 amd64 1:0.17.1-2build1 [104 kB]
Get:39 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libudfread0 amd64 1.1.2-1build1 [19.0 kB]
Get:40 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libbluray2 amd64 1:1.3.4-1build1 [159 kB]
Get:41 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libchromaprint1 amd64 1.5.1-5 [30.5 kB]
Get:42 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libgme0 amd64 0.6.3-7build1 [134 kB]
Get:43 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 libmpg123-0t64 amd64 1.32.5-1ubuntu1.1 [169 kB]
Get:44 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libopenmpt0t64 amd64 0.7.3-1.1build3 [647 kB]
Get:45 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libcjson1 amd64 1.7.17-1 [24.8 kB]
Get:46 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libmbedcrypto7t64 amd64 2.28.8-1 [209 kB]
Get:47 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 librist4 amd64 0.2.10+dfsg-2 [74.9 kB]
Get:48 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libsrt1.5-gnutls amd64 1.5.3-1build2 [316 kB]
Get:49 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libssh-gcrypt-4 amd64 0.10.6-2build2 [223 kB]
Get:50 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libavformat60 amd64 7:6.1.1-3ubuntu5 [1153 kB]
Get:51 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libbs2b0 amd64 3.1.0+dfsg-7build1 [10.6 kB]
Get:52 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libflite1 amd64 2.2-6build3 [13.6 MB]
Get:53 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libserd-0-0 amd64 0.32.2-1 [43.6 kB]
Get:54 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libzix-0-0 amd64 0.4.2-2build1 [23.6 kB]
Get:55 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libsord-0-0 amd64 0.16.16-2build1 [15.8 kB]
Get:56 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libsratom-0-0 amd64 0.6.16-1build1 [17.3 kB]
Get:57 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 liblilv-0-0 amd64 0.24.22-1build1 [41.0 kB]
Get:58 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libmysofa1 amd64 1.3.2+dfsg-2ubuntu2 [1158 kB]
Get:59 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libplacebo338 amd64 6.338.2-2build1 [2654 kB]
Get:60 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 libblas3 amd64 3.12.0-3build1.1 [238 kB]
Get:61 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 liblapack3 amd64 3.12.0-3build1.1 [2646 kB]
Get:62 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libasyncns0 amd64 0.8-6build4 [11.3 kB]
Get:63 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libflac12t64 amd64 1.4.3+ds-2.1ubuntu2 [197 kB]
Get:64 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libsndfile1 amd64 1.2.2-1ubuntu5 [208 kB]
Get:65 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 libpulse0 amd64 1:16.1+dfsg1-2ubuntu10.1 [292 kB]
Get:66 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libsphinxbase3t64 amd64 0.8+5prealpha+1-17build2 [126 kB]
Get:67 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libpocketsphinx3 amd64 0.8.0+real5prealpha+1-15ubuntu5 [133 kB]
Get:68 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libpostproc57 amd64 7:6.1.1-3ubuntu5 [49.9 kB]
Get:69 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libsamplerate0 amd64 0.2.2-4build1 [1344 kB]
Get:70 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 librubberband2 amd64 3.3.0+dfsg-2build1 [130 kB]
Get:71 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libswscale7 amd64 7:6.1.1-3ubuntu5 [193 kB]
Get:72 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libvidstab1.1 amd64 1.1.0-2build1 [38.5 kB]
Get:73 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libzimg2 amd64 3.0.5+ds1-1build1 [254 kB]
Get:74 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libavfilter9 amd64 7:6.1.1-3ubuntu5 [4235 kB]
Get:75 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libcaca0 amd64 0.99.beta20-4build2 [208 kB]
Get:76 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 libcdio19t64 amd64 2.1.0-4.1ubuntu1.2 [62.4 kB]
Get:77 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libcdio-cdda2t64 amd64 10.2+2.0.1-1.1build2 [16.5 kB]
Get:78 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libcdio-paranoia2t64 amd64 10.2+2.0.1-1.1build2 [16.6 kB]
Get:79 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libdc1394-25 amd64 2.2.6-4build1 [90.1 kB]
Get:80 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libiec61883-0 amd64 1.2.0-6build1 [24.5 kB]
Get:81 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libjack-jackd2-0 amd64 1.9.21~dfsg-3ubuntu3 [289 kB]
Get:82 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libopenal-data all 1:1.23.1-4build1 [161 kB]
Get:83 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libsndio7.0 amd64 1.9.0-0.3build3 [29.6 kB]
Get:84 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libopenal1 amd64 1:1.23.1-4build1 [540 kB]
Get:85 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libdecor-0-0 amd64 0.2.2-1build2 [16.5 kB]
Get:86 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libsdl2-2.0-0 amd64 2.30.0+dfsg-1build3 [685 kB]
Get:87 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libxcb-shape0 amd64 1.15-1ubuntu2 [6100 B]
Get:88 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libxv1 amd64 2:1.0.11-1.1build1 [10.7 kB]
Get:89 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libavdevice60 amd64 7:6.1.1-3ubuntu5 [82.3 kB]
Get:90 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 libboost-thread1.83.0 amd64 1.83.0-2.1ubuntu3.1 [276 kB]
Get:91 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 libboost-locale1.83.0 amd64 1.83.0-2.1ubuntu3.1 [413 kB]
Get:92 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libtbbmalloc2 amd64 2021.11.0-2ubuntu2 [60.5 kB]
Get:93 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libhwloc15 amd64 2.10.0-1build1 [172 kB]
Get:94 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libtbbbind-2-5 amd64 2021.11.0-2ubuntu2 [16.4 kB]
Get:95 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libtbb12 amd64 2021.11.0-2ubuntu2 [106 kB]
Get:96 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libembree4-4 amd64 4.3.0+dfsg-2 [9265 kB]
Get:97 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libfftw3-single3 amd64 3.3.10-1ubuntu3 [868 kB]
Get:98 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libimath-3-1-29t64 amd64 3.1.9-3.1ubuntu2 [72.2 kB]
Get:99 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libjemalloc2 amd64 5.3.0-2build1 [256 kB]
Get:100 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libpystring0 amd64 1.1.4-1build1 [28.4 kB]
Get:101 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libyaml-cpp0.8 amd64 0.8.0+dfsg-6build1 [115 kB]
Get:102 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libopencolorio2.1t64 amd64 2.1.3+dfsg-1.1build3 [1470 kB]
Get:103 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libopenexr-3-1-30 amd64 3.1.5-5.1build3 [1004 kB]
Get:104 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libdcmtk17t64 amd64 3.6.7-9.1build4 [5329 kB]
Get:105 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libgif7 amd64 5.2.2-1ubuntu1 [35.2 kB]
Get:106 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libopencv-core406t64 amd64 4.6.0+dfsg-13.1ubuntu1 [1202 kB]
Get:107 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libopencv-imgproc406t64 amd64 4.6.0+dfsg-13.1ubuntu1 [1460 kB]
Get:108 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libexif12 amd64 0.6.24-1build2 [87.9 kB]
Get:109 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libgphoto2-port12t64 amd64 2.5.31-2.1build2 [58.6 kB]
Get:110 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libgphoto2-6t64 amd64 2.5.31-2.1build2 [735 kB]
Get:111 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 liborc-0.4-0t64 amd64 1:0.4.38-1ubuntu0.1 [207 kB]
Get:112 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 libgstreamer-plugins-base1.0-0 amd64 1.24.2-1ubuntu0.2 [862 kB]
Get:113 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 gdal-data all 3.8.4+dfsg-3ubuntu3 [261 kB]
Get:114 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 gdal-plugins amd64 3.8.4+dfsg-3ubuntu3 [24.8 kB]
Get:115 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libaec0 amd64 1.1.2-1build1 [22.9 kB]
Get:116 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libarpack2t64 amd64 3.9.1-1.1build2 [106 kB]
Get:117 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libsuperlu6 amd64 6.0.1+dfsg1-1build1 [180 kB]
Get:118 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libarmadillo12 amd64 1:12.6.7+dfsg-1build2 [106 kB]
Get:119 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libblosc1 amd64 1.21.5+ds-1build1 [36.2 kB]
Get:120 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libcfitsio10t64 amd64 4.3.1-1.1build2 [528 kB]
Get:121 http://azure.archive.ubuntu.com/ubuntu noble-updates/universe amd64 libminizip1t64 amd64 1:1.3.dfsg-3.1ubuntu2.1 [22.2 kB]
Get:122 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libfreexl1 amd64 2.0.0-1build2 [41.7 kB]
Get:123 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libfyba0t64 amd64 4.1.1-11build1 [119 kB]
Get:124 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libgeos3.12.1t64 amd64 3.12.1-3build1 [849 kB]
Get:125 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libgeos-c1t64 amd64 3.12.1-3build1 [94.5 kB]
Get:126 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 proj-data all 9.4.0-1build2 [7885 kB]
Get:127 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libproj25 amd64 9.4.0-1build2 [1396 kB]
Get:128 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libgeotiff5 amd64 1.7.1-5build1 [62.9 kB]
Get:129 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libhdf4-0-alt amd64 4.2.16-4build1 [282 kB]
Get:130 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libsz2 amd64 1.1.2-1build1 [5476 B]
Get:131 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libhdf5-103-1t64 amd64 1.10.10+repack-3.1ubuntu4 [1270 kB]
Get:132 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 liburiparser1 amd64 0.9.7+dfsg-2build1 [35.8 kB]
Get:133 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libkmlbase1t64 amd64 1.3.0-12build1 [49.9 kB]
Get:134 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libkmldom1t64 amd64 1.3.0-12build1 [156 kB]
Get:135 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libkmlengine1t64 amd64 1.3.0-12build1 [71.4 kB]
Get:136 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libhdf5-hl-100t64 amd64 1.10.10+repack-3.1ubuntu4 [56.0 kB]
Get:137 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libnetcdf19t64 amd64 1:4.9.2-5ubuntu4 [473 kB]
Get:138 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 unixodbc-common all 2.3.12-1ubuntu0.24.04.1 [8806 B]
Get:139 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 libodbcinst2 amd64 2.3.12-1ubuntu0.24.04.1 [30.7 kB]
Get:140 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libogdi4.1 amd64 4.1.1+ds-3build1 [226 kB]
Get:141 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 libpoppler134 amd64 24.02.0-1ubuntu9.1 [1113 kB]
Get:142 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libqhull-r8.0 amd64 2020.2-6build1 [193 kB]
Get:143 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 librttopo1 amd64 1.1.0-3build2 [191 kB]
Get:144 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libspatialite8t64 amd64 5.1.0-3build1 [1919 kB]
Get:145 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libxerces-c3.2t64 amd64 3.2.4+debian-1.2ubuntu2 [919 kB]
Get:146 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libgdal34t64 amd64 3.8.4+dfsg-3ubuntu3 [8346 kB]
Get:147 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libcharls2 amd64 2.4.2-2build2 [90.4 kB]
Get:148 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libsocket++1 amd64 1.12.13+git20131030.5d039ba-1build1 [83.1 kB]
Get:149 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libgdcm3.0t64 amd64 3.0.22-2.1ubuntu1 [2160 kB]
Get:150 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libopencv-imgcodecs406t64 amd64 4.6.0+dfsg-13.1ubuntu1 [128 kB]
Get:151 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libopencv-videoio406t64 amd64 4.6.0+dfsg-13.1ubuntu1 [199 kB]
Get:152 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 libboost-iostreams1.83.0 amd64 1.83.0-2.1ubuntu3.1 [259 kB]
Get:153 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 liblog4cplus-2.0.5t64 amd64 2.0.8-1.1ubuntu3 [188 kB]
Get:154 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libopenvdb10.0t64 amd64 10.0.1-2.1build5 [4138 kB]
Get:155 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libopenimageio2.4t64 amd64 2.4.17.0+dfsg-1.1build4 [2751 kB]
Get:156 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libosdcpu3.5.0t64 amd64 3.5.0-2.1build1 [373 kB]
Get:157 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libosdgpu3.5.0t64 amd64 3.5.0-2.1build1 [149 kB]
Get:158 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libpotrace0 amd64 1.16-2build1 [17.7 kB]
Get:159 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libpugixml1v5 amd64 1.14-0.1build1 [91.9 kB]
Get:160 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libspnav0 amd64 1.1-2 [15.0 kB]
Get:161 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 blender amd64 4.0.2+dfsg-1ubuntu8 [25.6 MB]
Get:162 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libcdparanoia0 amd64 3.10.2+debian-14build3 [48.5 kB]
Get:163 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libvisual-0.4-0 amd64 0.4.2-2build1 [115 kB]
Get:164 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 gstreamer1.0-plugins-base amd64 1.24.2-1ubuntu0.2 [721 kB]
Get:165 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libigdgmm12 amd64 22.3.17+ds1-1 [145 kB]
Get:166 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 intel-media-va-driver amd64 24.1.0+dfsg1-1 [4022 kB]
Get:167 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libaacs0 amd64 0.11.1-2build1 [62.9 kB]
Get:168 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libbdplus0 amd64 0.2.0-3build1 [52.2 kB]
Get:169 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libdecor-0-plugin-1-gtk amd64 0.2.2-1build2 [22.2 kB]
Get:170 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libgphoto2-l10n all 2.5.31-2.1build2 [15.0 kB]
Get:171 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 librsvg2-common amd64 2.58.0+dfsg-1build1 [11.8 kB]
Get:172 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libxnvctrl0 amd64 510.47.03-0ubuntu4 [12.6 kB]
Get:173 http://azure.archive.ubuntu.com/ubuntu noble-updates/universe amd64 mesa-va-drivers amd64 24.0.9-0ubuntu0.3 [4246 kB]
Get:174 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 mesa-vdpau-drivers amd64 24.0.9-0ubuntu0.3 [3904 kB]
Get:175 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 i965-va-driver amd64 2.4.1+dfsg1-1build2 [332 kB]
Get:176 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 va-driver-all amd64 2.20.0-2build1 [4844 B]
Get:177 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 vdpau-driver-all amd64 1.5-2build1 [4414 B]
Get:178 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libhwloc-plugins amd64 2.10.0-1build1 [15.7 kB]
Get:179 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 pocketsphinx-en-us all 0.8.0+real5prealpha+1-15ubuntu5 [27.4 MB]
Get:180 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 proj-bin amd64 9.4.0-1build2 [164 kB]
Fetched 228 MB in 8s (28.8 MB/s)
Selecting previously unselected package poppler-data.
(Reading database ... 
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 219807 files and directories currently installed.)
Preparing to unpack .../000-poppler-data_0.4.12-1_all.deb ...
Unpacking poppler-data (0.4.12-1) ...
Selecting previously unselected package blender-data.
Preparing to unpack .../001-blender-data_4.0.2+dfsg-1ubuntu8_all.deb ...
Unpacking blender-data (4.0.2+dfsg-1ubuntu8) ...
Selecting previously unselected package libva2:amd64.
Preparing to unpack .../002-libva2_2.20.0-2build1_amd64.deb ...
Unpacking libva2:amd64 (2.20.0-2build1) ...
Selecting previously unselected package libva-drm2:amd64.
Preparing to unpack .../003-libva-drm2_2.20.0-2build1_amd64.deb ...
Unpacking libva-drm2:amd64 (2.20.0-2build1) ...
Selecting previously unselected package libva-x11-2:amd64.
Preparing to unpack .../004-libva-x11-2_2.20.0-2build1_amd64.deb ...
Unpacking libva-x11-2:amd64 (2.20.0-2build1) ...
Selecting previously unselected package libvdpau1:amd64.
Preparing to unpack .../005-libvdpau1_1.5-2build1_amd64.deb ...
Unpacking libvdpau1:amd64 (1.5-2build1) ...
Selecting previously unselected package libvpl2.
Preparing to unpack .../006-libvpl2_2023.3.0-1build1_amd64.deb ...
Unpacking libvpl2 (2023.3.0-1build1) ...
Selecting previously unselected package ocl-icd-libopencl1:amd64.
Preparing to unpack .../007-ocl-icd-libopencl1_2.3.2-1build1_amd64.deb ...
Unpacking ocl-icd-libopencl1:amd64 (2.3.2-1build1) ...
Selecting previously unselected package libavutil58:amd64.
Preparing to unpack .../008-libavutil58_7%3a6.1.1-3ubuntu5_amd64.deb ...
Unpacking libavutil58:amd64 (7:6.1.1-3ubuntu5) ...
Selecting previously unselected package libcodec2-1.2:amd64.
Preparing to unpack .../009-libcodec2-1.2_1.2.0-2build1_amd64.deb ...
Unpacking libcodec2-1.2:amd64 (1.2.0-2build1) ...
Selecting previously unselected package libdav1d7:amd64.
Preparing to unpack .../010-libdav1d7_1.4.1-1build1_amd64.deb ...
Unpacking libdav1d7:amd64 (1.4.1-1build1) ...
Selecting previously unselected package libgsm1:amd64.
Preparing to unpack .../011-libgsm1_1.0.22-1build1_amd64.deb ...
Unpacking libgsm1:amd64 (1.0.22-1build1) ...
Selecting previously unselected package libhwy1t64:amd64.
Preparing to unpack .../012-libhwy1t64_1.0.7-8.1build1_amd64.deb ...
Unpacking libhwy1t64:amd64 (1.0.7-8.1build1) ...
Selecting previously unselected package libjxl0.7:amd64.
Preparing to unpack .../013-libjxl0.7_0.7.0-10.2ubuntu6_amd64.deb ...
Unpacking libjxl0.7:amd64 (0.7.0-10.2ubuntu6) ...
Selecting previously unselected package libmp3lame0:amd64.
Preparing to unpack .../014-libmp3lame0_3.100-6build1_amd64.deb ...
Unpacking libmp3lame0:amd64 (3.100-6build1) ...
Selecting previously unselected package libopus0:amd64.
Preparing to unpack .../015-libopus0_1.4-1build1_amd64.deb ...
Unpacking libopus0:amd64 (1.4-1build1) ...
Selecting previously unselected package librav1e0:amd64.
Preparing to unpack .../016-librav1e0_0.7.1-2_amd64.deb ...
Unpacking librav1e0:amd64 (0.7.1-2) ...
Selecting previously unselected package librsvg2-2:amd64.
Preparing to unpack .../017-librsvg2-2_2.58.0+dfsg-1build1_amd64.deb ...
Unpacking librsvg2-2:amd64 (2.58.0+dfsg-1build1) ...
Selecting previously unselected package libshine3:amd64.
Preparing to unpack .../018-libshine3_3.1.1-2build1_amd64.deb ...
Unpacking libshine3:amd64 (3.1.1-2build1) ...
Selecting previously unselected package libspeex1:amd64.
Preparing to unpack .../019-libspeex1_1.2.1-2ubuntu2.24.04.1_amd64.deb ...
Unpacking libspeex1:amd64 (1.2.1-2ubuntu2.24.04.1) ...
Selecting previously unselected package libsvtav1enc1d1:amd64.
Preparing to unpack .../020-libsvtav1enc1d1_1.7.0+dfsg-2build1_amd64.deb ...
Unpacking libsvtav1enc1d1:amd64 (1.7.0+dfsg-2build1) ...
Selecting previously unselected package libsoxr0:amd64.
Preparing to unpack .../021-libsoxr0_0.1.3-4build3_amd64.deb ...
Unpacking libsoxr0:amd64 (0.1.3-4build3) ...
Selecting previously unselected package libswresample4:amd64.
Preparing to unpack .../022-libswresample4_7%3a6.1.1-3ubuntu5_amd64.deb ...
Unpacking libswresample4:amd64 (7:6.1.1-3ubuntu5) ...
Selecting previously unselected package libtheora0:amd64.
Preparing to unpack .../023-libtheora0_1.1.1+dfsg.1-16.1build3_amd64.deb ...
Unpacking libtheora0:amd64 (1.1.1+dfsg.1-16.1build3) ...
Selecting previously unselected package libtwolame0:amd64.
Preparing to unpack .../024-libtwolame0_0.4.0-2build3_amd64.deb ...
Unpacking libtwolame0:amd64 (0.4.0-2build3) ...
Selecting previously unselected package libvorbisenc2:amd64.
Preparing to unpack .../025-libvorbisenc2_1.3.7-1build3_amd64.deb ...
Unpacking libvorbisenc2:amd64 (1.3.7-1build3) ...
Selecting previously unselected package libvpx9:amd64.
Preparing to unpack .../026-libvpx9_1.14.0-1ubuntu2.1_amd64.deb ...
Unpacking libvpx9:amd64 (1.14.0-1ubuntu2.1) ...
Selecting previously unselected package libx264-164:amd64.
Preparing to unpack .../027-libx264-164_2%3a0.164.3108+git31e19f9-1_amd64.deb ...
Unpacking libx264-164:amd64 (2:0.164.3108+git31e19f9-1) ...
Selecting previously unselected package libx265-199:amd64.
Preparing to unpack .../028-libx265-199_3.5-2build1_amd64.deb ...
Unpacking libx265-199:amd64 (3.5-2build1) ...
Selecting previously unselected package libxvidcore4:amd64.
Preparing to unpack .../029-libxvidcore4_2%3a1.3.7-1build1_amd64.deb ...
Unpacking libxvidcore4:amd64 (2:1.3.7-1build1) ...
Selecting previously unselected package libzvbi-common.
Preparing to unpack .../030-libzvbi-common_0.2.42-2_all.deb ...
Unpacking libzvbi-common (0.2.42-2) ...
Selecting previously unselected package libzvbi0t64:amd64.
Preparing to unpack .../031-libzvbi0t64_0.2.42-2_amd64.deb ...
Unpacking libzvbi0t64:amd64 (0.2.42-2) ...
Selecting previously unselected package libavcodec60:amd64.
Preparing to unpack .../032-libavcodec60_7%3a6.1.1-3ubuntu5_amd64.deb ...
Unpacking libavcodec60:amd64 (7:6.1.1-3ubuntu5) ...
Selecting previously unselected package libraw1394-11:amd64.
Preparing to unpack .../033-libraw1394-11_2.1.2-2build3_amd64.deb ...
Unpacking libraw1394-11:amd64 (2.1.2-2build3) ...
Selecting previously unselected package libavc1394-0:amd64.
Preparing to unpack .../034-libavc1394-0_0.5.4-5build3_amd64.deb ...
Unpacking libavc1394-0:amd64 (0.5.4-5build3) ...
Selecting previously unselected package libunibreak5:amd64.
Preparing to unpack .../035-libunibreak5_5.1-2build1_amd64.deb ...
Unpacking libunibreak5:amd64 (5.1-2build1) ...
Selecting previously unselected package libass9:amd64.
Preparing to unpack .../036-libass9_1%3a0.17.1-2build1_amd64.deb ...
Unpacking libass9:amd64 (1:0.17.1-2build1) ...
Selecting previously unselected package libudfread0:amd64.
Preparing to unpack .../037-libudfread0_1.1.2-1build1_amd64.deb ...
Unpacking libudfread0:amd64 (1.1.2-1build1) ...
Selecting previously unselected package libbluray2:amd64.
Preparing to unpack .../038-libbluray2_1%3a1.3.4-1build1_amd64.deb ...
Unpacking libbluray2:amd64 (1:1.3.4-1build1) ...
Selecting previously unselected package libchromaprint1:amd64.
Preparing to unpack .../039-libchromaprint1_1.5.1-5_amd64.deb ...
Unpacking libchromaprint1:amd64 (1.5.1-5) ...
Selecting previously unselected package libgme0:amd64.
Preparing to unpack .../040-libgme0_0.6.3-7build1_amd64.deb ...
Unpacking libgme0:amd64 (0.6.3-7build1) ...
Selecting previously unselected package libmpg123-0t64:amd64.
Preparing to unpack .../041-libmpg123-0t64_1.32.5-1ubuntu1.1_amd64.deb ...
Unpacking libmpg123-0t64:amd64 (1.32.5-1ubuntu1.1) ...
Selecting previously unselected package libopenmpt0t64:amd64.
Preparing to unpack .../042-libopenmpt0t64_0.7.3-1.1build3_amd64.deb ...
Unpacking libopenmpt0t64:amd64 (0.7.3-1.1build3) ...
Selecting previously unselected package libcjson1:amd64.
Preparing to unpack .../043-libcjson1_1.7.17-1_amd64.deb ...
Unpacking libcjson1:amd64 (1.7.17-1) ...
Selecting previously unselected package libmbedcrypto7t64:amd64.
Preparing to unpack .../044-libmbedcrypto7t64_2.28.8-1_amd64.deb ...
Unpacking libmbedcrypto7t64:amd64 (2.28.8-1) ...
Selecting previously unselected package librist4:amd64.
Preparing to unpack .../045-librist4_0.2.10+dfsg-2_amd64.deb ...
Unpacking librist4:amd64 (0.2.10+dfsg-2) ...
Selecting previously unselected package libsrt1.5-gnutls:amd64.
Preparing to unpack .../046-libsrt1.5-gnutls_1.5.3-1build2_amd64.deb ...
Unpacking libsrt1.5-gnutls:amd64 (1.5.3-1build2) ...
Selecting previously unselected package libssh-gcrypt-4:amd64.
Preparing to unpack .../047-libssh-gcrypt-4_0.10.6-2build2_amd64.deb ...
Unpacking libssh-gcrypt-4:amd64 (0.10.6-2build2) ...
Selecting previously unselected package libavformat60:amd64.
Preparing to unpack .../048-libavformat60_7%3a6.1.1-3ubuntu5_amd64.deb ...
Unpacking libavformat60:amd64 (7:6.1.1-3ubuntu5) ...
Selecting previously unselected package libbs2b0:amd64.
Preparing to unpack .../049-libbs2b0_3.1.0+dfsg-7build1_amd64.deb ...
Unpacking libbs2b0:amd64 (3.1.0+dfsg-7build1) ...
Selecting previously unselected package libflite1:amd64.
Preparing to unpack .../050-libflite1_2.2-6build3_amd64.deb ...
Unpacking libflite1:amd64 (2.2-6build3) ...
Selecting previously unselected package libserd-0-0:amd64.
Preparing to unpack .../051-libserd-0-0_0.32.2-1_amd64.deb ...
Unpacking libserd-0-0:amd64 (0.32.2-1) ...
Selecting previously unselected package libzix-0-0:amd64.
Preparing to unpack .../052-libzix-0-0_0.4.2-2build1_amd64.deb ...
Unpacking libzix-0-0:amd64 (0.4.2-2build1) ...
Selecting previously unselected package libsord-0-0:amd64.
Preparing to unpack .../053-libsord-0-0_0.16.16-2build1_amd64.deb ...
Unpacking libsord-0-0:amd64 (0.16.16-2build1) ...
Selecting previously unselected package libsratom-0-0:amd64.
Preparing to unpack .../054-libsratom-0-0_0.6.16-1build1_amd64.deb ...
Unpacking libsratom-0-0:amd64 (0.6.16-1build1) ...
Selecting previously unselected package liblilv-0-0:amd64.
Preparing to unpack .../055-liblilv-0-0_0.24.22-1build1_amd64.deb ...
Unpacking liblilv-0-0:amd64 (0.24.22-1build1) ...
Selecting previously unselected package libmysofa1:amd64.
Preparing to unpack .../056-libmysofa1_1.3.2+dfsg-2ubuntu2_amd64.deb ...
Unpacking libmysofa1:amd64 (1.3.2+dfsg-2ubuntu2) ...
Selecting previously unselected package libplacebo338:amd64.
Preparing to unpack .../057-libplacebo338_6.338.2-2build1_amd64.deb ...
Unpacking libplacebo338:amd64 (6.338.2-2build1) ...
Selecting previously unselected package libblas3:amd64.
Preparing to unpack .../058-libblas3_3.12.0-3build1.1_amd64.deb ...
Unpacking libblas3:amd64 (3.12.0-3build1.1) ...
Selecting previously unselected package liblapack3:amd64.
Preparing to unpack .../059-liblapack3_3.12.0-3build1.1_amd64.deb ...
Unpacking liblapack3:amd64 (3.12.0-3build1.1) ...
Selecting previously unselected package libasyncns0:amd64.
Preparing to unpack .../060-libasyncns0_0.8-6build4_amd64.deb ...
Unpacking libasyncns0:amd64 (0.8-6build4) ...
Selecting previously unselected package libflac12t64:amd64.
Preparing to unpack .../061-libflac12t64_1.4.3+ds-2.1ubuntu2_amd64.deb ...
Unpacking libflac12t64:amd64 (1.4.3+ds-2.1ubuntu2) ...
Selecting previously unselected package libsndfile1:amd64.
Preparing to unpack .../062-libsndfile1_1.2.2-1ubuntu5_amd64.deb ...
Unpacking libsndfile1:amd64 (1.2.2-1ubuntu5) ...
Selecting previously unselected package libpulse0:amd64.
Preparing to unpack .../063-libpulse0_1%3a16.1+dfsg1-2ubuntu10.1_amd64.deb ...
Unpacking libpulse0:amd64 (1:16.1+dfsg1-2ubuntu10.1) ...
Selecting previously unselected package libsphinxbase3t64:amd64.
Preparing to unpack .../064-libsphinxbase3t64_0.8+5prealpha+1-17build2_amd64.deb ...
Unpacking libsphinxbase3t64:amd64 (0.8+5prealpha+1-17build2) ...
Selecting previously unselected package libpocketsphinx3:amd64.
Preparing to unpack .../065-libpocketsphinx3_0.8.0+real5prealpha+1-15ubuntu5_amd64.deb ...
Unpacking libpocketsphinx3:amd64 (0.8.0+real5prealpha+1-15ubuntu5) ...
Selecting previously unselected package libpostproc57:amd64.
Preparing to unpack .../066-libpostproc57_7%3a6.1.1-3ubuntu5_amd64.deb ...
Unpacking libpostproc57:amd64 (7:6.1.1-3ubuntu5) ...
Selecting previously unselected package libsamplerate0:amd64.
Preparing to unpack .../067-libsamplerate0_0.2.2-4build1_amd64.deb ...
Unpacking libsamplerate0:amd64 (0.2.2-4build1) ...
Selecting previously unselected package librubberband2:amd64.
Preparing to unpack .../068-librubberband2_3.3.0+dfsg-2build1_amd64.deb ...
Unpacking librubberband2:amd64 (3.3.0+dfsg-2build1) ...
Selecting previously unselected package libswscale7:amd64.
Preparing to unpack .../069-libswscale7_7%3a6.1.1-3ubuntu5_amd64.deb ...
Unpacking libswscale7:amd64 (7:6.1.1-3ubuntu5) ...
Selecting previously unselected package libvidstab1.1:amd64.
Preparing to unpack .../070-libvidstab1.1_1.1.0-2build1_amd64.deb ...
Unpacking libvidstab1.1:amd64 (1.1.0-2build1) ...
Selecting previously unselected package libzimg2:amd64.
Preparing to unpack .../071-libzimg2_3.0.5+ds1-1build1_amd64.deb ...
Unpacking libzimg2:amd64 (3.0.5+ds1-1build1) ...
Selecting previously unselected package libavfilter9:amd64.
Preparing to unpack .../072-libavfilter9_7%3a6.1.1-3ubuntu5_amd64.deb ...
Unpacking libavfilter9:amd64 (7:6.1.1-3ubuntu5) ...
Selecting previously unselected package libcaca0:amd64.
Preparing to unpack .../073-libcaca0_0.99.beta20-4build2_amd64.deb ...
Unpacking libcaca0:amd64 (0.99.beta20-4build2) ...
Selecting previously unselected package libcdio19t64:amd64.
Preparing to unpack .../074-libcdio19t64_2.1.0-4.1ubuntu1.2_amd64.deb ...
Unpacking libcdio19t64:amd64 (2.1.0-4.1ubuntu1.2) ...
Selecting previously unselected package libcdio-cdda2t64:amd64.
Preparing to unpack .../075-libcdio-cdda2t64_10.2+2.0.1-1.1build2_amd64.deb ...
Unpacking libcdio-cdda2t64:amd64 (10.2+2.0.1-1.1build2) ...
Selecting previously unselected package libcdio-paranoia2t64:amd64.
Preparing to unpack .../076-libcdio-paranoia2t64_10.2+2.0.1-1.1build2_amd64.deb ...
Unpacking libcdio-paranoia2t64:amd64 (10.2+2.0.1-1.1build2) ...
Selecting previously unselected package libdc1394-25:amd64.
Preparing to unpack .../077-libdc1394-25_2.2.6-4build1_amd64.deb ...
Unpacking libdc1394-25:amd64 (2.2.6-4build1) ...
Selecting previously unselected package libiec61883-0:amd64.
Preparing to unpack .../078-libiec61883-0_1.2.0-6build1_amd64.deb ...
Unpacking libiec61883-0:amd64 (1.2.0-6build1) ...
Selecting previously unselected package libjack-jackd2-0:amd64.
Preparing to unpack .../079-libjack-jackd2-0_1.9.21~dfsg-3ubuntu3_amd64.deb ...
Unpacking libjack-jackd2-0:amd64 (1.9.21~dfsg-3ubuntu3) ...
Selecting previously unselected package libopenal-data.
Preparing to unpack .../080-libopenal-data_1%3a1.23.1-4build1_all.deb ...
Unpacking libopenal-data (1:1.23.1-4build1) ...
Selecting previously unselected package libsndio7.0:amd64.
Preparing to unpack .../081-libsndio7.0_1.9.0-0.3build3_amd64.deb ...
Unpacking libsndio7.0:amd64 (1.9.0-0.3build3) ...
Selecting previously unselected package libopenal1:amd64.
Preparing to unpack .../082-libopenal1_1%3a1.23.1-4build1_amd64.deb ...
Unpacking libopenal1:amd64 (1:1.23.1-4build1) ...
Selecting previously unselected package libdecor-0-0:amd64.
Preparing to unpack .../083-libdecor-0-0_0.2.2-1build2_amd64.deb ...
Unpacking libdecor-0-0:amd64 (0.2.2-1build2) ...
Selecting previously unselected package libsdl2-2.0-0:amd64.
Preparing to unpack .../084-libsdl2-2.0-0_2.30.0+dfsg-1build3_amd64.deb ...
Unpacking libsdl2-2.0-0:amd64 (2.30.0+dfsg-1build3) ...
Selecting previously unselected package libxcb-shape0:amd64.
Preparing to unpack .../085-libxcb-shape0_1.15-1ubuntu2_amd64.deb ...
Unpacking libxcb-shape0:amd64 (1.15-1ubuntu2) ...
Selecting previously unselected package libxv1:amd64.
Preparing to unpack .../086-libxv1_2%3a1.0.11-1.1build1_amd64.deb ...
Unpacking libxv1:amd64 (2:1.0.11-1.1build1) ...
Selecting previously unselected package libavdevice60:amd64.
Preparing to unpack .../087-libavdevice60_7%3a6.1.1-3ubuntu5_amd64.deb ...
Unpacking libavdevice60:amd64 (7:6.1.1-3ubuntu5) ...
Selecting previously unselected package libboost-thread1.83.0:amd64.
Preparing to unpack .../088-libboost-thread1.83.0_1.83.0-2.1ubuntu3.1_amd64.deb ...
Unpacking libboost-thread1.83.0:amd64 (1.83.0-2.1ubuntu3.1) ...
Selecting previously unselected package libboost-locale1.83.0:amd64.
Preparing to unpack .../089-libboost-locale1.83.0_1.83.0-2.1ubuntu3.1_amd64.deb ...
Unpacking libboost-locale1.83.0:amd64 (1.83.0-2.1ubuntu3.1) ...
Selecting previously unselected package libtbbmalloc2:amd64.
Preparing to unpack .../090-libtbbmalloc2_2021.11.0-2ubuntu2_amd64.deb ...
Unpacking libtbbmalloc2:amd64 (2021.11.0-2ubuntu2) ...
Selecting previously unselected package libhwloc15:amd64.
Preparing to unpack .../091-libhwloc15_2.10.0-1build1_amd64.deb ...
Unpacking libhwloc15:amd64 (2.10.0-1build1) ...
Selecting previously unselected package libtbbbind-2-5:amd64.
Preparing to unpack .../092-libtbbbind-2-5_2021.11.0-2ubuntu2_amd64.deb ...
Unpacking libtbbbind-2-5:amd64 (2021.11.0-2ubuntu2) ...
Selecting previously unselected package libtbb12:amd64.
Preparing to unpack .../093-libtbb12_2021.11.0-2ubuntu2_amd64.deb ...
Unpacking libtbb12:amd64 (2021.11.0-2ubuntu2) ...
Selecting previously unselected package libembree4-4:amd64.
Preparing to unpack .../094-libembree4-4_4.3.0+dfsg-2_amd64.deb ...
Unpacking libembree4-4:amd64 (4.3.0+dfsg-2) ...
Selecting previously unselected package libfftw3-single3:amd64.
Preparing to unpack .../095-libfftw3-single3_3.3.10-1ubuntu3_amd64.deb ...
Unpacking libfftw3-single3:amd64 (3.3.10-1ubuntu3) ...
Selecting previously unselected package libimath-3-1-29t64:amd64.
Preparing to unpack .../096-libimath-3-1-29t64_3.1.9-3.1ubuntu2_amd64.deb ...
Unpacking libimath-3-1-29t64:amd64 (3.1.9-3.1ubuntu2) ...
Selecting previously unselected package libjemalloc2:amd64.
Preparing to unpack .../097-libjemalloc2_5.3.0-2build1_amd64.deb ...
Unpacking libjemalloc2:amd64 (5.3.0-2build1) ...
Selecting previously unselected package libpystring0:amd64.
Preparing to unpack .../098-libpystring0_1.1.4-1build1_amd64.deb ...
Unpacking libpystring0:amd64 (1.1.4-1build1) ...
Selecting previously unselected package libyaml-cpp0.8:amd64.
Preparing to unpack .../099-libyaml-cpp0.8_0.8.0+dfsg-6build1_amd64.deb ...
Unpacking libyaml-cpp0.8:amd64 (0.8.0+dfsg-6build1) ...
Selecting previously unselected package libopencolorio2.1t64:amd64.
Preparing to unpack .../100-libopencolorio2.1t64_2.1.3+dfsg-1.1build3_amd64.deb ...
Unpacking libopencolorio2.1t64:amd64 (2.1.3+dfsg-1.1build3) ...
Selecting previously unselected package libopenexr-3-1-30:amd64.
Preparing to unpack .../101-libopenexr-3-1-30_3.1.5-5.1build3_amd64.deb ...
Unpacking libopenexr-3-1-30:amd64 (3.1.5-5.1build3) ...
Selecting previously unselected package libdcmtk17t64:amd64.
Preparing to unpack .../102-libdcmtk17t64_3.6.7-9.1build4_amd64.deb ...
Unpacking libdcmtk17t64:amd64 (3.6.7-9.1build4) ...
Selecting previously unselected package libgif7:amd64.
Preparing to unpack .../103-libgif7_5.2.2-1ubuntu1_amd64.deb ...
Unpacking libgif7:amd64 (5.2.2-1ubuntu1) ...
Selecting previously unselected package libopencv-core406t64:amd64.
Preparing to unpack .../104-libopencv-core406t64_4.6.0+dfsg-13.1ubuntu1_amd64.deb ...
Unpacking libopencv-core406t64:amd64 (4.6.0+dfsg-13.1ubuntu1) ...
Selecting previously unselected package libopencv-imgproc406t64:amd64.
Preparing to unpack .../105-libopencv-imgproc406t64_4.6.0+dfsg-13.1ubuntu1_amd64.deb ...
Unpacking libopencv-imgproc406t64:amd64 (4.6.0+dfsg-13.1ubuntu1) ...
Selecting previously unselected package libexif12:amd64.
Preparing to unpack .../106-libexif12_0.6.24-1build2_amd64.deb ...
Unpacking libexif12:amd64 (0.6.24-1build2) ...
Selecting previously unselected package libgphoto2-port12t64:amd64.
Preparing to unpack .../107-libgphoto2-port12t64_2.5.31-2.1build2_amd64.deb ...
Unpacking libgphoto2-port12t64:amd64 (2.5.31-2.1build2) ...
Selecting previously unselected package libgphoto2-6t64:amd64.
Preparing to unpack .../108-libgphoto2-6t64_2.5.31-2.1build2_amd64.deb ...
Unpacking libgphoto2-6t64:amd64 (2.5.31-2.1build2) ...
Selecting previously unselected package liborc-0.4-0t64:amd64.
Preparing to unpack .../109-liborc-0.4-0t64_1%3a0.4.38-1ubuntu0.1_amd64.deb ...
Unpacking liborc-0.4-0t64:amd64 (1:0.4.38-1ubuntu0.1) ...
Selecting previously unselected package libgstreamer-plugins-base1.0-0:amd64.
Preparing to unpack .../110-libgstreamer-plugins-base1.0-0_1.24.2-1ubuntu0.2_amd64.deb ...
Unpacking libgstreamer-plugins-base1.0-0:amd64 (1.24.2-1ubuntu0.2) ...
Selecting previously unselected package gdal-data.
Preparing to unpack .../111-gdal-data_3.8.4+dfsg-3ubuntu3_all.deb ...
Unpacking gdal-data (3.8.4+dfsg-3ubuntu3) ...
Selecting previously unselected package gdal-plugins:amd64.
Preparing to unpack .../112-gdal-plugins_3.8.4+dfsg-3ubuntu3_amd64.deb ...
Unpacking gdal-plugins:amd64 (3.8.4+dfsg-3ubuntu3) ...
Selecting previously unselected package libaec0:amd64.
Preparing to unpack .../113-libaec0_1.1.2-1build1_amd64.deb ...
Unpacking libaec0:amd64 (1.1.2-1build1) ...
Selecting previously unselected package libarpack2t64:amd64.
Preparing to unpack .../114-libarpack2t64_3.9.1-1.1build2_amd64.deb ...
Unpacking libarpack2t64:amd64 (3.9.1-1.1build2) ...
Selecting previously unselected package libsuperlu6:amd64.
Preparing to unpack .../115-libsuperlu6_6.0.1+dfsg1-1build1_amd64.deb ...
Unpacking libsuperlu6:amd64 (6.0.1+dfsg1-1build1) ...
Selecting previously unselected package libarmadillo12.
Preparing to unpack .../116-libarmadillo12_1%3a12.6.7+dfsg-1build2_amd64.deb ...
Unpacking libarmadillo12 (1:12.6.7+dfsg-1build2) ...
Selecting previously unselected package libblosc1:amd64.
Preparing to unpack .../117-libblosc1_1.21.5+ds-1build1_amd64.deb ...
Unpacking libblosc1:amd64 (1.21.5+ds-1build1) ...
Selecting previously unselected package libcfitsio10t64:amd64.
Preparing to unpack .../118-libcfitsio10t64_4.3.1-1.1build2_amd64.deb ...
Unpacking libcfitsio10t64:amd64 (4.3.1-1.1build2) ...
Selecting previously unselected package libminizip1t64:amd64.
Preparing to unpack .../119-libminizip1t64_1%3a1.3.dfsg-3.1ubuntu2.1_amd64.deb ...
Unpacking libminizip1t64:amd64 (1:1.3.dfsg-3.1ubuntu2.1) ...
Selecting previously unselected package libfreexl1:amd64.
Preparing to unpack .../120-libfreexl1_2.0.0-1build2_amd64.deb ...
Unpacking libfreexl1:amd64 (2.0.0-1build2) ...
Selecting previously unselected package libfyba0t64:amd64.
Preparing to unpack .../121-libfyba0t64_4.1.1-11build1_amd64.deb ...
Unpacking libfyba0t64:amd64 (4.1.1-11build1) ...
Selecting previously unselected package libgeos3.12.1t64:amd64.
Preparing to unpack .../122-libgeos3.12.1t64_3.12.1-3build1_amd64.deb ...
Unpacking libgeos3.12.1t64:amd64 (3.12.1-3build1) ...
Selecting previously unselected package libgeos-c1t64:amd64.
Preparing to unpack .../123-libgeos-c1t64_3.12.1-3build1_amd64.deb ...
Unpacking libgeos-c1t64:amd64 (3.12.1-3build1) ...
Selecting previously unselected package proj-data.
Preparing to unpack .../124-proj-data_9.4.0-1build2_all.deb ...
Unpacking proj-data (9.4.0-1build2) ...
Selecting previously unselected package libproj25:amd64.
Preparing to unpack .../125-libproj25_9.4.0-1build2_amd64.deb ...
Unpacking libproj25:amd64 (9.4.0-1build2) ...
Selecting previously unselected package libgeotiff5:amd64.
Preparing to unpack .../126-libgeotiff5_1.7.1-5build1_amd64.deb ...
Unpacking libgeotiff5:amd64 (1.7.1-5build1) ...
Selecting previously unselected package libhdf4-0-alt:amd64.
Preparing to unpack .../127-libhdf4-0-alt_4.2.16-4build1_amd64.deb ...
Unpacking libhdf4-0-alt:amd64 (4.2.16-4build1) ...
Selecting previously unselected package libsz2:amd64.
Preparing to unpack .../128-libsz2_1.1.2-1build1_amd64.deb ...
Unpacking libsz2:amd64 (1.1.2-1build1) ...
Selecting previously unselected package libhdf5-103-1t64:amd64.
Preparing to unpack .../129-libhdf5-103-1t64_1.10.10+repack-3.1ubuntu4_amd64.deb ...
Unpacking libhdf5-103-1t64:amd64 (1.10.10+repack-3.1ubuntu4) ...
Selecting previously unselected package liburiparser1:amd64.
Preparing to unpack .../130-liburiparser1_0.9.7+dfsg-2build1_amd64.deb ...
Unpacking liburiparser1:amd64 (0.9.7+dfsg-2build1) ...
Selecting previously unselected package libkmlbase1t64:amd64.
Preparing to unpack .../131-libkmlbase1t64_1.3.0-12build1_amd64.deb ...
Unpacking libkmlbase1t64:amd64 (1.3.0-12build1) ...
Selecting previously unselected package libkmldom1t64:amd64.
Preparing to unpack .../132-libkmldom1t64_1.3.0-12build1_amd64.deb ...
Unpacking libkmldom1t64:amd64 (1.3.0-12build1) ...
Selecting previously unselected package libkmlengine1t64:amd64.
Preparing to unpack .../133-libkmlengine1t64_1.3.0-12build1_amd64.deb ...
Unpacking libkmlengine1t64:amd64 (1.3.0-12build1) ...
Selecting previously unselected package libhdf5-hl-100t64:amd64.
Preparing to unpack .../134-libhdf5-hl-100t64_1.10.10+repack-3.1ubuntu4_amd64.deb ...
Unpacking libhdf5-hl-100t64:amd64 (1.10.10+repack-3.1ubuntu4) ...
Selecting previously unselected package libnetcdf19t64:amd64.
Preparing to unpack .../135-libnetcdf19t64_1%3a4.9.2-5ubuntu4_amd64.deb ...
Unpacking libnetcdf19t64:amd64 (1:4.9.2-5ubuntu4) ...
Selecting previously unselected package unixodbc-common.
Preparing to unpack .../136-unixodbc-common_2.3.12-1ubuntu0.24.04.1_all.deb ...
Unpacking unixodbc-common (2.3.12-1ubuntu0.24.04.1) ...
Selecting previously unselected package libodbcinst2:amd64.
Preparing to unpack .../137-libodbcinst2_2.3.12-1ubuntu0.24.04.1_amd64.deb ...
Unpacking libodbcinst2:amd64 (2.3.12-1ubuntu0.24.04.1) ...
Selecting previously unselected package libogdi4.1:amd64.
Preparing to unpack .../138-libogdi4.1_4.1.1+ds-3build1_amd64.deb ...
Unpacking libogdi4.1:amd64 (4.1.1+ds-3build1) ...
Selecting previously unselected package libpoppler134:amd64.
Preparing to unpack .../139-libpoppler134_24.02.0-1ubuntu9.1_amd64.deb ...
Unpacking libpoppler134:amd64 (24.02.0-1ubuntu9.1) ...
Selecting previously unselected package libqhull-r8.0:amd64.
Preparing to unpack .../140-libqhull-r8.0_2020.2-6build1_amd64.deb ...
Unpacking libqhull-r8.0:amd64 (2020.2-6build1) ...
Selecting previously unselected package librttopo1:amd64.
Preparing to unpack .../141-librttopo1_1.1.0-3build2_amd64.deb ...
Unpacking librttopo1:amd64 (1.1.0-3build2) ...
Selecting previously unselected package libspatialite8t64:amd64.
Preparing to unpack .../142-libspatialite8t64_5.1.0-3build1_amd64.deb ...
Unpacking libspatialite8t64:amd64 (5.1.0-3build1) ...
Selecting previously unselected package libxerces-c3.2t64:amd64.
Preparing to unpack .../143-libxerces-c3.2t64_3.2.4+debian-1.2ubuntu2_amd64.deb ...
Unpacking libxerces-c3.2t64:amd64 (3.2.4+debian-1.2ubuntu2) ...
Selecting previously unselected package libgdal34t64:amd64.
Preparing to unpack .../144-libgdal34t64_3.8.4+dfsg-3ubuntu3_amd64.deb ...
Unpacking libgdal34t64:amd64 (3.8.4+dfsg-3ubuntu3) ...
Selecting previously unselected package libcharls2:amd64.
Preparing to unpack .../145-libcharls2_2.4.2-2build2_amd64.deb ...
Unpacking libcharls2:amd64 (2.4.2-2build2) ...
Selecting previously unselected package libsocket++1:amd64.
Preparing to unpack .../146-libsocket++1_1.12.13+git20131030.5d039ba-1build1_amd64.deb ...
Unpacking libsocket++1:amd64 (1.12.13+git20131030.5d039ba-1build1) ...
Selecting previously unselected package libgdcm3.0t64:amd64.
Preparing to unpack .../147-libgdcm3.0t64_3.0.22-2.1ubuntu1_amd64.deb ...
Unpacking libgdcm3.0t64:amd64 (3.0.22-2.1ubuntu1) ...
Selecting previously unselected package libopencv-imgcodecs406t64:amd64.
Preparing to unpack .../148-libopencv-imgcodecs406t64_4.6.0+dfsg-13.1ubuntu1_amd64.deb ...
Unpacking libopencv-imgcodecs406t64:amd64 (4.6.0+dfsg-13.1ubuntu1) ...
Selecting previously unselected package libopencv-videoio406t64:amd64.
Preparing to unpack .../149-libopencv-videoio406t64_4.6.0+dfsg-13.1ubuntu1_amd64.deb ...
Unpacking libopencv-videoio406t64:amd64 (4.6.0+dfsg-13.1ubuntu1) ...
Selecting previously unselected package libboost-iostreams1.83.0:amd64.
Preparing to unpack .../150-libboost-iostreams1.83.0_1.83.0-2.1ubuntu3.1_amd64.deb ...
Unpacking libboost-iostreams1.83.0:amd64 (1.83.0-2.1ubuntu3.1) ...
Selecting previously unselected package liblog4cplus-2.0.5t64:amd64.
Preparing to unpack .../151-liblog4cplus-2.0.5t64_2.0.8-1.1ubuntu3_amd64.deb ...
Unpacking liblog4cplus-2.0.5t64:amd64 (2.0.8-1.1ubuntu3) ...
Selecting previously unselected package libopenvdb10.0t64:amd64.
Preparing to unpack .../152-libopenvdb10.0t64_10.0.1-2.1build5_amd64.deb ...
Unpacking libopenvdb10.0t64:amd64 (10.0.1-2.1build5) ...
Selecting previously unselected package libopenimageio2.4t64:amd64.
Preparing to unpack .../153-libopenimageio2.4t64_2.4.17.0+dfsg-1.1build4_amd64.deb ...
Unpacking libopenimageio2.4t64:amd64 (2.4.17.0+dfsg-1.1build4) ...
Selecting previously unselected package libosdcpu3.5.0t64:amd64.
Preparing to unpack .../154-libosdcpu3.5.0t64_3.5.0-2.1build1_amd64.deb ...
Unpacking libosdcpu3.5.0t64:amd64 (3.5.0-2.1build1) ...
Selecting previously unselected package libosdgpu3.5.0t64:amd64.
Preparing to unpack .../155-libosdgpu3.5.0t64_3.5.0-2.1build1_amd64.deb ...
Unpacking libosdgpu3.5.0t64:amd64 (3.5.0-2.1build1) ...
Selecting previously unselected package libpotrace0:amd64.
Preparing to unpack .../156-libpotrace0_1.16-2build1_amd64.deb ...
Unpacking libpotrace0:amd64 (1.16-2build1) ...
Selecting previously unselected package libpugixml1v5:amd64.
Preparing to unpack .../157-libpugixml1v5_1.14-0.1build1_amd64.deb ...
Unpacking libpugixml1v5:amd64 (1.14-0.1build1) ...
Selecting previously unselected package libspnav0.
Preparing to unpack .../158-libspnav0_1.1-2_amd64.deb ...
Unpacking libspnav0 (1.1-2) ...
Selecting previously unselected package blender.
Preparing to unpack .../159-blender_4.0.2+dfsg-1ubuntu8_amd64.deb ...
Unpacking blender (4.0.2+dfsg-1ubuntu8) ...
Selecting previously unselected package libcdparanoia0:amd64.
Preparing to unpack .../160-libcdparanoia0_3.10.2+debian-14build3_amd64.deb ...
Unpacking libcdparanoia0:amd64 (3.10.2+debian-14build3) ...
Selecting previously unselected package libvisual-0.4-0:amd64.
Preparing to unpack .../161-libvisual-0.4-0_0.4.2-2build1_amd64.deb ...
Unpacking libvisual-0.4-0:amd64 (0.4.2-2build1) ...
Selecting previously unselected package gstreamer1.0-plugins-base:amd64.
Preparing to unpack .../162-gstreamer1.0-plugins-base_1.24.2-1ubuntu0.2_amd64.deb ...
Unpacking gstreamer1.0-plugins-base:amd64 (1.24.2-1ubuntu0.2) ...
Selecting previously unselected package libigdgmm12:amd64.
Preparing to unpack .../163-libigdgmm12_22.3.17+ds1-1_amd64.deb ...
Unpacking libigdgmm12:amd64 (22.3.17+ds1-1) ...
Selecting previously unselected package intel-media-va-driver:amd64.
Preparing to unpack .../164-intel-media-va-driver_24.1.0+dfsg1-1_amd64.deb ...
Unpacking intel-media-va-driver:amd64 (24.1.0+dfsg1-1) ...
Selecting previously unselected package libaacs0:amd64.
Preparing to unpack .../165-libaacs0_0.11.1-2build1_amd64.deb ...
Unpacking libaacs0:amd64 (0.11.1-2build1) ...
Selecting previously unselected package libbdplus0:amd64.
Preparing to unpack .../166-libbdplus0_0.2.0-3build1_amd64.deb ...
Unpacking libbdplus0:amd64 (0.2.0-3build1) ...
Selecting previously unselected package libdecor-0-plugin-1-gtk:amd64.
Preparing to unpack .../167-libdecor-0-plugin-1-gtk_0.2.2-1build2_amd64.deb ...
Unpacking libdecor-0-plugin-1-gtk:amd64 (0.2.2-1build2) ...
Selecting previously unselected package libgphoto2-l10n.
Preparing to unpack .../168-libgphoto2-l10n_2.5.31-2.1build2_all.deb ...
Unpacking libgphoto2-l10n (2.5.31-2.1build2) ...
Selecting previously unselected package librsvg2-common:amd64.
Preparing to unpack .../169-librsvg2-common_2.58.0+dfsg-1build1_amd64.deb ...
Unpacking librsvg2-common:amd64 (2.58.0+dfsg-1build1) ...
Selecting previously unselected package libxnvctrl0:amd64.
Preparing to unpack .../170-libxnvctrl0_510.47.03-0ubuntu4_amd64.deb ...
Unpacking libxnvctrl0:amd64 (510.47.03-0ubuntu4) ...
Selecting previously unselected package mesa-va-drivers:amd64.
Preparing to unpack .../171-mesa-va-drivers_24.0.9-0ubuntu0.3_amd64.deb ...
Unpacking mesa-va-drivers:amd64 (24.0.9-0ubuntu0.3) ...
Selecting previously unselected package mesa-vdpau-drivers:amd64.
Preparing to unpack .../172-mesa-vdpau-drivers_24.0.9-0ubuntu0.3_amd64.deb ...
Unpacking mesa-vdpau-drivers:amd64 (24.0.9-0ubuntu0.3) ...
Selecting previously unselected package i965-va-driver:amd64.
Preparing to unpack .../173-i965-va-driver_2.4.1+dfsg1-1build2_amd64.deb ...
Unpacking i965-va-driver:amd64 (2.4.1+dfsg1-1build2) ...
Selecting previously unselected package va-driver-all:amd64.
Preparing to unpack .../174-va-driver-all_2.20.0-2build1_amd64.deb ...
Unpacking va-driver-all:amd64 (2.20.0-2build1) ...
Selecting previously unselected package vdpau-driver-all:amd64.
Preparing to unpack .../175-vdpau-driver-all_1.5-2build1_amd64.deb ...
Unpacking vdpau-driver-all:amd64 (1.5-2build1) ...
Selecting previously unselected package libhwloc-plugins:amd64.
Preparing to unpack .../176-libhwloc-plugins_2.10.0-1build1_amd64.deb ...
Unpacking libhwloc-plugins:amd64 (2.10.0-1build1) ...
Selecting previously unselected package pocketsphinx-en-us.
Preparing to unpack .../177-pocketsphinx-en-us_0.8.0+real5prealpha+1-15ubuntu5_all.deb ...
Unpacking pocketsphinx-en-us (0.8.0+real5prealpha+1-15ubuntu5) ...
Selecting previously unselected package proj-bin.
Preparing to unpack .../178-proj-bin_9.4.0-1build2_amd64.deb ...
Unpacking proj-bin (9.4.0-1build2) ...
Setting up libgme0:amd64 (0.6.3-7build1) ...
Setting up libchromaprint1:amd64 (1.5.1-5) ...
Setting up libssh-gcrypt-4:amd64 (0.10.6-2build2) ...
Setting up libhwy1t64:amd64 (1.0.7-8.1build1) ...
Setting up libtbbmalloc2:amd64 (2021.11.0-2ubuntu2) ...
Setting up libudfread0:amd64 (1.1.2-1build1) ...
Setting up libcdparanoia0:amd64 (3.10.2+debian-14build3) ...
Setting up liblog4cplus-2.0.5t64:amd64 (2.0.8-1.1ubuntu3) ...
Setting up libraw1394-11:amd64 (2.1.2-2build3) ...
Setting up libfftw3-single3:amd64 (3.3.10-1ubuntu3) ...
Setting up libspeex1:amd64 (1.2.1-2ubuntu2.24.04.1) ...
Setting up proj-data (9.4.0-1build2) ...
Setting up libshine3:amd64 (3.1.1-2build1) ...
Setting up libcaca0:amd64 (0.99.beta20-4build2) ...
Setting up libvpl2 (2023.3.0-1build1) ...
Setting up libx264-164:amd64 (2:0.164.3108+git31e19f9-1) ...
Setting up libtwolame0:amd64 (0.4.0-2build3) ...
Setting up libmbedcrypto7t64:amd64 (2.28.8-1) ...
Setting up libproj25:amd64 (9.4.0-1build2) ...
Setting up libogdi4.1:amd64 (4.1.1+ds-3build1) ...
Setting up libpoppler134:amd64 (24.02.0-1ubuntu9.1) ...
Setting up libgsm1:amd64 (1.0.22-1build1) ...
Setting up libcharls2:amd64 (2.4.2-2build2) ...
Setting up libvisual-0.4-0:amd64 (0.4.2-2build1) ...
Setting up libgeos3.12.1t64:amd64 (3.12.1-3build1) ...
Setting up libsoxr0:amd64 (0.1.3-4build3) ...
Setting up libzix-0-0:amd64 (0.4.2-2build1) ...
Setting up libdcmtk17t64:amd64 (3.6.7-9.1build4) ...
Setting up libcodec2-1.2:amd64 (1.2.0-2build1) ...
Setting up libgeos-c1t64:amd64 (3.12.1-3build1) ...
Setting up libyaml-cpp0.8:amd64 (0.8.0+dfsg-6build1) ...
Setting up libmysofa1:amd64 (1.3.2+dfsg-2ubuntu2) ...
Setting up libxcb-shape0:amd64 (1.15-1ubuntu2) ...
Setting up libcdio19t64:amd64 (2.1.0-4.1ubuntu1.2) ...
Setting up libboost-thread1.83.0:amd64 (1.83.0-2.1ubuntu3.1) ...
Setting up proj-bin (9.4.0-1build2) ...
Setting up libqhull-r8.0:amd64 (2020.2-6build1) ...
Setting up libsvtav1enc1d1:amd64 (1.7.0+dfsg-2build1) ...
Setting up libigdgmm12:amd64 (22.3.17+ds1-1) ...
Setting up libjemalloc2:amd64 (5.3.0-2build1) ...
Setting up libmpg123-0t64:amd64 (1.32.5-1ubuntu1.1) ...
Setting up libxerces-c3.2t64:amd64 (3.2.4+debian-1.2ubuntu2) ...
Setting up libcjson1:amd64 (1.7.17-1) ...
Setting up libxvidcore4:amd64 (2:1.3.7-1build1) ...
Setting up libgphoto2-l10n (2.5.31-2.1build2) ...
Setting up librav1e0:amd64 (0.7.1-2) ...
Setting up libaec0:amd64 (1.1.2-1build1) ...
Setting up gdal-data (3.8.4+dfsg-3ubuntu3) ...
Setting up libpugixml1v5:amd64 (1.14-0.1build1) ...
Setting up libgeotiff5:amd64 (1.7.1-5build1) ...
Setting up poppler-data (0.4.12-1) ...
Setting up liborc-0.4-0t64:amd64 (1:0.4.38-1ubuntu0.1) ...
Setting up libcdio-cdda2t64:amd64 (10.2+2.0.1-1.1build2) ...
Setting up libxnvctrl0:amd64 (510.47.03-0ubuntu4) ...
Setting up librist4:amd64 (0.2.10+dfsg-2) ...
Setting up librsvg2-2:amd64 (2.58.0+dfsg-1build1) ...
Setting up libblas3:amd64 (3.12.0-3build1.1) ...
update-alternatives: using /usr/lib/x86_64-linux-gnu/blas/libblas.so.3 to provide /usr/lib/x86_64-linux-gnu/libblas.so.3 (libblas.so.3-x86_64-linux-gnu) in auto mode
Setting up libplacebo338:amd64 (6.338.2-2build1) ...
Setting up libcfitsio10t64:amd64 (4.3.1-1.1build2) ...
Setting up libva2:amd64 (2.20.0-2build1) ...
Setting up libboost-iostreams1.83.0:amd64 (1.83.0-2.1ubuntu3.1) ...
Setting up libopus0:amd64 (1.4-1build1) ...
Setting up libexif12:amd64 (0.6.24-1build2) ...
Setting up libcdio-paranoia2t64:amd64 (10.2+2.0.1-1.1build2) ...
Setting up libdc1394-25:amd64 (2.2.6-4build1) ...
Setting up intel-media-va-driver:amd64 (24.1.0+dfsg1-1) ...
Setting up libxv1:amd64 (2:1.0.11-1.1build1) ...
Setting up libhwloc15:amd64 (2.10.0-1build1) ...
Setting up libimath-3-1-29t64:amd64 (3.1.9-3.1ubuntu2) ...
Setting up libunibreak5:amd64 (5.1-2build1) ...
Setting up unixodbc-common (2.3.12-1ubuntu0.24.04.1) ...
Setting up libsocket++1:amd64 (1.12.13+git20131030.5d039ba-1build1) ...
Setting up libaacs0:amd64 (0.11.1-2build1) ...
Setting up libjxl0.7:amd64 (0.7.0-10.2ubuntu6) ...
Setting up librsvg2-common:amd64 (2.58.0+dfsg-1build1) ...
Setting up pocketsphinx-en-us (0.8.0+real5prealpha+1-15ubuntu5) ...
Setting up libhdf4-0-alt:amd64 (4.2.16-4build1) ...
Setting up libx265-199:amd64 (3.5-2build1) ...
Setting up libosdcpu3.5.0t64:amd64 (3.5.0-2.1build1) ...
Setting up libsndio7.0:amd64 (1.9.0-0.3build3) ...
Setting up libgif7:amd64 (5.2.2-1ubuntu1) ...
Setting up liburiparser1:amd64 (0.9.7+dfsg-2build1) ...
Setting up libbdplus0:amd64 (0.2.0-3build1) ...
Setting up libvidstab1.1:amd64 (1.1.0-2build1) ...
Setting up libfyba0t64:amd64 (4.1.1-11build1) ...
Setting up libvpx9:amd64 (1.14.0-1ubuntu2.1) ...
Setting up librttopo1:amd64 (1.1.0-3build2) ...
Setting up libsrt1.5-gnutls:amd64 (1.5.3-1build2) ...
Setting up libflite1:amd64 (2.2-6build3) ...
Setting up libdav1d7:amd64 (1.4.1-1build1) ...
Setting up libva-drm2:amd64 (2.20.0-2build1) ...
Setting up blender-data (4.0.2+dfsg-1ubuntu8) ...
Setting up libminizip1t64:amd64 (1:1.3.dfsg-3.1ubuntu2.1) ...
Setting up ocl-icd-libopencl1:amd64 (2.3.2-1build1) ...
Setting up libasyncns0:amd64 (0.8-6build4) ...
Setting up libvdpau1:amd64 (1.5-2build1) ...
Setting up libbs2b0:amd64 (3.1.0+dfsg-7build1) ...
Setting up libtheora0:amd64 (1.1.1+dfsg.1-16.1build3) ...
Setting up libblosc1:amd64 (1.21.5+ds-1build1) ...
Setting up libdecor-0-0:amd64 (0.2.2-1build2) ...
Setting up libzimg2:amd64 (3.0.5+ds1-1build1) ...
Setting up libopenal-data (1:1.23.1-4build1) ...
Setting up libpystring0:amd64 (1.1.4-1build1) ...
Setting up libgphoto2-port12t64:amd64 (2.5.31-2.1build2) ...
Setting up libflac12t64:amd64 (1.4.3+ds-2.1ubuntu2) ...
Setting up mesa-va-drivers:amd64 (24.0.9-0ubuntu0.3) ...
Setting up libbluray2:amd64 (1:1.3.4-1build1) ...
Setting up libkmlbase1t64:amd64 (1.3.0-12build1) ...
Setting up libsamplerate0:amd64 (0.2.2-4build1) ...
Setting up libva-x11-2:amd64 (2.20.0-2build1) ...
Setting up libdecor-0-plugin-1-gtk:amd64 (0.2.2-1build2) ...
Setting up libopenmpt0t64:amd64 (0.7.3-1.1build3) ...
Setting up libzvbi-common (0.2.42-2) ...
Setting up libmp3lame0:amd64 (3.100-6build1) ...
Setting up libsz2:amd64 (1.1.2-1build1) ...
Setting up i965-va-driver:amd64 (2.4.1+dfsg1-1build2) ...
Setting up libvorbisenc2:amd64 (1.3.7-1build3) ...
Setting up libspnav0 (1.1-2) ...
Setting up libiec61883-0:amd64 (1.2.0-6build1) ...
Setting up gdal-plugins:amd64 (3.8.4+dfsg-3ubuntu3) ...
Setting up libserd-0-0:amd64 (0.32.2-1) ...
Setting up libpotrace0:amd64 (1.16-2build1) ...
Setting up libavc1394-0:amd64 (0.5.4-5build3) ...
Setting up libgdcm3.0t64:amd64 (3.0.22-2.1ubuntu1) ...
Setting up mesa-vdpau-drivers:amd64 (24.0.9-0ubuntu0.3) ...
Setting up libosdgpu3.5.0t64:amd64 (3.5.0-2.1build1) ...
Setting up libodbcinst2:amd64 (2.3.12-1ubuntu0.24.04.1) ...
Setting up liblapack3:amd64 (3.12.0-3build1.1) ...
update-alternatives: using /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3 to provide /usr/lib/x86_64-linux-gnu/liblapack.so.3 (liblapack.so.3-x86_64-linux-gnu) in auto mode
Setting up libarpack2t64:amd64 (3.9.1-1.1build2) ...
Setting up libzvbi0t64:amd64 (0.2.42-2) ...
Setting up libboost-locale1.83.0:amd64 (1.83.0-2.1ubuntu3.1) ...
Setting up libgstreamer-plugins-base1.0-0:amd64 (1.24.2-1ubuntu0.2) ...
Setting up libavutil58:amd64 (7:6.1.1-3ubuntu5) ...
Setting up libopenal1:amd64 (1:1.23.1-4build1) ...
Setting up libsuperlu6:amd64 (6.0.1+dfsg1-1build1) ...
Setting up libhwloc-plugins:amd64 (2.10.0-1build1) ...
Setting up libtbbbind-2-5:amd64 (2021.11.0-2ubuntu2) ...
Setting up libkmldom1t64:amd64 (1.3.0-12build1) ...
Setting up gstreamer1.0-plugins-base:amd64 (1.24.2-1ubuntu0.2) ...
Setting up libass9:amd64 (1:0.17.1-2build1) ...
Setting up libswresample4:amd64 (7:6.1.1-3ubuntu5) ...
Setting up va-driver-all:amd64 (2.20.0-2build1) ...
Setting up libgphoto2-6t64:amd64 (2.5.31-2.1build2) ...
No diversion 'diversion of /lib/udev/hwdb.d/20-libgphoto2-6.hwdb to /lib/udev/hwdb.d/20-libgphoto2-6.hwdb.usr-is-merged by usr-is-merged', none removed.
No diversion 'diversion of /lib/udev/rules.d/60-libgphoto2-6.rules to /lib/udev/rules.d/60-libgphoto2-6.rules.usr-is-merged by usr-is-merged', none removed.
Setting up libopencolorio2.1t64:amd64 (2.1.3+dfsg-1.1build3) ...
Setting up libopenexr-3-1-30:amd64 (3.1.5-5.1build3) ...
Setting up libavcodec60:amd64 (7:6.1.1-3ubuntu5) ...
Setting up librubberband2:amd64 (3.3.0+dfsg-2build1) ...
Setting up libjack-jackd2-0:amd64 (1.9.21~dfsg-3ubuntu3) ...
Setting up vdpau-driver-all:amd64 (1.5-2build1) ...
Setting up libfreexl1:amd64 (2.0.0-1build2) ...
Setting up libsord-0-0:amd64 (0.16.16-2build1) ...
Setting up libpostproc57:amd64 (7:6.1.1-3ubuntu5) ...
Setting up libsratom-0-0:amd64 (0.6.16-1build1) ...
Setting up libsndfile1:amd64 (1.2.2-1ubuntu5) ...
Setting up libhdf5-103-1t64:amd64 (1.10.10+repack-3.1ubuntu4) ...
Setting up liblilv-0-0:amd64 (0.24.22-1build1) ...
Setting up libarmadillo12 (1:12.6.7+dfsg-1build2) ...
Setting up libswscale7:amd64 (7:6.1.1-3ubuntu5) ...
Setting up libspatialite8t64:amd64 (5.1.0-3build1) ...
Setting up libhdf5-hl-100t64:amd64 (1.10.10+repack-3.1ubuntu4) ...
Setting up libnetcdf19t64:amd64 (1:4.9.2-5ubuntu4) ...
Setting up libpulse0:amd64 (1:16.1+dfsg1-2ubuntu10.1) ...
Setting up libtbb12:amd64 (2021.11.0-2ubuntu2) ...
Setting up libavformat60:amd64 (7:6.1.1-3ubuntu5) ...
Setting up libkmlengine1t64:amd64 (1.3.0-12build1) ...
Setting up libsphinxbase3t64:amd64 (0.8+5prealpha+1-17build2) ...
Setting up libgdal34t64:amd64 (3.8.4+dfsg-3ubuntu3) ...
Setting up libembree4-4:amd64 (4.3.0+dfsg-2) ...
Setting up libsdl2-2.0-0:amd64 (2.30.0+dfsg-1build3) ...
Setting up libopencv-core406t64:amd64 (4.6.0+dfsg-13.1ubuntu1) ...
Setting up libopenvdb10.0t64:amd64 (10.0.1-2.1build5) ...
Setting up libpocketsphinx3:amd64 (0.8.0+real5prealpha+1-15ubuntu5) ...
Setting up libopencv-imgproc406t64:amd64 (4.6.0+dfsg-13.1ubuntu1) ...
Setting up libopencv-imgcodecs406t64:amd64 (4.6.0+dfsg-13.1ubuntu1) ...
Setting up libavfilter9:amd64 (7:6.1.1-3ubuntu5) ...
Setting up libopencv-videoio406t64:amd64 (4.6.0+dfsg-13.1ubuntu1) ...
Setting up libavdevice60:amd64 (7:6.1.1-3ubuntu5) ...
Setting up libopenimageio2.4t64:amd64 (2.4.17.0+dfsg-1.1build4) ...
Setting up blender (4.0.2+dfsg-1ubuntu8) ...
Processing triggers for hicolor-icon-theme (0.17-2) ...
Processing triggers for libc-bin (2.39-0ubuntu8.3) ...
Processing triggers for man-db (2.12.0-4build2) ...
Processing triggers for udev (255.4-1ubuntu8.4) ...
Processing triggers for libgdk-pixbuf-2.0-0:amd64 (2.42.10+dfsg-3ubuntu3.1) ...
Processing triggers for fontconfig (2.15.0-1.1ubuntu2) ...

Running kernel seems to be up-to-date.

Restarting services...

Service restarts being deferred:
 systemctl restart runner-provisioner.service

No containers need to be restarted.

No user sessions are running outdated binaries.

No VM guests are running outdated hypervisor (qemu) binaries on this host.
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/apps/spiral/temp/blender
polyglot/scripts/core.ps1/GetFullPath / Path: ./build.py / Location: /home/runner/work/polyglot/polyglot/apps/spiral/temp/blender / ResolvedLocation: /home/runner/work/polyglot/polyglot/apps/spiral/temp/blender
polyglot/scripts/core.ps1/GetFullPath / FullPath: /home/runner/work/polyglot/polyglot/apps/spiral/temp/blender/build.py
blender / Path: /home/runner/work/polyglot/polyglot/apps/spiral/temp/blender/build.py
Blender 4.0.2
Fra:1 Mem:9.24M (Peak 9.24M) | Time:00:00.00 | Mem:0.00M, Peak:0.00M | Scene, ViewLayer | Synchronizing object | Cube
Fra:1 Mem:9.29M (Peak 9.29M) | Time:00:00.00 | Mem:0.00M, Peak:0.00M | Scene, ViewLayer | Initializing
Fra:1 Mem:9.15M (Peak 9.29M) | Time:00:00.00 | Mem:0.00M, Peak:0.00M | Scene, ViewLayer | Waiting for render to start
Fra:1 Mem:9.15M (Peak 9.29M) | Time:00:00.00 | Mem:0.00M, Peak:0.00M | Scene, ViewLayer | Loading render kernels (may take a few minutes the first time)
Fra:1 Mem:9.15M (Peak 9.29M) | Time:00:00.00 | Mem:0.00M, Peak:0.00M | Scene, ViewLayer | Updating Scene
Fra:1 Mem:9.15M (Peak 9.29M) | Time:00:00.00 | Mem:0.00M, Peak:0.00M | Scene, ViewLayer | Updating Shaders
Fra:1 Mem:9.24M (Peak 9.29M) | Time:00:00.00 | Mem:0.00M, Peak:0.00M | Scene, ViewLayer | Updating Procedurals
Fra:1 Mem:9.24M (Peak 9.29M) | Time:00:00.00 | Mem:0.00M, Peak:0.00M | Scene, ViewLayer | Updating Background
Fra:1 Mem:9.24M (Peak 9.29M) | Time:00:00.00 | Mem:0.00M, Peak:0.00M | Scene, ViewLayer | Updating Camera
Fra:1 Mem:9.24M (Peak 9.29M) | Time:00:00.00 | Mem:0.00M, Peak:0.00M | Scene, ViewLayer | Updating Meshes Flags
Fra:1 Mem:9.24M (Peak 9.29M) | Time:00:00.00 | Mem:0.00M, Peak:0.00M | Scene, ViewLayer | Updating Objects
Fra:1 Mem:9.24M (Peak 9.29M) | Time:00:00.00 | Mem:0.00M, Peak:0.00M | Scene, ViewLayer | Updating Objects | Copying Transformations to device
Fra:1 Mem:9.24M (Peak 9.29M) | Time:00:00.00 | Mem:0.00M, Peak:0.00M | Scene, ViewLayer | Updating Objects | Applying Static Transformations
Fra:1 Mem:9.24M (Peak 9.29M) | Time:00:00.00 | Mem:0.00M, Peak:0.00M | Scene, ViewLayer | Updating Particle Systems
Fra:1 Mem:9.24M (Peak 9.29M) | Time:00:00.00 | Mem:0.00M, Peak:0.00M | Scene, ViewLayer | Updating Particle Systems | Copying Particles to device
Fra:1 Mem:9.24M (Peak 9.29M) | Time:00:00.00 | Mem:0.00M, Peak:0.00M | Scene, ViewLayer | Updating Meshes
Fra:1 Mem:9.25M (Peak 9.29M) | Time:00:00.00 | Mem:0.00M, Peak:0.00M | Scene, ViewLayer | Updating Mesh | Computing attributes
Fra:1 Mem:9.26M (Peak 9.29M) | Time:00:00.00 | Mem:0.00M, Peak:0.00M | Scene, ViewLayer | Updating Mesh | Copying Attributes to device
Fra:1 Mem:9.26M (Peak 9.29M) | Time:00:00.00 | Mem:0.01M, Peak:0.01M | Scene, ViewLayer | Updating Scene BVH | Building
Fra:1 Mem:9.26M (Peak 9.29M) | Time:00:00.00 | Mem:0.01M, Peak:0.01M | Scene, ViewLayer | Updating Scene BVH | Building BVH
Fra:1 Mem:9.26M (Peak 9.29M) | Time:00:00.00 | Mem:0.04M, Peak:0.04M | Scene, ViewLayer | Updating Scene BVH | Building BVH 0%
Fra:1 Mem:9.26M (Peak 9.29M) | Time:00:00.00 | Mem:0.07M, Peak:0.10M | Scene, ViewLayer | Updating Scene BVH | Copying BVH to device
Fra:1 Mem:9.26M (Peak 9.29M) | Time:00:00.00 | Mem:0.07M, Peak:0.10M | Scene, ViewLayer | Updating Mesh | Computing normals
Fra:1 Mem:9.29M (Peak 9.29M) | Time:00:00.00 | Mem:0.07M, Peak:0.10M | Scene, ViewLayer | Updating Mesh | Copying Mesh to device
Fra:1 Mem:9.29M (Peak 9.29M) | Time:00:00.00 | Mem:0.11M, Peak:0.11M | Scene, ViewLayer | Updating Objects Flags
Fra:1 Mem:9.29M (Peak 9.29M) | Time:00:00.00 | Mem:0.11M, Peak:0.11M | Scene, ViewLayer | Updating Primitive Offsets
Fra:1 Mem:9.29M (Peak 9.29M) | Time:00:00.00 | Mem:0.11M, Peak:0.11M | Scene, ViewLayer | Updating Images
Fra:1 Mem:9.29M (Peak 9.29M) | Time:00:00.00 | Mem:0.11M, Peak:0.11M | Scene, ViewLayer | Updating Camera Volume
Fra:1 Mem:9.29M (Peak 9.29M) | Time:00:00.00 | Mem:0.11M, Peak:0.11M | Scene, ViewLayer | Updating Lookup Tables
Fra:1 Mem:9.29M (Peak 9.29M) | Time:00:00.00 | Mem:0.19M, Peak:0.19M | Scene, ViewLayer | Updating Lights
Fra:1 Mem:9.29M (Peak 9.29M) | Time:00:00.00 | Mem:0.19M, Peak:0.19M | Scene, ViewLayer | Updating Lights | Computing distribution
Fra:1 Mem:9.29M (Peak 9.29M) | Time:00:00.00 | Mem:0.19M, Peak:0.19M | Scene, ViewLayer | Updating Lights | Computing tree
Fra:1 Mem:9.29M (Peak 9.29M) | Time:00:00.00 | Mem:0.19M, Peak:0.19M | Scene, ViewLayer | Updating Integrator
Fra:1 Mem:25.29M (Peak 25.29M) | Time:00:00.00 | Mem:16.19M, Peak:16.19M | Scene, ViewLayer | Updating Film
Fra:1 Mem:25.29M (Peak 25.29M) | Time:00:00.00 | Mem:16.11M, Peak:16.19M | Scene, ViewLayer | Updating Lookup Tables
Fra:1 Mem:25.29M (Peak 25.29M) | Time:00:00.00 | Mem:16.19M, Peak:16.19M | Scene, ViewLayer | Updating Baking
Fra:1 Mem:25.29M (Peak 25.29M) | Time:00:00.00 | Mem:16.19M, Peak:16.19M | Scene, ViewLayer | Updating Device | Writing constant memory
Build without OpenImageDenoiser
No device available to denoise on
Fra:1 Mem:25.29M (Peak 25.29M) | Time:00:00.00 | Mem:16.19M, Peak:16.19M | Scene, ViewLayer | Build without OpenImageDenoiser
Traceback (most recent call last):
  File "/home/runner/work/polyglot/polyglot/apps/spiral/temp/blender/build.py", line 54, in <module>
    bpy.ops.render.render(write_still=True)
  File "/usr/share/blender/scripts/modules/bpy/ops.py", line 109, in __call__
    ret = _op_call(self.idname_py(), kw)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
RuntimeError: Error: Build without OpenImageDenoiser
Error: Build without OpenImageDenoiser

Error: Build without OpenImageDenoiser
Error: Build without OpenImageDenoiser
Blender quit
In [ ]:
{ pwsh ../apps/spiral/vscode/build.ps1 } | Invoke-Block
bun install v1.1.43 (76800b04)

+ @types/node@20.12.11
+ @types/vscode@1.89.0
+ @vscode/vsce@2.26.1
+ npm-check-updates@17.0.0-5
+ typescript@5.5.0-dev.20240514
+ vscode@1.1.37

190 packages installed [678.00ms]
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/apps/spiral/vscode
polyglot/scripts/core.ps1/GetFullPath / Path: ./LICENSE / Location: /home/runner/work/polyglot/polyglot/apps/spiral/vscode / ResolvedLocation: /home/runner/work/polyglot/polyglot/apps/spiral/vscode
polyglot/scripts/core.ps1/GetFullPath / FullPath: /home/runner/work/polyglot/polyglot/apps/spiral/vscode/LICENSE
polyglot/scripts/core.ps1/EnsureSymbolicLink / Parent: /home/runner/work/polyglot/polyglot/apps/spiral/vscode / Path: /home/runner/work/polyglot/polyglot/apps/spiral/vscode/LICENSE
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/apps/spiral/vscode
polyglot/scripts/core.ps1/GetFullPath / Path: ../../../LICENSE / Location: /home/runner/work/polyglot/polyglot/apps/spiral/vscode / ResolvedLocation: /home/runner/work/polyglot/polyglot/apps/spiral/vscode
polyglot/scripts/core.ps1/GetFullPath / FullPath: /home/runner/work/polyglot/polyglot/LICENSE
polyglot/scripts/core.ps1/ResolveLink / parent:  / Path: /home / End: runner/work/polyglot/polyglot/LICENSE
polyglot/scripts/core.ps1/EnsureSymbolicLink / FullPath: /home/runner/work/polyglot/polyglot/apps/spiral/vscode/LICENSE / Target: /home/runner/work/polyglot/polyglot/LICENSE / ResolvedTarget: /home/runner/work/polyglot/polyglot/LICENSE
polyglot/scripts/core.ps1/EnsureSymbolicLink / Creating symlink: /home/runner/work/polyglot/polyglot/apps/spiral/vscode/LICENSE -> /home/runner/work/polyglot/polyglot/LICENSE

  out/src/extension.js                  2.4kb
  out/media/cellOutputScrollButtons.js  1.9kb

⚡ Done in 4ms
Packaged: out/spiral-vscode-0.0.1.vsix (12 files, 43.42KB)
In [ ]:
{ pwsh ../apps/ipfs/build.ps1 } | Invoke-Block
bun install v1.1.43 (76800b04)

+ @types/node@20.12.2
+ npm-check-updates@17.0.0-5
+ typescript@5.5.0-dev.20240401
+ nft.storage@7.1.1

219 packages installed [2.10s]

Blocked 1 postinstall. Run `bun pm untrusted` for details.
In [ ]:
{ pwsh ./outdated.ps1 } | Invoke-Block
Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
Resolving dependency graph...
Outdated packages found:
  Group: Main
    * Argu 6.2.4 -> 6.2.5
    * Expecto 11.0.0-alpha2 -> 11.0.0-alpha4
    * Expecto.FsCheck 11.0.0-alpha2 -> 11.0.0-alpha4-fscheck2
    * FsCheck 3.0.0-rc3 -> 2.16.6
    * Microsoft.AspNetCore.Connections.Abstractions 7.0 -> 9.0.0
    * Microsoft.AspNetCore.Http.Connections.Client 7.0 -> 9.0.0
    * Microsoft.AspNetCore.Http.Connections.Common 7.0 -> 9.0.0
    * Microsoft.AspNetCore.SignalR.Client 7.0 -> 9.0.0
    * Microsoft.AspNetCore.SignalR.Client.Core 7.0 -> 9.0.0
    * Microsoft.AspNetCore.SignalR.Common 7.0 -> 9.0.0
    * Microsoft.AspNetCore.SignalR.Protocols.Json 7.0 -> 9.0.0
    * Microsoft.Extensions.Features 7.0 -> 9.0.0
    * System.Management 7.0 -> 9.0.0
Total time taken: 13 seconds

CheckToml / toml: /home/runner/work/polyglot/polyglot/workspace/Cargo.toml
chat_contract_tests
================
Name                        Project                        Compat   Latest   Kind    Platform
----                        -------                        ------   ------   ----    --------
ahash                       0.7.8                          Removed  ---      Normal  ---
android-tzdata              0.1.1                          Removed  Removed  Normal  cfg(target_os = "android")
android_system_properties   0.1.5                          Removed  Removed  Normal  cfg(target_os = "android")
autocfg                     1.4.0                          Removed  ---      Build   ---
autocfg                     1.4.0                          Removed  Removed  Build   ---
bumpalo                     3.16.0                         Removed  ---      Normal  ---
bumpalo                     3.16.0                         Removed  Removed  Normal  ---
cc                          1.2.4                          Removed  Removed  Build   ---
cfg-if                      1.0.0                          Removed  ---      Normal  ---
cfg-if                      1.0.0                          Removed  Removed  Normal  ---
chrono                      0.4.39                         Removed  Removed  Normal  ---
core-foundation-sys         0.8.7                          Removed  Removed  Normal  cfg(any(target_os = "macos", target_os = "ios"))
equivalent                  1.0.1                          ---      Removed  Normal  ---
getrandom                   0.2.15                         Removed  ---      Normal  cfg(any(target_os = "linux", target_os = "android", target_os = "windows", target_os = "macos", target_os = "ios", target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonfly", target_os = "solaris", target_os = "illumos", target_os = "fuchsia", target_os = "redox", target_os = "cloudabi", target_os = "haiku", target_os = "vxworks", target_os = "emscripten", target_os = "wasi"))
hashbrown                   0.12.3                         0.15.2   ---      Normal  ---
hashbrown                   0.15.2                         ---      0.12.3   Normal  ---
iana-time-zone              0.1.61                         Removed  Removed  Normal  cfg(unix)
iana-time-zone-haiku        0.1.2                          Removed  Removed  Normal  cfg(target_os = "haiku")
indexmap                    1.9.3                          2.7.0    ---      Normal  ---
indexmap                    2.7.0                          ---      1.9.3    Normal  ---
jobserver                   0.1.32                         Removed  Removed  Normal  ---
js-sys                      0.3.76                         Removed  ---      Normal  cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown"))
js-sys                      0.3.76                         Removed  Removed  Normal  cfg(all(target_arch = "wasm32", not(any(target_os = "emscripten", target_os = "wasi"))))
js-sys                      0.3.76                         Removed  Removed  Normal  cfg(all(target_arch = "wasm32", target_os = "unknown"))
libc                        0.2.168                        Removed  ---      Normal  cfg(unix)
libc                        0.2.168                        Removed  Removed  Normal  ---
libc                        0.2.168                        Removed  Removed  Normal  cfg(unix)
libm                        0.2.11                         Removed  Removed  Normal  ---
log                         0.4.22                         Removed  ---      Normal  ---
log                         0.4.22                         Removed  Removed  Normal  ---
near-sandbox-utils          0.8.0                          0.9.0    0.9.0    Build   ---
num-traits                  0.2.19                         Removed  Removed  Normal  ---
once_cell                   1.20.2                         Removed  ---      Normal  ---
once_cell                   1.20.2                         Removed  ---      Normal  cfg(not(all(target_arch = "arm", target_os = "none")))
once_cell                   1.20.2                         Removed  Removed  Normal  ---
proc-macro2                 1.0.92                         Removed  ---      Normal  ---
proc-macro2                 1.0.92                         Removed  Removed  Normal  ---
quote                       1.0.37                         Removed  ---      Normal  ---
quote                       1.0.37                         Removed  Removed  Normal  ---
serde                       1.0.216                        Removed  Removed  Normal  ---
serde_derive                1.0.216                        Removed  Removed  Normal  ---
shlex                       1.3.0                          Removed  Removed  Normal  ---
syn                         2.0.90                         Removed  ---      Normal  ---
syn                         2.0.90                         Removed  Removed  Normal  ---
unicode-ident               1.0.14                         Removed  ---      Normal  ---
unicode-ident               1.0.14                         Removed  Removed  Normal  ---
version_check               0.9.5                          Removed  ---      Build   ---
wasi                        0.11.0+wasi-snapshot-preview1  Removed  ---      Normal  cfg(target_os = "wasi")
wasm-bindgen                0.2.99                         Removed  ---      Normal  ---
wasm-bindgen                0.2.99                         Removed  ---      Normal  cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown"))
wasm-bindgen                0.2.99                         Removed  Removed  Normal  ---
wasm-bindgen                0.2.99                         Removed  Removed  Normal  cfg(all(target_arch = "wasm32", not(any(target_os = "emscripten", target_os = "wasi"))))
wasm-bindgen                0.2.99                         Removed  Removed  Normal  cfg(all(target_arch = "wasm32", target_os = "unknown"))
wasm-bindgen-backend        0.2.99                         Removed  ---      Normal  ---
wasm-bindgen-backend        0.2.99                         Removed  Removed  Normal  ---
wasm-bindgen-macro          0.2.99                         Removed  ---      Normal  ---
wasm-bindgen-macro          0.2.99                         Removed  Removed  Normal  ---
wasm-bindgen-macro-support  0.2.99                         Removed  ---      Normal  ---
wasm-bindgen-macro-support  0.2.99                         Removed  Removed  Normal  ---
wasm-bindgen-shared         0.2.99                         Removed  ---      Normal  ---
wasm-bindgen-shared         0.2.99                         Removed  Removed  Normal  ---
windows-core                0.52.0                         Removed  Removed  Normal  cfg(target_os = "windows")
windows-targets             0.52.6                         Removed  Removed  Normal  ---
windows-targets             0.52.6                         Removed  Removed  Normal  cfg(windows)
windows_aarch64_gnullvm     0.52.6                         Removed  Removed  Normal  aarch64-pc-windows-gnullvm
windows_aarch64_msvc        0.52.6                         Removed  Removed  Normal  cfg(all(target_arch = "aarch64", target_env = "msvc", not(windows_raw_dylib)))
windows_i686_gnu            0.52.6                         Removed  Removed  Normal  cfg(all(target_arch = "x86", target_env = "gnu", not(target_abi = "llvm"), not(windows_raw_dylib)))
windows_i686_gnullvm        0.52.6                         Removed  Removed  Normal  i686-pc-windows-gnullvm
windows_i686_msvc           0.52.6                         Removed  Removed  Normal  cfg(all(target_arch = "x86", target_env = "msvc", not(windows_raw_dylib)))
windows_x86_64_gnu          0.52.6                         Removed  Removed  Normal  cfg(all(target_arch = "x86_64", target_env = "gnu", not(target_abi = "llvm"), not(windows_raw_dylib)))
windows_x86_64_gnullvm      0.52.6                         Removed  Removed  Normal  x86_64-pc-windows-gnullvm
windows_x86_64_msvc         0.52.6                         Removed  Removed  Normal  cfg(all(any(target_arch = "x86_64", target_arch = "arm64ec"), target_env = "msvc", not(windows_raw_dylib)))

CheckToml / toml: /home/runner/work/polyglot/polyglot/apps/chat/contract/Cargo.toml
Name                                              Project  Compat   Latest   Kind    Platform
----                                              -------  ------   ------   ----    --------
android_system_properties->libc                   0.2.168  0.2.169  0.2.169  Normal  ---
borsh                                             1.5.3    1.5.4    1.5.4    Normal  ---
borsh->borsh-derive                               1.5.3    1.5.4    1.5.4    Normal  ---
borsh-derive->proc-macro2                         1.0.92   1.0.93   1.0.93   Normal  ---
borsh-derive->quote                               1.0.37   1.0.38   1.0.38   Normal  ---
borsh-derive->syn                                 2.0.90   2.0.96   2.0.96   Normal  ---
bs58->tinyvec                                     1.8.0    1.8.1    1.8.1    Normal  ---
cc->libc                                          0.2.168  0.2.169  0.2.169  Normal  cfg(unix)
chrono->js-sys                                    0.3.76   0.3.77   0.3.77   Normal  cfg(all(target_arch = "wasm32", not(any(target_os = "emscripten", target_os = "wasi"))))
chrono->serde                                     1.0.216  1.0.217  1.0.217  Normal  ---
chrono->wasm-bindgen                              0.2.99   0.2.100  0.2.100  Normal  cfg(all(target_arch = "wasm32", not(any(target_os = "emscripten", target_os = "wasi"))))
cpufeatures->libc                                 0.2.168  0.2.169  0.2.169  Normal  aarch64-linux-android
darling_core->proc-macro2                         1.0.92   1.0.93   1.0.93   Normal  ---
darling_core->quote                               1.0.37   1.0.38   1.0.38   Normal  ---
darling_core->syn                                 2.0.90   2.0.96   2.0.96   Normal  ---
darling_macro->quote                              1.0.37   1.0.38   1.0.38   Normal  ---
darling_macro->syn                                2.0.90   2.0.96   2.0.96   Normal  ---
fable_library_rust->uuid                          1.11.0   1.11.1   1.11.1   Normal  ---
futures-macro->proc-macro2                        1.0.92   1.0.93   1.0.93   Normal  ---
futures-macro->quote                              1.0.37   1.0.38   1.0.38   Normal  ---
futures-macro->syn                                2.0.90   2.0.96   2.0.96   Normal  ---
futures-util->pin-project-lite                    0.2.15   0.2.16   0.2.16   Normal  ---
getrandom->js-sys                                 0.3.76   0.3.77   0.3.77   Normal  cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown"))
getrandom->libc                                   0.2.168  0.2.169  0.2.169  Normal  cfg(unix)
getrandom->wasm-bindgen                           0.2.99   0.2.100  0.2.100  Normal  cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown"))
iana-time-zone->js-sys                            0.3.76   0.3.77   0.3.77   Normal  cfg(all(target_arch = "wasm32", target_os = "unknown"))
iana-time-zone->wasm-bindgen                      0.2.99   0.2.100  0.2.100  Normal  cfg(all(target_arch = "wasm32", target_os = "unknown"))
iana-time-zone-haiku->cc                          1.2.4    1.2.9    1.2.9    Build   ---
indexmap->serde                                   1.0.216  1.0.217  1.0.217  Normal  ---
jobserver->libc                                   0.2.168  0.2.169  0.2.169  Normal  cfg(unix)
js-sys->wasm-bindgen                              0.2.99   0.2.100  0.2.100  Normal  ---
near-account-id->borsh                            1.5.3    1.5.4    1.5.4    Normal  ---
near-account-id->serde                            1.0.216  1.0.217  1.0.217  Normal  ---
near-gas->borsh                                   1.5.3    1.5.4    1.5.4    Normal  ---
near-gas->serde                                   1.0.216  1.0.217  1.0.217  Normal  ---
near-sdk                                          5.6.0    5.7.0    5.7.0    Normal  ---
near-sdk->borsh                                   1.5.3    1.5.4    1.5.4    Normal  ---
near-sdk->near-sdk-macros                         5.6.0    5.7.0    5.7.0    Normal  ---
near-sdk->serde                                   1.0.216  1.0.217  1.0.217  Normal  ---
near-sdk->serde_json                              1.0.133  1.0.135  1.0.135  Normal  ---
near-sdk-macros->proc-macro2                      1.0.92   1.0.93   1.0.93   Normal  ---
near-sdk-macros->quote                            1.0.37   1.0.38   1.0.38   Normal  ---
near-sdk-macros->serde                            1.0.216  1.0.217  1.0.217  Normal  ---
near-sdk-macros->serde_json                       1.0.133  1.0.135  1.0.135  Normal  ---
near-sdk-macros->syn                              2.0.90   2.0.96   2.0.96   Normal  ---
near-token->borsh                                 1.5.3    1.5.4    1.5.4    Normal  ---
near-token->serde                                 1.0.216  1.0.217  1.0.217  Normal  ---
num_cpus->libc                                    0.2.168  0.2.169  0.2.169  Normal  cfg(not(windows))
quote->proc-macro2                                1.0.92   1.0.93   1.0.93   Normal  ---
serde->serde_derive                               1.0.216  1.0.217  1.0.217  Normal  ---
serde_derive->proc-macro2                         1.0.92   1.0.93   1.0.93   Normal  ---
serde_derive->quote                               1.0.37   1.0.38   1.0.38   Normal  ---
serde_derive->syn                                 2.0.90   2.0.96   2.0.96   Normal  ---
serde_json->serde                                 1.0.216  1.0.217  1.0.217  Normal  ---
serde_spanned->serde                              1.0.216  1.0.217  1.0.217  Normal  ---
strum_macros->proc-macro2                         1.0.92   1.0.93   1.0.93   Normal  ---
strum_macros->quote                               1.0.37   1.0.38   1.0.38   Normal  ---
strum_macros->rustversion                         1.0.18   1.0.19   1.0.19   Normal  ---
strum_macros->syn                                 2.0.90   2.0.96   2.0.96   Normal  ---
syn->proc-macro2                                  1.0.92   1.0.93   1.0.93   Normal  ---
syn->quote                                        1.0.37   1.0.38   1.0.38   Normal  ---
toml_datetime->serde                              1.0.216  1.0.217  1.0.217  Normal  ---
toml_edit->serde                                  1.0.216  1.0.217  1.0.217  Normal  ---
toml_edit->winnow                                 0.6.20   0.6.24   0.6.24   Normal  ---
wasm-bindgen->wasm-bindgen-macro                  0.2.99   0.2.100  0.2.100  Normal  ---
wasm-bindgen-backend->proc-macro2                 1.0.92   1.0.93   1.0.93   Normal  ---
wasm-bindgen-backend->quote                       1.0.37   1.0.38   1.0.38   Normal  ---
wasm-bindgen-backend->syn                         2.0.90   2.0.96   2.0.96   Normal  ---
wasm-bindgen-backend->wasm-bindgen-shared         0.2.99   0.2.100  0.2.100  Normal  ---
wasm-bindgen-macro->quote                         1.0.37   1.0.38   1.0.38   Normal  ---
wasm-bindgen-macro->wasm-bindgen-macro-support    0.2.99   0.2.100  0.2.100  Normal  ---
wasm-bindgen-macro-support->proc-macro2           1.0.92   1.0.93   1.0.93   Normal  ---
wasm-bindgen-macro-support->quote                 1.0.37   1.0.38   1.0.38   Normal  ---
wasm-bindgen-macro-support->syn                   2.0.90   2.0.96   2.0.96   Normal  ---
wasm-bindgen-macro-support->wasm-bindgen-backend  0.2.99   0.2.100  0.2.100  Normal  ---
wasm-bindgen-macro-support->wasm-bindgen-shared   0.2.99   0.2.100  0.2.100  Normal  ---
wee_alloc->libc                                   0.2.168  0.2.169  0.2.169  Normal  cfg(all(unix, not(target_arch = "wasm32")))

CheckToml / toml: /home/runner/work/polyglot/polyglot/apps/chat/contract/tests/Cargo.toml
Name                                              Project                        Compat   Latest   Kind         Platform
----                                              -------                        ------   ------   ----         --------
actix->bitflags                                   2.6.0                          2.7.0    2.7.0    Normal       ---
actix->pin-project-lite                           0.2.15                         0.2.16   0.2.16   Normal       ---
actix->tokio                                      1.42.0                         1.43.0   1.43.0   Normal       ---
actix-macros->quote                               1.0.37                         1.0.38   1.0.38   Normal       ---
actix-macros->syn                                 2.0.90                         2.0.96   2.0.96   Normal       ---
actix-rt->tokio                                   1.42.0                         1.43.0   1.43.0   Normal       ---
actix_derive->proc-macro2                         1.0.92                         1.0.93   1.0.93   Normal       ---
actix_derive->quote                               1.0.37                         1.0.38   1.0.38   Normal       ---
actix_derive->syn                                 2.0.90                         2.0.96   2.0.96   Normal       ---
ahash->getrandom                                  0.2.15                         Removed  ---      Normal       cfg(any(target_os = "linux", target_os = "android", target_os = "windows", target_os = "macos", target_os = "ios", target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonfly", target_os = "solaris", target_os = "illumos", target_os = "fuchsia", target_os = "redox", target_os = "cloudabi", target_os = "haiku", target_os = "vxworks", target_os = "emscripten", target_os = "wasi"))
ahash->once_cell                                  1.20.2                         Removed  ---      Normal       cfg(not(all(target_arch = "arm", target_os = "none")))
ahash->version_check                              0.9.5                          Removed  ---      Build        ---
android_system_properties->libc                   0.2.168                        0.2.169  0.2.169  Normal       ---
android_system_properties->libc                   0.2.168                        Removed  Removed  Normal       ---
anstream->anstyle-wincon                          3.0.6                          3.0.7    3.0.7    Normal       cfg(windows)
anyhow                                            1.0.94                         1.0.95   1.0.95   Normal       ---
async-channel->pin-project-lite                   0.2.15                         0.2.16   0.2.16   Normal       ---
async-executor->futures-lite                      2.5.0                          2.6.0    2.6.0    Normal       ---
async-io->futures-lite                            2.5.0                          2.6.0    2.6.0    Normal       ---
async-io->rustix                                  0.37.27                        0.37.28  0.37.28  Normal       ---
async-io->rustix                                  0.38.42                        0.38.43  0.38.43  Normal       ---
async-lock->event-listener                        5.3.1                          5.4.0    5.4.0    Normal       ---
async-lock->pin-project-lite                      0.2.15                         0.2.16   0.2.16   Normal       ---
async-process->rustix                             0.38.42                        0.38.43  0.38.43  Normal       cfg(unix)
async-recursion->proc-macro2                      1.0.92                         1.0.93   1.0.93   Normal       ---
async-recursion->quote                            1.0.37                         1.0.38   1.0.38   Normal       ---
async-recursion->syn                              2.0.90                         2.0.96   2.0.96   Normal       ---
async-signal->rustix                              0.38.42                        0.38.43  0.38.43  Normal       cfg(unix)
async-stream->pin-project-lite                    0.2.15                         0.2.16   0.2.16   Normal       ---
async-stream-impl->proc-macro2                    1.0.92                         1.0.93   1.0.93   Normal       ---
async-stream-impl->quote                          1.0.37                         1.0.38   1.0.38   Normal       ---
async-stream-impl->syn                            2.0.90                         2.0.96   2.0.96   Normal       ---
async-trait->proc-macro2                          1.0.92                         1.0.93   1.0.93   Normal       ---
async-trait->quote                                1.0.37                         1.0.38   1.0.38   Normal       ---
async-trait->syn                                  2.0.90                         2.0.96   2.0.96   Normal       ---
atty->libc                                        0.2.168                        0.2.169  0.2.169  Normal       cfg(unix)
axum->async-trait                                 0.1.83                         0.1.85   0.1.85   Normal       ---
axum->hyper                                       0.14.31                        0.14.32  0.14.32  Normal       ---
axum->pin-project-lite                            0.2.15                         0.2.16   0.2.16   Normal       ---
axum->rustversion                                 1.0.18                         1.0.19   1.0.19   Development  ---
axum->serde                                       1.0.216                        1.0.217  1.0.217  Normal       ---
axum-core->async-trait                            0.1.83                         0.1.85   0.1.85   Normal       ---
axum-core->rustversion                            1.0.18                         1.0.19   1.0.19   Build        ---
backtrace->cc                                     1.2.4                          1.2.9    1.2.9    Build        ---
backtrace->libc                                   0.2.168                        0.2.169  0.2.169  Normal       cfg(not(all(windows, target_env = "msvc", not(target_vendor = "uwp"))))
binary-install->anyhow                            1.0.94                         1.0.95   1.0.95   Normal       ---
bip39->serde                                      1.0.216                        1.0.217  1.0.217  Normal       ---
blocking->futures-lite                            2.5.0                          2.6.0    2.6.0    Normal       ---
borsh->borsh-derive                               1.5.3                          1.5.4    1.5.4    Normal       ---
borsh-derive->proc-macro2                         1.0.92                         1.0.93   1.0.93   Normal       ---
borsh-derive->quote                               1.0.37                         1.0.38   1.0.38   Normal       ---
borsh-derive->syn                                 2.0.90                         2.0.96   2.0.96   Normal       ---
bs58->tinyvec                                     1.8.0                          1.8.1    1.8.1    Normal       ---
bytecheck_derive->proc-macro2                     1.0.92                         1.0.93   1.0.93   Normal       ---
bytecheck_derive->quote                           1.0.37                         1.0.38   1.0.38   Normal       ---
bytesize->serde                                   1.0.216                        1.0.217  1.0.217  Normal       ---
bzip2->libc                                       0.2.168                        0.2.169  0.2.169  Normal       ---
bzip2-sys->cc                                     1.2.4                          1.2.9    1.2.9    Build        ---
bzip2-sys->libc                                   0.2.168                        0.2.169  0.2.169  Normal       ---
camino->serde                                     1.0.216                        1.0.217  1.0.217  Normal       ---
cargo-near->clap                                  4.5.23                         4.5.26   4.5.26   Normal       ---
cargo-near->env_logger                            0.11.5                         0.11.6   0.11.6   Normal       ---
cargo-near->serde_json                            1.0.133                        1.0.135  1.0.135  Normal       ---
cargo-platform->serde                             1.0.216                        1.0.217  1.0.217  Normal       ---
cargo-util->anyhow                                1.0.94                         1.0.95   1.0.95   Normal       ---
cargo-util->libc                                  0.2.168                        0.2.169  0.2.169  Normal       ---
cargo-util->tempfile                              3.14.0                         3.15.0   3.15.0   Normal       ---
cargo_metadata->serde                             1.0.216                        1.0.217  1.0.217  Normal       ---
cargo_metadata->serde_json                        1.0.133                        1.0.135  1.0.135  Normal       ---
cc->jobserver                                     0.1.32                         Removed  Removed  Normal       ---
cc->libc                                          0.2.168                        0.2.169  0.2.169  Normal       cfg(unix)
cc->libc                                          0.2.168                        Removed  Removed  Normal       cfg(unix)
cc->shlex                                         1.3.0                          Removed  Removed  Normal       ---
chrono->android-tzdata                            0.1.1                          Removed  Removed  Normal       cfg(target_os = "android")
chrono->iana-time-zone                            0.1.61                         Removed  Removed  Normal       cfg(unix)
chrono->js-sys                                    0.3.76                         0.3.77   0.3.77   Normal       cfg(all(target_arch = "wasm32", not(any(target_os = "emscripten", target_os = "wasi"))))
chrono->js-sys                                    0.3.76                         Removed  Removed  Normal       cfg(all(target_arch = "wasm32", not(any(target_os = "emscripten", target_os = "wasi"))))
chrono->num-traits                                0.2.19                         Removed  Removed  Normal       ---
chrono->serde                                     1.0.216                        1.0.217  1.0.217  Normal       ---
chrono->serde                                     1.0.216                        Removed  Removed  Normal       ---
chrono->wasm-bindgen                              0.2.99                         0.2.100  0.2.100  Normal       cfg(all(target_arch = "wasm32", not(any(target_os = "emscripten", target_os = "wasi"))))
chrono->wasm-bindgen                              0.2.99                         Removed  Removed  Normal       cfg(all(target_arch = "wasm32", not(any(target_os = "emscripten", target_os = "wasi"))))
chrono->windows-targets                           0.52.6                         Removed  Removed  Normal       cfg(windows)
clap->clap_builder                                4.5.23                         4.5.26   4.5.26   Normal       ---
clap->clap_derive                                 4.5.18                         4.5.24   4.5.24   Normal       ---
clap_derive->proc-macro2                          1.0.92                         1.0.93   1.0.93   Normal       ---
clap_derive->quote                                1.0.37                         1.0.38   1.0.38   Normal       ---
clap_derive->syn                                  2.0.90                         2.0.96   2.0.96   Normal       ---
commoncrypto-sys->libc                            0.2.168                        0.2.169  0.2.169  Normal       ---
console->encode_unicode                           0.3.6                          1.0.0    1.0.0    Normal       cfg(windows)
console->lazy_static                              1.5.0                          Removed  Removed  Normal       ---
console->libc                                     0.2.168                        0.2.169  0.2.169  Normal       ---
console->unicode-width                            0.1.14                         0.2.0    0.2.0    Normal       ---
console->windows-sys                              0.52.0                         0.59.0   0.59.0   Normal       cfg(windows)
core-foundation->libc                             0.2.168                        0.2.169  0.2.169  Normal       ---
cpufeatures->libc                                 0.2.168                        0.2.169  0.2.169  Normal       aarch64-linux-android
crossterm->libc                                   0.2.168                        0.2.169  0.2.169  Normal       cfg(unix)
csv->serde                                        1.0.216                        1.0.217  1.0.217  Normal       ---
curve25519-dalek-derive->proc-macro2              1.0.92                         1.0.93   1.0.93   Normal       ---
curve25519-dalek-derive->quote                    1.0.37                         1.0.38   1.0.38   Normal       ---
curve25519-dalek-derive->syn                      2.0.90                         2.0.96   2.0.96   Normal       ---
darling_core->proc-macro2                         1.0.92                         1.0.93   1.0.93   Normal       ---
darling_core->quote                               1.0.37                         1.0.38   1.0.38   Normal       ---
darling_core->syn                                 2.0.90                         2.0.96   2.0.96   Normal       ---
darling_macro->quote                              1.0.37                         1.0.38   1.0.38   Normal       ---
darling_macro->syn                                2.0.90                         2.0.96   2.0.96   Normal       ---
deranged->serde                                   1.0.216                        1.0.217  1.0.217  Normal       ---
derivative->proc-macro2                           1.0.92                         1.0.93   1.0.93   Normal       ---
derivative->quote                                 1.0.37                         1.0.38   1.0.38   Normal       ---
derive_arbitrary->proc-macro2                     1.0.92                         1.0.93   1.0.93   Normal       ---
derive_arbitrary->quote                           1.0.37                         1.0.38   1.0.38   Normal       ---
derive_arbitrary->syn                             2.0.90                         2.0.96   2.0.96   Normal       ---
derive_more->proc-macro2                          1.0.92                         1.0.93   1.0.93   Normal       ---
derive_more->quote                                1.0.37                         1.0.38   1.0.38   Normal       ---
derive_more->syn                                  2.0.90                         2.0.96   2.0.96   Normal       ---
dirs-sys->libc                                    0.2.168                        0.2.169  0.2.169  Normal       cfg(unix)
dirs-sys-next->libc                               0.2.168                        0.2.169  0.2.169  Normal       cfg(unix)
displaydoc->proc-macro2                           1.0.92                         1.0.93   1.0.93   Normal       ---
displaydoc->quote                                 1.0.37                         1.0.38   1.0.38   Normal       ---
displaydoc->syn                                   2.0.90                         2.0.96   2.0.96   Normal       ---
elementtree->xml-rs                               0.8.24                         0.8.25   0.8.25   Normal       ---
enum-map-derive->proc-macro2                      1.0.92                         1.0.93   1.0.93   Normal       ---
enum-map-derive->quote                            1.0.37                         1.0.38   1.0.38   Normal       ---
enum-map-derive->syn                              2.0.90                         2.0.96   2.0.96   Normal       ---
enumflags2->serde                                 1.0.216                        1.0.217  1.0.217  Normal       ---
enumflags2_derive->proc-macro2                    1.0.92                         1.0.93   1.0.93   Normal       ---
enumflags2_derive->quote                          1.0.37                         1.0.38   1.0.38   Normal       ---
enumflags2_derive->syn                            2.0.90                         2.0.96   2.0.96   Normal       ---
env_logger->env_filter                            0.1.2                          0.1.3    0.1.3    Normal       ---
errno->libc                                       0.2.168                        0.2.169  0.2.169  Normal       cfg(target_os = "hermit")
event-listener->pin-project-lite                  0.2.15                         0.2.16   0.2.16   Normal       ---
event-listener-strategy->event-listener           5.3.1                          5.4.0    5.4.0    Normal       ---
event-listener-strategy->pin-project-lite         0.2.15                         0.2.16   0.2.16   Normal       ---
filetime->libc                                    0.2.168                        0.2.169  0.2.169  Normal       cfg(unix)
flate2->miniz_oxide                               0.8.0                          0.8.3    0.8.3    Normal       ---
fs2->libc                                         0.2.168                        0.2.169  0.2.169  Normal       cfg(unix)
futures-lite->pin-project-lite                    0.2.15                         0.2.16   0.2.16   Normal       ---
futures-macro->proc-macro2                        1.0.92                         1.0.93   1.0.93   Normal       ---
futures-macro->quote                              1.0.37                         1.0.38   1.0.38   Normal       ---
futures-macro->syn                                2.0.90                         2.0.96   2.0.96   Normal       ---
futures-util->pin-project-lite                    0.2.15                         0.2.16   0.2.16   Normal       ---
getrandom->cfg-if                                 1.0.0                          Removed  ---      Normal       ---
getrandom->js-sys                                 0.3.76                         0.3.77   0.3.77   Normal       cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown"))
getrandom->js-sys                                 0.3.76                         Removed  0.3.77   Normal       cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown"))
getrandom->libc                                   0.2.168                        0.2.169  0.2.169  Normal       cfg(unix)
getrandom->libc                                   0.2.168                        Removed  0.2.169  Normal       cfg(unix)
getrandom->wasi                                   0.11.0+wasi-snapshot-preview1  Removed  ---      Normal       cfg(target_os = "wasi")
getrandom->wasm-bindgen                           0.2.99                         0.2.100  0.2.100  Normal       cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown"))
getrandom->wasm-bindgen                           0.2.99                         Removed  0.2.100  Normal       cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown"))
h2->tokio                                         1.42.0                         1.43.0   1.43.0   Normal       ---
hashbrown->ahash                                  0.7.8                          Removed  ---      Normal       ---
hashbrown->serde                                  1.0.216                        1.0.217  1.0.217  Normal       ---
hermit-abi->libc                                  0.2.168                        0.2.169  0.2.169  Normal       ---
hex->serde                                        1.0.216                        1.0.217  1.0.217  Normal       ---
home->windows-sys                                 0.52.0                         0.59.0   0.59.0   Normal       cfg(windows)
http-body->pin-project-lite                       0.2.15                         0.2.16   0.2.16   Normal       ---
http-body-util->pin-project-lite                  0.2.15                         0.2.16   0.2.16   Normal       ---
hyper->pin-project-lite                           0.2.15                         0.2.16   0.2.16   Normal       ---
hyper->tokio                                      1.42.0                         1.43.0   1.43.0   Normal       ---
hyper-rustls->hyper                               1.5.1                          1.5.2    1.5.2    Normal       ---
hyper-rustls->rustls                              0.23.20                        0.23.21  0.23.21  Normal       ---
hyper-rustls->tokio                               1.42.0                         1.43.0   1.43.0   Normal       ---
hyper-timeout->hyper                              0.14.31                        0.14.32  0.14.32  Normal       ---
hyper-timeout->pin-project-lite                   0.2.15                         0.2.16   0.2.16   Normal       ---
hyper-timeout->tokio                              1.42.0                         1.43.0   1.43.0   Normal       ---
hyper-tls->hyper                                  1.5.1                          1.5.2    1.5.2    Normal       ---
hyper-tls->tokio                                  1.42.0                         1.43.0   1.43.0   Normal       ---
hyper-util->hyper                                 1.5.1                          1.5.2    1.5.2    Normal       ---
hyper-util->pin-project-lite                      0.2.15                         0.2.16   0.2.16   Normal       ---
hyper-util->tokio                                 1.42.0                         1.43.0   1.43.0   Normal       ---
iana-time-zone->android_system_properties         0.1.5                          Removed  Removed  Normal       cfg(target_os = "android")
iana-time-zone->core-foundation-sys               0.8.7                          Removed  Removed  Normal       cfg(any(target_os = "macos", target_os = "ios"))
iana-time-zone->iana-time-zone-haiku              0.1.2                          Removed  Removed  Normal       cfg(target_os = "haiku")
iana-time-zone->js-sys                            0.3.76                         0.3.77   0.3.77   Normal       cfg(all(target_arch = "wasm32", target_os = "unknown"))
iana-time-zone->js-sys                            0.3.76                         Removed  Removed  Normal       cfg(all(target_arch = "wasm32", target_os = "unknown"))
iana-time-zone->wasm-bindgen                      0.2.99                         0.2.100  0.2.100  Normal       cfg(all(target_arch = "wasm32", target_os = "unknown"))
iana-time-zone->wasm-bindgen                      0.2.99                         Removed  Removed  Normal       cfg(all(target_arch = "wasm32", target_os = "unknown"))
iana-time-zone->windows-core                      0.52.0                         Removed  Removed  Normal       cfg(target_os = "windows")
iana-time-zone-haiku->cc                          1.2.4                          1.2.9    1.2.9    Build        ---
iana-time-zone-haiku->cc                          1.2.4                          Removed  Removed  Build        ---
icu_provider_macros->proc-macro2                  1.0.92                         1.0.93   1.0.93   Normal       ---
icu_provider_macros->quote                        1.0.37                         1.0.38   1.0.38   Normal       ---
icu_provider_macros->syn                          2.0.90                         2.0.96   2.0.96   Normal       ---
indexmap->autocfg                                 1.4.0                          Removed  ---      Build        ---
indexmap->equivalent                              1.0.1                          ---      Removed  Normal       ---
indexmap->hashbrown                               0.12.3                         0.15.2   ---      Normal       ---
indexmap->hashbrown                               0.15.2                         ---      0.12.3   Normal       ---
indexmap->serde                                   1.0.216                        1.0.217  1.0.217  Normal       ---
indicatif->console                                0.15.8                         0.15.10  0.15.10  Normal       ---
inquire->bitflags                                 2.6.0                          2.7.0    2.7.0    Normal       ---
interactive-clap-derive->proc-macro2              1.0.92                         1.0.93   1.0.93   Normal       ---
interactive-clap-derive->quote                    1.0.37                         1.0.38   1.0.38   Normal       ---
io-lifetimes->libc                                0.2.168                        0.2.169  0.2.169  Normal       cfg(not(windows))
is-terminal->libc                                 0.2.168                        0.2.169  0.2.169  Normal       cfg(any(unix, target_os = "wasi"))
jobserver->libc                                   0.2.168                        0.2.169  0.2.169  Normal       cfg(unix)
jobserver->libc                                   0.2.168                        Removed  Removed  Normal       cfg(unix)
js-sys->once_cell                                 1.20.2                         Removed  ---      Normal       ---
js-sys->once_cell                                 1.20.2                         Removed  Removed  Normal       ---
js-sys->wasm-bindgen                              0.2.99                         0.2.100  0.2.100  Normal       ---
js-sys->wasm-bindgen                              0.2.99                         Removed  0.2.100  Normal       ---
js-sys->wasm-bindgen                              0.2.99                         Removed  Removed  Normal       ---
json-patch->serde                                 1.0.216                        1.0.217  1.0.217  Normal       ---
json-patch->serde_json                            1.0.133                        1.0.135  1.0.135  Normal       ---
jsonptr->serde                                    1.0.216                        1.0.217  1.0.217  Normal       ---
jsonptr->serde_json                               1.0.133                        1.0.135  1.0.135  Normal       ---
libredox->bitflags                                2.6.0                          2.7.0    2.7.0    Normal       ---
libredox->libc                                    0.2.168                        0.2.169  0.2.169  Normal       ---
linked-hash-map->serde                            1.0.216                        1.0.217  1.0.217  Normal       ---
linux-keyutils->bitflags                          2.6.0                          2.7.0    2.7.0    Normal       ---
linux-keyutils->libc                              0.2.168                        0.2.169  0.2.169  Normal       ---
memmap2->libc                                     0.2.168                        0.2.169  0.2.169  Normal       cfg(unix)
mio->libc                                         0.2.168                        0.2.169  0.2.169  Normal       cfg(target_os = "hermit")
mio->libc                                         0.2.168                        0.2.169  0.2.169  Normal       cfg(target_os = "wasi")
native-tls->libc                                  0.2.168                        0.2.169  0.2.169  Normal       cfg(target_vendor = "apple")
native-tls->security-framework-sys                2.12.1                         2.14.0   2.14.0   Normal       cfg(target_vendor = "apple")
native-tls->tempfile                              3.14.0                         3.15.0   3.15.0   Development  ---
near-abi->borsh                                   1.5.3                          1.5.4    1.5.4    Normal       ---
near-abi->serde                                   1.0.216                        1.0.217  1.0.217  Normal       ---
near-abi-client->anyhow                           1.0.94                         1.0.95   1.0.95   Normal       ---
near-abi-client->quote                            1.0.37                         1.0.38   1.0.38   Normal       ---
near-abi-client-impl->anyhow                      1.0.94                         1.0.95   1.0.95   Normal       ---
near-abi-client-impl->proc-macro2                 1.0.92                         1.0.93   1.0.93   Normal       ---
near-abi-client-impl->quote                       1.0.37                         1.0.38   1.0.38   Normal       ---
near-abi-client-impl->serde_json                  1.0.133                        1.0.135  1.0.135  Normal       ---
near-account-id->borsh                            1.5.3                          1.5.4    1.5.4    Normal       ---
near-account-id->serde                            1.0.216                        1.0.217  1.0.217  Normal       ---
near-async->serde                                 1.0.216                        1.0.217  1.0.217  Normal       ---
near-async->serde_json                            1.0.133                        1.0.135  1.0.135  Normal       ---
near-async->tokio                                 1.42.0                         1.43.0   1.43.0   Normal       ---
near-async-derive->proc-macro2                    1.0.92                         1.0.93   1.0.93   Normal       ---
near-async-derive->quote                          1.0.37                         1.0.38   1.0.38   Normal       ---
near-async-derive->syn                            2.0.90                         2.0.96   2.0.96   Normal       ---
near-chain-configs->anyhow                        1.0.94                         1.0.95   1.0.95   Normal       ---
near-chain-configs->serde                         1.0.216                        1.0.217  1.0.217  Normal       ---
near-chain-configs->serde_json                    1.0.133                        1.0.135  1.0.135  Normal       ---
near-cli-rs->clap                                 4.5.23                         4.5.26   4.5.26   Normal       ---
near-cli-rs->open                                 5.3.1                          5.3.2    5.3.2    Normal       ---
near-cli-rs->reqwest                              0.12.9                         0.12.12  0.12.12  Normal       ---
near-cli-rs->serde                                1.0.216                        1.0.217  1.0.217  Normal       ---
near-cli-rs->serde_json                           1.0.133                        1.0.135  1.0.135  Normal       ---
near-cli-rs->tokio                                1.42.0                         1.43.0   1.43.0   Normal       ---
near-config-utils->anyhow                         1.0.94                         1.0.95   1.0.95   Normal       ---
near-crypto->borsh                                1.5.3                          1.5.4    1.5.4    Normal       ---
near-crypto->serde                                1.0.216                        1.0.217  1.0.217  Normal       ---
near-crypto->serde_json                           1.0.133                        1.0.135  1.0.135  Normal       ---
near-gas->borsh                                   1.5.3                          1.5.4    1.5.4    Normal       ---
near-gas->serde                                   1.0.216                        1.0.217  1.0.217  Normal       ---
near-jsonrpc-client->borsh                        1.5.3                          1.5.4    1.5.4    Normal       ---
near-jsonrpc-client->reqwest                      0.12.9                         0.12.12  0.12.12  Normal       ---
near-jsonrpc-client->serde                        1.0.216                        1.0.217  1.0.217  Normal       ---
near-jsonrpc-client->serde_json                   1.0.133                        1.0.135  1.0.135  Normal       ---
near-jsonrpc-primitives->serde                    1.0.216                        1.0.217  1.0.217  Normal       ---
near-jsonrpc-primitives->serde_json               1.0.133                        1.0.135  1.0.135  Normal       ---
near-o11y->clap                                   4.5.23                         4.5.26   4.5.26   Normal       ---
near-o11y->serde                                  1.0.216                        1.0.217  1.0.217  Normal       ---
near-o11y->serde_json                             1.0.133                        1.0.135  1.0.135  Normal       ---
near-o11y->tokio                                  1.42.0                         1.43.0   1.43.0   Normal       ---
near-parameters->borsh                            1.5.3                          1.5.4    1.5.4    Normal       ---
near-parameters->serde                            1.0.216                        1.0.217  1.0.217  Normal       ---
near-performance-metrics->libc                    0.2.168                        0.2.169  0.2.169  Normal       ---
near-performance-metrics->tokio                   1.42.0                         1.43.0   1.43.0   Normal       ---
near-primitives->borsh                            1.5.3                          1.5.4    1.5.4    Normal       ---
near-primitives->serde                            1.0.216                        1.0.217  1.0.217  Normal       ---
near-primitives->serde_json                       1.0.133                        1.0.135  1.0.135  Normal       ---
near-primitives->serde_with                       3.11.0                         3.12.0   3.12.0   Normal       ---
near-primitives-core->borsh                       1.5.3                          1.5.4    1.5.4    Normal       ---
near-primitives-core->serde                       1.0.216                        1.0.217  1.0.217  Normal       ---
near-rpc-error-core->quote                        1.0.37                         1.0.38   1.0.38   Normal       ---
near-rpc-error-core->serde                        1.0.216                        1.0.217  1.0.217  Normal       ---
near-rpc-error-core->syn                          2.0.90                         2.0.96   2.0.96   Normal       ---
near-rpc-error-macro->serde                       1.0.216                        1.0.217  1.0.217  Normal       ---
near-rpc-error-macro->syn                         2.0.90                         2.0.96   2.0.96   Normal       ---
near-sandbox-utils                                0.12.0                         0.13.0   0.13.0   Normal       ---
near-sandbox-utils->anyhow                        1.0.94                         1.0.95   1.0.95   Normal       ---
near-sandbox-utils->chrono                        0.4.39                         Removed  Removed  Normal       ---
near-sandbox-utils->home                          0.5.9                          0.5.11   0.5.11   Normal       ---
near-sandbox-utils->tokio                         1.42.0                         1.43.0   1.43.0   Normal       ---
near-sdk                                          5.6.0                          5.7.0    5.7.0    Normal       ---
near-sdk->borsh                                   1.5.3                          1.5.4    1.5.4    Normal       ---
near-sdk->near-sdk-macros                         5.6.0                          5.7.0    5.7.0    Normal       ---
near-sdk->serde                                   1.0.216                        1.0.217  1.0.217  Normal       ---
near-sdk->serde_json                              1.0.133                        1.0.135  1.0.135  Normal       ---
near-sdk-macros->proc-macro2                      1.0.92                         1.0.93   1.0.93   Normal       ---
near-sdk-macros->quote                            1.0.37                         1.0.38   1.0.38   Normal       ---
near-sdk-macros->serde                            1.0.216                        1.0.217  1.0.217  Normal       ---
near-sdk-macros->serde_json                       1.0.133                        1.0.135  1.0.135  Normal       ---
near-sdk-macros->syn                              2.0.90                         2.0.96   2.0.96   Normal       ---
near-socialdb-client->serde                       1.0.216                        1.0.217  1.0.217  Normal       ---
near-socialdb-client->serde_json                  1.0.133                        1.0.135  1.0.135  Normal       ---
near-time->serde                                  1.0.216                        1.0.217  1.0.217  Normal       ---
near-time->tokio                                  1.42.0                         1.43.0   1.43.0   Normal       ---
near-token->borsh                                 1.5.3                          1.5.4    1.5.4    Normal       ---
near-token->serde                                 1.0.216                        1.0.217  1.0.217  Normal       ---
near-workspaces->async-trait                      0.1.83                         0.1.85   0.1.85   Normal       ---
near-workspaces->libc                             0.2.168                        0.2.169  0.2.169  Normal       cfg(unix)
near-workspaces->near-sandbox-utils               0.8.0                          0.9.0    0.9.0    Build        ---
near-workspaces->reqwest                          0.12.9                         0.12.12  0.12.12  Normal       ---
near-workspaces->serde                            1.0.216                        1.0.217  1.0.217  Normal       ---
near-workspaces->serde_json                       1.0.133                        1.0.135  1.0.135  Normal       ---
near-workspaces->tempfile                         3.14.0                         3.15.0   3.15.0   Normal       ---
near-workspaces->tokio                            1.42.0                         1.43.0   1.43.0   Normal       ---
near_schemafy_core->serde                         1.0.216                        1.0.217  1.0.217  Normal       ---
near_schemafy_core->serde_json                    1.0.133                        1.0.135  1.0.135  Normal       ---
near_schemafy_lib->proc-macro2                    1.0.92                         1.0.93   1.0.93   Normal       ---
near_schemafy_lib->quote                          1.0.37                         1.0.38   1.0.38   Normal       ---
near_schemafy_lib->serde                          1.0.216                        1.0.217  1.0.217  Normal       ---
near_schemafy_lib->serde_derive                   1.0.216                        1.0.217  1.0.217  Normal       ---
near_schemafy_lib->serde_json                     1.0.133                        1.0.135  1.0.135  Normal       ---
nix->libc                                         0.2.168                        0.2.169  0.2.169  Normal       ---
num-rational->serde                               1.0.216                        1.0.217  1.0.217  Normal       ---
num-traits->autocfg                               1.4.0                          Removed  Removed  Build        ---
num-traits->libm                                  0.2.11                         Removed  Removed  Normal       ---
num_cpus->libc                                    0.2.168                        0.2.169  0.2.169  Normal       cfg(not(windows))
open->libc                                        0.2.168                        0.2.169  0.2.169  Normal       cfg(unix)
openssl->bitflags                                 2.6.0                          2.7.0    2.7.0    Normal       ---
openssl->libc                                     0.2.168                        0.2.169  0.2.169  Normal       ---
openssl-macros->proc-macro2                       1.0.92                         1.0.93   1.0.93   Normal       ---
openssl-macros->quote                             1.0.37                         1.0.38   1.0.38   Normal       ---
openssl-macros->syn                               2.0.90                         2.0.96   2.0.96   Normal       ---
openssl-src->cc                                   1.2.4                          1.2.9    1.2.9    Normal       ---
openssl-sys->cc                                   1.2.4                          1.2.9    1.2.9    Build        ---
openssl-sys->libc                                 0.2.168                        0.2.169  0.2.169  Normal       ---
opentelemetry->js-sys                             0.3.76                         0.3.77   0.3.77   Normal       cfg(all(target_arch = "wasm32", not(target_os = "wasi")))
opentelemetry->pin-project-lite                   0.2.15                         0.2.16   0.2.16   Normal       ---
opentelemetry-otlp->async-trait                   0.1.83                         0.1.85   0.1.85   Normal       ---
opentelemetry-otlp->tokio                         1.42.0                         1.43.0   1.43.0   Normal       ---
opentelemetry_sdk->async-trait                    0.1.83                         0.1.85   0.1.85   Normal       ---
opentelemetry_sdk->glob                           0.3.1                          0.3.2    0.3.2    Normal       ---
opentelemetry_sdk->ordered-float                  4.5.0                          4.6.0    4.6.0    Normal       ---
opentelemetry_sdk->tokio                          1.42.0                         1.43.0   1.43.0   Normal       ---
ordered-stream->pin-project-lite                  0.2.15                         0.2.16   0.2.16   Normal       ---
parking_lot_core->libc                            0.2.168                        0.2.169  0.2.169  Normal       cfg(unix)
pin-project->pin-project-internal                 1.1.7                          1.1.8    1.1.8    Normal       ---
pin-project-internal->proc-macro2                 1.0.92                         1.0.93   1.0.93   Normal       ---
pin-project-internal->quote                       1.0.37                         1.0.38   1.0.38   Normal       ---
pin-project-internal->syn                         2.0.90                         2.0.96   2.0.96   Normal       ---
polling->libc                                     0.2.168                        0.2.169  0.2.169  Normal       cfg(any(unix, target_os = "fuchsia", target_os = "vxworks"))
polling->pin-project-lite                         0.2.15                         0.2.16   0.2.16   Normal       cfg(windows)
polling->rustix                                   0.38.42                        0.38.43  0.38.43  Normal       cfg(any(unix, target_os = "fuchsia", target_os = "vxworks"))
prettyplease->proc-macro2                         1.0.92                         1.0.93   1.0.93   Normal       ---
proc-macro-error->proc-macro2                     1.0.92                         1.0.93   1.0.93   Normal       ---
proc-macro-error->quote                           1.0.37                         1.0.38   1.0.38   Normal       ---
proc-macro-error-attr->proc-macro2                1.0.92                         1.0.93   1.0.93   Normal       ---
proc-macro-error-attr->quote                      1.0.37                         1.0.38   1.0.38   Normal       ---
proc-macro2->unicode-ident                        1.0.14                         Removed  ---      Normal       ---
proc-macro2->unicode-ident                        1.0.14                         Removed  Removed  Normal       ---
prost-derive->anyhow                              1.0.94                         1.0.95   1.0.95   Normal       ---
prost-derive->proc-macro2                         1.0.92                         1.0.93   1.0.93   Normal       ---
prost-derive->quote                               1.0.37                         1.0.38   1.0.38   Normal       ---
prost-derive->syn                                 2.0.90                         2.0.96   2.0.96   Normal       ---
ptr_meta_derive->proc-macro2                      1.0.92                         1.0.93   1.0.93   Normal       ---
ptr_meta_derive->quote                            1.0.37                         1.0.38   1.0.38   Normal       ---
quote->proc-macro2                                1.0.92                         1.0.93   1.0.93   Normal       ---
quote->proc-macro2                                1.0.92                         Removed  1.0.93   Normal       ---
quote->proc-macro2                                1.0.92                         Removed  Removed  Normal       ---
rand->libc                                        0.2.168                        0.2.169  0.2.169  Normal       cfg(unix)
redox_syscall->bitflags                           2.6.0                          2.7.0    2.7.0    Normal       ---
reqwest->hyper                                    1.5.1                          1.5.2    1.5.2    Normal       cfg(not(target_arch = "wasm32"))
reqwest->hyper-rustls                             0.27.3                         0.27.5   0.27.5   Normal       cfg(not(target_arch = "wasm32"))
reqwest->js-sys                                   0.3.76                         0.3.77   0.3.77   Normal       cfg(target_arch = "wasm32")
reqwest->pin-project-lite                         0.2.15                         0.2.16   0.2.16   Normal       cfg(not(target_arch = "wasm32"))
reqwest->serde                                    1.0.216                        1.0.217  1.0.217  Normal       ---
reqwest->serde_json                               1.0.133                        1.0.135  1.0.135  Normal       ---
reqwest->tokio                                    1.42.0                         1.43.0   1.43.0   Normal       cfg(not(target_arch = "wasm32"))
reqwest->wasm-bindgen                             0.2.99                         0.2.100  0.2.100  Normal       cfg(target_arch = "wasm32")
reqwest->wasm-bindgen-futures                     0.4.49                         0.4.50   0.4.50   Normal       cfg(target_arch = "wasm32")
reqwest->web-sys                                  0.3.76                         0.3.77   0.3.77   Normal       cfg(target_arch = "wasm32")
ring->cc                                          1.2.4                          1.2.9    1.2.9    Build        ---
ring->libc                                        0.2.168                        0.2.169  0.2.169  Normal       cfg(all(any(target_os = "android", target_os = "linux"), any(target_arch = "aarch64", target_arch = "arm")))
rkyv->tinyvec                                     1.8.0                          1.8.1    1.8.1    Normal       ---
rkyv->uuid                                        1.11.0                         1.11.1   1.11.1   Normal       ---
rkyv_derive->proc-macro2                          1.0.92                         1.0.93   1.0.93   Normal       ---
rkyv_derive->quote                                1.0.37                         1.0.38   1.0.38   Normal       ---
rust_decimal->borsh                               1.5.3                          1.5.4    1.5.4    Normal       ---
rust_decimal->serde                               1.0.216                        1.0.217  1.0.217  Normal       ---
rust_decimal->serde_json                          1.0.133                        1.0.135  1.0.135  Normal       ---
rustix->bitflags                                  2.6.0                          2.7.0    2.7.0    Normal       ---
rustix->libc                                      0.2.168                        0.2.169  0.2.169  Development  ---
rustix->linux-raw-sys                             0.4.14                         0.4.15   0.4.15   Normal       cfg(all(any(target_os = "android", target_os = "linux"), any(rustix_use_libc, miri, not(all(target_os = "linux", any(target_endian = "little", target_arch = "s390x"), any(target_arch = "arm", all(target_arch = "aarch64", target_pointer_width = "64"), target_arch = "riscv64", all(rustix_use_experimental_asm, target_arch = "powerpc64"), all(rustix_use_experimental_asm, target_arch = "s390x"), all(rustix_use_experimental_asm, target_arch = "mips"), all(rustix_use_experimental_asm, target_arch = "mips32r6"), all(rustix_use_experimental_asm, target_arch = "mips64"), all(rustix_use_experimental_asm, target_arch = "mips64r6"), target_arch = "x86", all(target_arch = "x86_64", target_pointer_width = "64")))))))
schemars->serde                                   1.0.216                        1.0.217  1.0.217  Normal       ---
schemars->serde_json                              1.0.133                        1.0.135  1.0.135  Normal       ---
schemars_derive->proc-macro2                      1.0.92                         1.0.93   1.0.93   Normal       ---
schemars_derive->quote                            1.0.37                         1.0.38   1.0.38   Normal       ---
schemars_derive->syn                              2.0.90                         2.0.96   2.0.96   Normal       ---
scroll_derive->proc-macro2                        1.0.92                         1.0.93   1.0.93   Normal       ---
scroll_derive->quote                              1.0.37                         1.0.38   1.0.38   Normal       ---
scroll_derive->syn                                2.0.90                         2.0.96   2.0.96   Normal       ---
secp256k1-sys->cc                                 1.2.4                          1.2.9    1.2.9    Build        ---
secret-service->serde                             1.0.216                        1.0.217  1.0.217  Normal       ---
security-framework->bitflags                      2.6.0                          2.7.0    2.7.0    Normal       ---
security-framework->libc                          0.2.168                        0.2.169  0.2.169  Normal       ---
security-framework->security-framework-sys        2.12.1                         2.14.0   2.14.0   Normal       ---
security-framework-sys->libc                      0.2.168                        0.2.169  0.2.169  Normal       ---
semver->serde                                     1.0.216                        1.0.217  1.0.217  Normal       ---
serde->serde_derive                               1.0.216                        1.0.217  1.0.217  Normal       ---
serde->serde_derive                               1.0.216                        Removed  Removed  Normal       ---
serde_derive->proc-macro2                         1.0.92                         1.0.93   1.0.93   Normal       ---
serde_derive->proc-macro2                         1.0.92                         Removed  Removed  Normal       ---
serde_derive->quote                               1.0.37                         1.0.38   1.0.38   Normal       ---
serde_derive->quote                               1.0.37                         Removed  Removed  Normal       ---
serde_derive->syn                                 2.0.90                         2.0.96   2.0.96   Normal       ---
serde_derive->syn                                 2.0.90                         Removed  Removed  Normal       ---
serde_derive_internals->proc-macro2               1.0.92                         1.0.93   1.0.93   Normal       ---
serde_derive_internals->quote                     1.0.37                         1.0.38   1.0.38   Normal       ---
serde_derive_internals->syn                       2.0.90                         2.0.96   2.0.96   Normal       ---
serde_json                                        1.0.133                        1.0.135  1.0.135  Normal       ---
serde_json->serde                                 1.0.216                        1.0.217  1.0.217  Normal       ---
serde_repr->proc-macro2                           1.0.92                         1.0.93   1.0.93   Normal       ---
serde_repr->quote                                 1.0.37                         1.0.38   1.0.38   Normal       ---
serde_repr->syn                                   2.0.90                         2.0.96   2.0.96   Normal       ---
serde_spanned->serde                              1.0.216                        1.0.217  1.0.217  Normal       ---
serde_urlencoded->serde                           1.0.216                        1.0.217  1.0.217  Normal       ---
serde_with->indexmap                              1.9.3                          2.7.0    ---      Normal       ---
serde_with->indexmap                              2.7.0                          ---      1.9.3    Normal       ---
serde_with->serde                                 1.0.216                        1.0.217  1.0.217  Normal       ---
serde_with->serde_derive                          1.0.216                        1.0.217  1.0.217  Normal       ---
serde_with->serde_json                            1.0.133                        1.0.135  1.0.135  Normal       ---
serde_with->serde_with_macros                     3.11.0                         3.12.0   3.12.0   Normal       ---
serde_with_macros->proc-macro2                    1.0.92                         1.0.93   1.0.93   Normal       ---
serde_with_macros->quote                          1.0.37                         1.0.38   1.0.38   Normal       ---
serde_with_macros->syn                            2.0.90                         2.0.96   2.0.96   Normal       ---
serde_yaml->serde                                 1.0.216                        1.0.217  1.0.217  Normal       ---
signal-hook->libc                                 0.2.168                        0.2.169  0.2.169  Normal       ---
signal-hook-mio->libc                             0.2.168                        0.2.169  0.2.169  Normal       ---
signal-hook-registry->libc                        0.2.168                        0.2.169  0.2.169  Normal       ---
smart-default->proc-macro2                        1.0.92                         1.0.93   1.0.93   Normal       ---
smart-default->quote                              1.0.37                         1.0.38   1.0.38   Normal       ---
smart-default->syn                                2.0.90                         2.0.96   2.0.96   Normal       ---
socket2->libc                                     0.2.168                        0.2.169  0.2.169  Normal       cfg(unix)
string_cache->serde                               1.0.216                        1.0.217  1.0.217  Normal       ---
strum_macros->proc-macro2                         1.0.92                         1.0.93   1.0.93   Normal       ---
strum_macros->quote                               1.0.37                         1.0.38   1.0.38   Normal       ---
strum_macros->rustversion                         1.0.18                         1.0.19   1.0.19   Normal       ---
strum_macros->syn                                 2.0.90                         2.0.96   2.0.96   Normal       ---
symbolic-debuginfo->serde                         1.0.216                        1.0.217  1.0.217  Normal       ---
symbolic-debuginfo->serde_json                    1.0.133                        1.0.135  1.0.135  Normal       ---
syn->proc-macro2                                  1.0.92                         1.0.93   1.0.93   Normal       ---
syn->proc-macro2                                  1.0.92                         Removed  1.0.93   Normal       ---
syn->proc-macro2                                  1.0.92                         Removed  Removed  Normal       ---
syn->quote                                        1.0.37                         1.0.38   1.0.38   Normal       ---
syn->quote                                        1.0.37                         Removed  1.0.38   Normal       ---
syn->quote                                        1.0.37                         Removed  Removed  Normal       ---
syn->unicode-ident                                1.0.14                         Removed  ---      Normal       ---
syn->unicode-ident                                1.0.14                         Removed  Removed  Normal       ---
synstructure->proc-macro2                         1.0.92                         1.0.93   1.0.93   Normal       ---
synstructure->quote                               1.0.37                         1.0.38   1.0.38   Normal       ---
synstructure->syn                                 2.0.90                         2.0.96   2.0.96   Normal       ---
system-configuration->bitflags                    2.6.0                          2.7.0    2.7.0    Normal       ---
system-configuration-sys->libc                    0.2.168                        0.2.169  0.2.169  Normal       ---
tar->libc                                         0.2.168                        0.2.169  0.2.169  Normal       cfg(unix)
tar->xattr                                        1.3.1                          1.4.0    1.4.0    Normal       cfg(unix)
tempfile->rustix                                  0.38.42                        0.38.43  0.38.43  Normal       cfg(any(unix, target_os = "wasi"))
term->rustversion                                 1.0.18                         1.0.19   1.0.19   Normal       cfg(windows)
thiserror-impl->proc-macro2                       1.0.92                         1.0.93   1.0.93   Normal       ---
thiserror-impl->quote                             1.0.37                         1.0.38   1.0.38   Normal       ---
thiserror-impl->syn                               2.0.90                         2.0.96   2.0.96   Normal       ---
time->serde                                       1.0.216                        1.0.217  1.0.217  Normal       ---
tokio                                             1.42.0                         1.43.0   1.43.0   Normal       ---
tokio->libc                                       0.2.168                        0.2.169  0.2.169  Normal       cfg(unix)
tokio->pin-project-lite                           0.2.15                         0.2.16   0.2.16   Normal       ---
tokio->tokio-macros                               2.4.0                          2.5.0    2.5.0    Normal       ---
tokio-io-timeout->pin-project-lite                0.2.15                         0.2.16   0.2.16   Normal       ---
tokio-io-timeout->tokio                           1.42.0                         1.43.0   1.43.0   Normal       ---
tokio-macros->proc-macro2                         1.0.92                         1.0.93   1.0.93   Normal       ---
tokio-macros->quote                               1.0.37                         1.0.38   1.0.38   Normal       ---
tokio-macros->syn                                 2.0.90                         2.0.96   2.0.96   Normal       ---
tokio-native-tls->tokio                           1.42.0                         1.43.0   1.43.0   Normal       ---
tokio-retry->pin-project                          1.1.7                          1.1.8    1.1.8    Normal       ---
tokio-retry->tokio                                1.42.0                         1.43.0   1.43.0   Normal       ---
tokio-rustls->rustls                              0.23.20                        0.23.21  0.23.21  Normal       ---
tokio-rustls->tokio                               1.42.0                         1.43.0   1.43.0   Normal       ---
tokio-stream->pin-project-lite                    0.2.15                         0.2.16   0.2.16   Normal       ---
tokio-stream->tokio                               1.42.0                         1.43.0   1.43.0   Normal       ---
tokio-util->pin-project-lite                      0.2.15                         0.2.16   0.2.16   Normal       ---
tokio-util->tokio                                 1.42.0                         1.43.0   1.43.0   Normal       ---
toml->serde                                       1.0.216                        1.0.217  1.0.217  Normal       ---
toml_datetime->serde                              1.0.216                        1.0.217  1.0.217  Normal       ---
toml_edit->serde                                  1.0.216                        1.0.217  1.0.217  Normal       ---
toml_edit->winnow                                 0.6.20                         0.6.24   0.6.24   Normal       ---
tonic->async-trait                                0.1.83                         0.1.85   0.1.85   Normal       ---
tonic->hyper                                      0.14.31                        0.14.32  0.14.32  Normal       ---
tonic->pin-project                                1.1.7                          1.1.8    1.1.8    Normal       ---
tonic->tokio                                      1.42.0                         1.43.0   1.43.0   Normal       ---
tower->pin-project                                1.1.7                          1.1.8    1.1.8    Normal       ---
tower->pin-project-lite                           0.2.15                         0.2.16   0.2.16   Normal       ---
tower->tokio                                      1.42.0                         1.43.0   1.43.0   Normal       ---
tracing->pin-project-lite                         0.2.15                         0.2.16   0.2.16   Normal       ---
tracing-attributes->proc-macro2                   1.0.92                         1.0.93   1.0.93   Normal       ---
tracing-attributes->quote                         1.0.37                         1.0.38   1.0.38   Normal       ---
tracing-attributes->syn                           2.0.90                         2.0.96   2.0.96   Normal       ---
tracing-opentelemetry->js-sys                     0.3.76                         0.3.77   0.3.77   Normal       cfg(all(target_arch = "wasm32", not(target_os = "wasi")))
uds_windows->tempfile                             3.14.0                         3.15.0   3.15.0   Normal       cfg(windows)
unicode-normalization->tinyvec                    1.8.0                          1.8.1    1.8.1    Normal       ---
ureq->rustls                                      0.23.20                        0.23.21  0.23.21  Normal       ---
url->serde                                        1.0.216                        1.0.217  1.0.217  Normal       ---
vte_generate_state_changes->proc-macro2           1.0.92                         1.0.93   1.0.93   Normal       ---
vte_generate_state_changes->quote                 1.0.37                         1.0.38   1.0.38   Normal       ---
wasm-bindgen->cfg-if                              1.0.0                          Removed  ---      Normal       ---
wasm-bindgen->cfg-if                              1.0.0                          Removed  Removed  Normal       ---
wasm-bindgen->once_cell                           1.20.2                         Removed  ---      Normal       ---
wasm-bindgen->once_cell                           1.20.2                         Removed  Removed  Normal       ---
wasm-bindgen->wasm-bindgen-macro                  0.2.99                         0.2.100  0.2.100  Normal       ---
wasm-bindgen->wasm-bindgen-macro                  0.2.99                         Removed  0.2.100  Normal       ---
wasm-bindgen->wasm-bindgen-macro                  0.2.99                         Removed  Removed  Normal       ---
wasm-bindgen-backend->bumpalo                     3.16.0                         Removed  ---      Normal       ---
wasm-bindgen-backend->bumpalo                     3.16.0                         Removed  Removed  Normal       ---
wasm-bindgen-backend->log                         0.4.22                         Removed  ---      Normal       ---
wasm-bindgen-backend->log                         0.4.22                         Removed  Removed  Normal       ---
wasm-bindgen-backend->proc-macro2                 1.0.92                         1.0.93   1.0.93   Normal       ---
wasm-bindgen-backend->proc-macro2                 1.0.92                         Removed  1.0.93   Normal       ---
wasm-bindgen-backend->proc-macro2                 1.0.92                         Removed  Removed  Normal       ---
wasm-bindgen-backend->quote                       1.0.37                         1.0.38   1.0.38   Normal       ---
wasm-bindgen-backend->quote                       1.0.37                         Removed  1.0.38   Normal       ---
wasm-bindgen-backend->quote                       1.0.37                         Removed  Removed  Normal       ---
wasm-bindgen-backend->syn                         2.0.90                         2.0.96   2.0.96   Normal       ---
wasm-bindgen-backend->syn                         2.0.90                         Removed  2.0.96   Normal       ---
wasm-bindgen-backend->syn                         2.0.90                         Removed  Removed  Normal       ---
wasm-bindgen-backend->wasm-bindgen-shared         0.2.99                         0.2.100  0.2.100  Normal       ---
wasm-bindgen-backend->wasm-bindgen-shared         0.2.99                         Removed  0.2.100  Normal       ---
wasm-bindgen-backend->wasm-bindgen-shared         0.2.99                         Removed  Removed  Normal       ---
wasm-bindgen-futures->js-sys                      0.3.76                         0.3.77   0.3.77   Normal       ---
wasm-bindgen-futures->wasm-bindgen                0.2.99                         0.2.100  0.2.100  Normal       ---
wasm-bindgen-futures->web-sys                     0.3.76                         0.3.77   0.3.77   Normal       cfg(target_feature = "atomics")
wasm-bindgen-macro->quote                         1.0.37                         1.0.38   1.0.38   Normal       ---
wasm-bindgen-macro->quote                         1.0.37                         Removed  1.0.38   Normal       ---
wasm-bindgen-macro->quote                         1.0.37                         Removed  Removed  Normal       ---
wasm-bindgen-macro->wasm-bindgen-macro-support    0.2.99                         0.2.100  0.2.100  Normal       ---
wasm-bindgen-macro->wasm-bindgen-macro-support    0.2.99                         Removed  0.2.100  Normal       ---
wasm-bindgen-macro->wasm-bindgen-macro-support    0.2.99                         Removed  Removed  Normal       ---
wasm-bindgen-macro-support->proc-macro2           1.0.92                         1.0.93   1.0.93   Normal       ---
wasm-bindgen-macro-support->proc-macro2           1.0.92                         Removed  1.0.93   Normal       ---
wasm-bindgen-macro-support->proc-macro2           1.0.92                         Removed  Removed  Normal       ---
wasm-bindgen-macro-support->quote                 1.0.37                         1.0.38   1.0.38   Normal       ---
wasm-bindgen-macro-support->quote                 1.0.37                         Removed  1.0.38   Normal       ---
wasm-bindgen-macro-support->quote                 1.0.37                         Removed  Removed  Normal       ---
wasm-bindgen-macro-support->syn                   2.0.90                         2.0.96   2.0.96   Normal       ---
wasm-bindgen-macro-support->syn                   2.0.90                         Removed  2.0.96   Normal       ---
wasm-bindgen-macro-support->syn                   2.0.90                         Removed  Removed  Normal       ---
wasm-bindgen-macro-support->wasm-bindgen-backend  0.2.99                         0.2.100  0.2.100  Normal       ---
wasm-bindgen-macro-support->wasm-bindgen-backend  0.2.99                         Removed  0.2.100  Normal       ---
wasm-bindgen-macro-support->wasm-bindgen-backend  0.2.99                         Removed  Removed  Normal       ---
wasm-bindgen-macro-support->wasm-bindgen-shared   0.2.99                         0.2.100  0.2.100  Normal       ---
wasm-bindgen-macro-support->wasm-bindgen-shared   0.2.99                         Removed  0.2.100  Normal       ---
wasm-bindgen-macro-support->wasm-bindgen-shared   0.2.99                         Removed  Removed  Normal       ---
wasmparser->bitflags                              2.6.0                          2.7.0    2.7.0    Normal       ---
wasmparser->serde                                 1.0.216                        1.0.217  1.0.217  Normal       ---
web-sys->js-sys                                   0.3.76                         0.3.77   0.3.77   Normal       ---
web-sys->wasm-bindgen                             0.2.99                         0.2.100  0.2.100  Normal       ---
web-time->js-sys                                  0.3.76                         0.3.77   0.3.77   Normal       cfg(all(target_family = "wasm", target_os = "unknown"))
web-time->wasm-bindgen                            0.2.99                         0.2.100  0.2.100  Normal       cfg(all(target_family = "wasm", target_os = "unknown"))
wee_alloc->libc                                   0.2.168                        0.2.169  0.2.169  Normal       cfg(all(unix, not(target_arch = "wasm32")))
windows-core->windows-targets                     0.52.6                         Removed  Removed  Normal       ---
windows-targets->windows_aarch64_gnullvm          0.52.6                         Removed  Removed  Normal       aarch64-pc-windows-gnullvm
windows-targets->windows_aarch64_msvc             0.52.6                         Removed  Removed  Normal       cfg(all(target_arch = "aarch64", target_env = "msvc", not(windows_raw_dylib)))
windows-targets->windows_i686_gnu                 0.52.6                         Removed  Removed  Normal       cfg(all(target_arch = "x86", target_env = "gnu", not(target_abi = "llvm"), not(windows_raw_dylib)))
windows-targets->windows_i686_gnullvm             0.52.6                         Removed  Removed  Normal       i686-pc-windows-gnullvm
windows-targets->windows_i686_msvc                0.52.6                         Removed  Removed  Normal       cfg(all(target_arch = "x86", target_env = "msvc", not(windows_raw_dylib)))
windows-targets->windows_x86_64_gnu               0.52.6                         Removed  Removed  Normal       cfg(all(target_arch = "x86_64", target_env = "gnu", not(target_abi = "llvm"), not(windows_raw_dylib)))
windows-targets->windows_x86_64_gnullvm           0.52.6                         Removed  Removed  Normal       x86_64-pc-windows-gnullvm
windows-targets->windows_x86_64_msvc              0.52.6                         Removed  Removed  Normal       cfg(all(any(target_arch = "x86_64", target_arch = "arm64ec"), target_env = "msvc", not(windows_raw_dylib)))
xattr->libc                                       0.2.168                        0.2.169  0.2.169  Normal       cfg(any(target_os = "freebsd", target_os = "netbsd"))
xattr->linux-raw-sys                              0.4.14                         0.4.15   0.4.15   Normal       cfg(target_os = "linux")
xattr->rustix                                     0.38.42                        0.38.43  0.38.43  Normal       ---
xdg-home->libc                                    0.2.168                        0.2.169  0.2.169  Normal       cfg(unix)
yoke->serde                                       1.0.216                        1.0.217  1.0.217  Normal       ---
yoke-derive->proc-macro2                          1.0.92                         1.0.93   1.0.93   Normal       ---
yoke-derive->quote                                1.0.37                         1.0.38   1.0.38   Normal       ---
yoke-derive->syn                                  2.0.90                         2.0.96   2.0.96   Normal       ---
zbus->async-trait                                 0.1.83                         0.1.85   0.1.85   Normal       ---
zbus->serde                                       1.0.216                        1.0.217  1.0.217  Normal       ---
zbus_macros->proc-macro2                          1.0.92                         1.0.93   1.0.93   Normal       ---
zbus_macros->quote                                1.0.37                         1.0.38   1.0.38   Normal       ---
zbus_names->serde                                 1.0.216                        1.0.217  1.0.217  Normal       ---
zerocopy-derive->proc-macro2                      1.0.92                         1.0.93   1.0.93   Normal       ---
zerocopy-derive->quote                            1.0.37                         1.0.38   1.0.38   Normal       ---
zerocopy-derive->syn                              2.0.90                         2.0.96   2.0.96   Normal       ---
zerofrom-derive->proc-macro2                      1.0.92                         1.0.93   1.0.93   Normal       ---
zerofrom-derive->quote                            1.0.37                         1.0.38   1.0.38   Normal       ---
zerofrom-derive->syn                              2.0.90                         2.0.96   2.0.96   Normal       ---
zerovec-derive->proc-macro2                       1.0.92                         1.0.93   1.0.93   Normal       ---
zerovec-derive->quote                             1.0.37                         1.0.38   1.0.38   Normal       ---
zerovec-derive->syn                               2.0.90                         2.0.96   2.0.96   Normal       ---
zstd-safe->libc                                   0.2.168                        0.2.169  0.2.169  Normal       ---
zstd-sys->cc                                      1.2.4                          1.2.9    1.2.9    Build        ---
zvariant->libc                                    0.2.168                        0.2.169  0.2.169  Normal       ---
zvariant->serde                                   1.0.216                        1.0.217  1.0.217  Normal       ---
zvariant_derive->proc-macro2                      1.0.92                         1.0.93   1.0.93   Normal       ---
zvariant_derive->quote                            1.0.37                         1.0.38   1.0.38   Normal       ---
zvariant_utils->proc-macro2                       1.0.92                         1.0.93   1.0.93   Normal       ---
zvariant_utils->quote                             1.0.37                         1.0.38   1.0.38   Normal       ---

CheckToml / toml: /home/runner/work/polyglot/polyglot/apps/plot/Cargo.toml
Name                                              Project  Compat   Latest   Kind    Platform
----                                              -------  ------   ------   ----    --------
android_system_properties->libc                   0.2.168  0.2.169  0.2.169  Normal  ---
cc->libc                                          0.2.168  0.2.169  0.2.169  Normal  cfg(unix)
chrono->js-sys                                    0.3.76   0.3.77   0.3.77   Normal  cfg(all(target_arch = "wasm32", not(any(target_os = "emscripten", target_os = "wasi"))))
chrono->serde                                     1.0.216  1.0.217  1.0.217  Normal  ---
chrono->wasm-bindgen                              0.2.99   0.2.100  0.2.100  Normal  cfg(all(target_arch = "wasm32", not(any(target_os = "emscripten", target_os = "wasi"))))
cpufeatures->libc                                 0.2.168  0.2.169  0.2.169  Normal  aarch64-linux-android
fable_library_rust->uuid                          1.11.0   1.11.1   1.11.1   Normal  ---
futures-macro->proc-macro2                        1.0.92   1.0.93   1.0.93   Normal  ---
futures-macro->quote                              1.0.37   1.0.38   1.0.38   Normal  ---
futures-macro->syn                                2.0.90   2.0.96   2.0.96   Normal  ---
futures-util->pin-project-lite                    0.2.15   0.2.16   0.2.16   Normal  ---
getrandom->js-sys                                 0.3.76   0.3.77   0.3.77   Normal  cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown"))
getrandom->libc                                   0.2.168  0.2.169  0.2.169  Normal  cfg(unix)
getrandom->wasm-bindgen                           0.2.99   0.2.100  0.2.100  Normal  cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown"))
iana-time-zone->js-sys                            0.3.76   0.3.77   0.3.77   Normal  cfg(all(target_arch = "wasm32", target_os = "unknown"))
iana-time-zone->wasm-bindgen                      0.2.99   0.2.100  0.2.100  Normal  cfg(all(target_arch = "wasm32", target_os = "unknown"))
iana-time-zone-haiku->cc                          1.2.4    1.2.9    1.2.9    Build   ---
jobserver->libc                                   0.2.168  0.2.169  0.2.169  Normal  cfg(unix)
js-sys->wasm-bindgen                              0.2.99   0.2.100  0.2.100  Normal  ---
num_cpus->libc                                    0.2.168  0.2.169  0.2.169  Normal  cfg(not(windows))
plotters->wasm-bindgen                            0.2.99   0.2.100  0.2.100  Normal  cfg(all(target_arch = "wasm32", not(target_os = "wasi")))
plotters->web-sys                                 0.3.76   0.3.77   0.3.77   Normal  cfg(all(target_arch = "wasm32", not(target_os = "wasi")))
quote->proc-macro2                                1.0.92   1.0.93   1.0.93   Normal  ---
serde->serde_derive                               1.0.216  1.0.217  1.0.217  Normal  ---
serde_derive->proc-macro2                         1.0.92   1.0.93   1.0.93   Normal  ---
serde_derive->quote                               1.0.37   1.0.38   1.0.38   Normal  ---
serde_derive->syn                                 2.0.90   2.0.96   2.0.96   Normal  ---
serde_json                                        1.0.133  1.0.135  1.0.135  Normal  ---
serde_json->serde                                 1.0.216  1.0.217  1.0.217  Normal  ---
syn->proc-macro2                                  1.0.92   1.0.93   1.0.93   Normal  ---
syn->quote                                        1.0.37   1.0.38   1.0.38   Normal  ---
wasm-bindgen->wasm-bindgen-macro                  0.2.99   0.2.100  0.2.100  Normal  ---
wasm-bindgen-backend->proc-macro2                 1.0.92   1.0.93   1.0.93   Normal  ---
wasm-bindgen-backend->quote                       1.0.37   1.0.38   1.0.38   Normal  ---
wasm-bindgen-backend->syn                         2.0.90   2.0.96   2.0.96   Normal  ---
wasm-bindgen-backend->wasm-bindgen-shared         0.2.99   0.2.100  0.2.100  Normal  ---
wasm-bindgen-macro->quote                         1.0.37   1.0.38   1.0.38   Normal  ---
wasm-bindgen-macro->wasm-bindgen-macro-support    0.2.99   0.2.100  0.2.100  Normal  ---
wasm-bindgen-macro-support->proc-macro2           1.0.92   1.0.93   1.0.93   Normal  ---
wasm-bindgen-macro-support->quote                 1.0.37   1.0.38   1.0.38   Normal  ---
wasm-bindgen-macro-support->syn                   2.0.90   2.0.96   2.0.96   Normal  ---
wasm-bindgen-macro-support->wasm-bindgen-backend  0.2.99   0.2.100  0.2.100  Normal  ---
wasm-bindgen-macro-support->wasm-bindgen-shared   0.2.99   0.2.100  0.2.100  Normal  ---
web-sys->js-sys                                   0.3.76   0.3.77   0.3.77   Normal  ---
web-sys->wasm-bindgen                             0.2.99   0.2.100  0.2.100  Normal  ---

CheckJson / json: /home/runner/work/polyglot/polyglot
$ npm-check-updates --target greatest
Using bun
Checking /home/runner/work/polyglot/polyglot/package.json


 @types/node           ~20.12  →    ~22.10
 npm-check-updates  ~17.0.0-5  →  ~17.1.13

Run ncu --target greatest -u to upgrade package.json

CheckJson / json: /home/runner/work/polyglot/polyglot/apps/ipfs
$ npm-check-updates --target greatest
Using bun
Checking /home/runner/work/polyglot/polyglot/apps/ipfs/package.json


 @types/node           ~20.12  →    ~22.10
 nft.storage             ~7.1  →      ~7.2
 npm-check-updates  ~17.0.0-5  →  ~17.1.13

Run ncu --target greatest -u to upgrade package.json

CheckJson / json: /home/runner/work/polyglot/polyglot/apps/spiral/temp/extension
$ npm-check-updates --target greatest
Using bun
Checking /home/runner/work/polyglot/polyglot/apps/spiral/temp/extension/package.json


 @playwright/test      1.44.0  →  1.50.0-beta-1731498714000
 @types/chrome       ~0.0.268  →                   ~0.0.293
 npm-check-updates  ~17.0.0-5  →                   ~17.1.13

Run ncu --target greatest -u to upgrade package.json

CheckJson / json: /home/runner/work/polyglot/polyglot/apps/spiral/vscode
$ npm-check-updates --target greatest
Using bun
Checking /home/runner/work/polyglot/polyglot/apps/spiral/vscode/package.json


 @types/node           ~20.12  →    ~22.10
 @types/vscode          ~1.89  →     ~1.96
 @vscode/vsce           ~2.26  →    ~3.2-5
 npm-check-updates  ~17.0.0-5  →  ~17.1.13

Run ncu --target greatest -u to upgrade package.json

CheckJson / json: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/VS Code Plugin
$ npm-check-updates --target greatest
Checking /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/VS Code Plugin/package.json


 @microsoft/signalr    ^8.0.0  →    ^8.0.7
 @types/vscode          ~1.95  →     ~1.96
 npm-check-updates   ~17.1.11  →  ~17.1.13

Run ncu --target greatest -u to upgrade package.json